数据库设计笔记——MySQL基础知识(四)

概述

  • 关系型数据库——由表来存储相关的数据,MySQL,SQL Server,Oracle等都是关系型数据库;
  • 元数据:用于集成并管理数据。
  • MySQL数据库

    • 用户数据库:用户根据需求创建数据库
    • 系统数据库
      • information_schema:主要存储系统中的一些数据库对象信息,如用户信息、列信息、权限信息、字符集信息和分区信息等
      • performance_schema:存储数据可以服务器性能参数
      • mysql:系统的用户权限信息
        • test
  • MySQl的数据对象

      • 栏位:该表的列(也叫属性或者字段)的名字和数据类型
      • 索引:根据指定的数据库表列建立起来的顺序,提供快速访问的路径且可以监督表的数据。
    • 视图
    • 存储过程(手动调用,无返回值)
    • 函数(手动调用,必须有返回值)
    • 触发器(自动调用)
    • 事件
  • 数据库的命名规则

    • 由字母、数字、下划线、@、#、$符号组成,首字母不能是数字和$符号,标识符不允许是MySQL的保留字,不允许有空格和特殊字符,长度小于128位。
  • MySQL版本

    • MySQL Community Server(社区版):完全免费,官方不提供技术支持
    • MySQL Enterprise Server(企业版服务器):他能够以很高性价比为企业提供数据仓库应用,支持ACID事务处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能。但是该版本付费,官方提供电话支持。
  • MySQL的优势

    • 速度:运行速度快。
    • 价格:MySQL对大多数个人来说是免费的。
    • 容易使用:与其他大型数据库的设置和管理相比,其复杂程度较低,易于学习。
    • 可移植性:能够工作在众多不同的系统平台,例如:Windows、Linux、Unix、Mac OS。
    • 丰富的接口:提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等语言的API。
    • 支持查询语言:MySQL可以利用标准SQL语法和支持ODBC的应用接口。
    • 安全性和连接性:十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。并且由于MySQL是网络化的,因此可以在因特网上的任何地方访问,提供数据共享的效率。

存储引擎

  • 存储引擎决定数据库对象表的类型,即如何如何存储、索引数据、是否支持事务,也决定了表在计算机中的存储方式。
  • 数据类型,决定数据库对象表可以存储数据的类型。
  • 存储引擎类别(9)
    • InnoDB(默认)

      支持事务,支持具有提交、回滚、崩溃恢复能力的事务安装,比MyISAM占磁盘空间大。

    • MyISAM

      不支持事务,也不支持外检,访问速度较快

    • MEMORY

      使用内存来存储数据,访问速度快,但安全上无保障

    • FEDERATED
    • MRG_MYISAM:
    • BLACKHOLE
    • CSV
    • ARCHIVE
    • PEFORMANCE_SCHEMA
  • 相关命令

    • 查看DBNS版本

      1
      SELECT version();
    • 查询默认存储引擎

      1
      SHOW VARIABLE LIKE 'storage _engine%';
  • 修改默认存储引擎通过修改my.ini文件中的"default_storage-engine"参数

数据类型(每个字节8为)

  • 数值
    • 整型
      • TINYINT(1字节)
      • SMALLINT(2字节)
      • MEDIUMINT(3字节)
      • INT/INTEGER(4字节)
      • BIGINT(8字节)
    • 浮点型
      • FLOAT(4字节)
      • DOUBLE(8字节)
    • 定点型:DEC/DECIMAL(M/D)

      其中M是小数点左右数字之和,D是右边数字个数,M<=38

  • 字符串型

    • CHAR(0~255字节) :固定字长
    • VARCHAR(0~65535字节):可变长度
  • 日期时间类型

    • YEAR:年份,1字节
    • TIME:时分秒,3个字节
    • TIMESTAMP:经常插入或者更新日期为当前系统时间,4字节
    • DATATIME:年月日时分秒,8字节
    • DATE:年月日,4字节

查看表结构

  • 表的操作

    1
    2
    DESCRIBE table_name  //查看定义
    SHOW CREATE TABLE table_name; //查看表详细定义
  • 操作表的约束

    • 通过表的约束来完成对表中所存储的数据是否合法、是否具有完整性,进行检查。
  • 约束

    • 单列约束:每个约束只约束一列数据。
    • 多列约束:每个约束约束多列数据。
  • 完整性约束

    • NOT NULL :非空
    • DEFLAULT :设置字段的默认值
    • UNIQUE KEY:设置字段的值是唯一
    • PRIMARY KEY(PK):约束字段为表的主键,只作为表的唯一标识
    • AUTO_INCREMENT :约束字段自动增加
    • FOREIGN KEY(FK):约束字段为表的外键
  • 注意

    • 多字段主键:主键有多个字段组合而成。
    • 字段自动增加(AUTO_INCREMENT):MySQL唯一扩展的完整性约束,当为数据库表中插入新记录时,字段上的值会自动生成唯一的ID。一个数据表中只能有一个字段使用该约束,且字段数据类型一定是整型,由于其唯一的ID,该字段经常会设置为PK主键。
    • 置外键约束(FK):外键约束保证多个表(通常两个)之间参照完整性,即构建两个字段之间的参照关系。设置外键的两个表之间具有父子关系,即子表中某个字段的取值范围由父表所决定。如全年级的成绩表,以学号作为总表的主键,而班级作为另一个表的主键,则班级为总表的外键,也就是总表的子表。

索引的操作

  • :包含数据库的所有数据的数据库对象,数据库对象表是存储和操作数据的逻辑结构
  • 索引:一种有效组合数据的方式。通过索引对象,可以快速查询到数据库对象表中的特殊记录,是一种提高性能的常用方式,一个索引会包含表中安排一定顺序排序的一列或多列字段。
  • 根据索引的存储类型,可分为:
    • B型树索引(BTREE)<- InnoDB支持
    • 哈希索引(HASH)<- MEMORY支持
  • 索引作用

    • 提高查找数据的速度
    • 实现数据库对象表的完整性
  • MySQL支持6种索引

    • 普通索引: 在创建索引时,不附加任何限制条件(如唯一、非空等),可创立在任何数据类型的字段上。
    • 唯一索引:在创建索引时,限制索引的值必须是唯一的,可更快查询某记录。
    • 全文索引
      • 主要是关联在数据类型为CHAR、VARCHAR、TEXT的字段上,以便能够更加快速地查询数据量较大的字符串类型字段。
      • 全文索引只能在存储引擎为MYISAM的数据表上创建。
    • 单列索引
    • 多列索引
    • 空间索引
  • 适用于创建索引的情况

    • 经常查询的字段,即在where子句中出现的字段。
    • 在分组的字段,即group By子句中出现的字段。
    • 存在依赖关系的子表和父表之间的联合查询,即关键/外键字段。
    • 设置唯一完整性约束的字段。
  • 不适用于创建索引的情况

    • 在查询中很少被使用的字段
    • 拥有许多重复值的字段

注意,过多的创建索引则会占据许多磁盘空间。

视图的操作

  • 视图:通过视图的操作不仅可以实现查询的简化,而且可以提高安全性。所谓的视图,本质上是一种虚拟表,其内容与真实表相似包含一系列带有名称的列和行数据,但是视图并不在数据库中以存储的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成
  • 视图的特点

    • 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。
    • 视图时由基本表(实表)产生的虚表。
    • 视图的建立和删除不影响基本表。
    • 对视图内容的更新(添加、删除和修改)直接影响基本表。(相当于对基本表操作的工具)
    • 当视图来自多个基本表时,不允许添加和删除数据。
  • 创建视图语法

    1
    CREATE VIWE 'database_name'.'VIWE_name' AS (SELECT * FROM ...);

    database_name为当前的数据库名称,VIWE_name为新建视图名称,“*”处填写要查询的列,用“,”隔开,“…”处写表名称。

  • 由于视图的功能实际上是封装查询语句,分为以下几类

    • (1)封装实现查询常量语句的视图,即所谓的常量视图

      1
      CREATE VIWE view_test1(新建视图的名称) AS SELECT 3.1415926;

      可将上面的语句输入到MySQL5.7 command line client 中。

    • (2)封装使用聚合函数(SUM、MIN、MAX、COUNT等),查询语句的视图。

      1
      CREATE VIWE view_test2 AS SELECT COUNT(col_name) FROM table_name;
    • (3)封装了实现排列功能(ORDER BY)查询语句的视图

      1
      CREATE VIWE view_test3 AS SELECT col_name FROM table_name ORDER BY id DESC;   //排列方式
    • (4)封装了实现表内连接查询语句的视图

      1
      CREATE VIWE view_test4 AS SELECT col_name FROM table_name as s.t_group as g WHERE s.group_id=g.id AND g.id=2;
    • (5)封装了实现表外连接(LEFT JOIN和RIGHT JION)查询语句的视图

      1
      CREATE VIWE view_test5 AS SELECT col_name FROM table_name as s LEFT/RIGHT/ALL JION t_group as ON s.group=g.id WHERE g.id=2;
    • (6)封装实现子查询相关查询语句的视图

      1
      CREATE VIWE view_test6 AS SELECT col_name FROM table_name AS s WHERE s.group_id=g,id IN (SELECT id FROM t_group);
    • (7)封装了实现记录联合(UNION和UNION ALL)查询语句的视图

      1
      CREATE VIWE view_test7 AS SELECT id,name FROM table_name UNION ALL SELECT id,name FROM t_group;
  • 查看视图

    1
    2
    USE database_name;
    SHOW TABLES;
  • 查看视图详细信息

    1
    2
    SHOW TABLE STATUS [FROM db_name]|[LIKE 'pattern']
    SHOW TABLE STATUS FROM db_name \G
  • 查看视图定义信息

    1
    SHOW CREATE VIWE view_name;
  • 查看视图设计信息

    1
    DESCRIBE/DESC view_name;
  • 通过系统表查看视图信息

    1
    2
    USE infoemation_schema;
    SELECT * FROM views WHERE table_name='view_selectproduct' \G

    SQLyog软件中直接“工具”—>“信息”

触发器的操作

  • 触发器用来实现由一些表事件触发的某种操作,是与数据库对象表关联最紧密的数据库对象之一。在DBS中,当执事件间时,则会激活触发器,从而执行其包含的操作。触发器类似于编程语言中的函数。总的来说就是表发生更改时,自动进行一些处理

  • MySQL的触发器语句(事件引导):

    • DELETE语句:删除
    • INSERT语句:添加
    • UPDATE语句:修改

      其他SQL语句不会激发触发器,会经常使用触发器数据库对象,是由于该对象能够加强数据库表中数据的完整性约束和业务规则等。

  • 创建触发器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DELIMITER $  //固有格式,当有多个触发器语句时使用
    CREATE TRIGGER t_afterinsert_on_doorlog AFTER INSERT
    ON t_doorlog FOR EACH ROW
    BEGIN
    DECLARE jobno VARCHAR(30);
    DECLARE time1 VARCHAR(20);
    SET jobno = (SELECT job_num FROM tb_park_user_base WHERE card_num = new.cardNo);
    SET time1 = DATE_FORMAT(new.operateTime,'%Y%m%d%H%i%s');
    INSERT INTO t_attendance (job_no, operateTime)
    VALUES
    (jobno,time1);
    END$

创建触发器

  • DELIMITER $ 意思是告诉mysql下文执行语句以“$”结束,如果没有这句,下面语句会出错,mysql无法判断哪句结束。
  • CREATE TRIGGER t_afterinsert_on_doorlog AFTER INSERT ON t_doorlog FOR EACH ROW 创建触发器的语法 其中AFTER同级关键字有BEFORE,而 INSERT同级关键字还有DELETEUPDATE
  • BEGINEND之间的是触发器执行语句。DECLARE jobno VARCHAR(30) 意思是声明触发器SQL中的局部变量,SET jobno=….  意思是给局部变量赋值,=右边可为查询语句或函数方法

单表数据记录查询

  • 四则运算:+(加)、-(减)、*(乘)、/(DIV除)、%(取余)。->字段间运算

    1
    SELECT ename(字段) sal*12 FROM table_name;  //查询年薪
  • 对运算结果/某字段修改字段名,使显示更直观

    1
    2
    SELECT ename(字段),sal*12 yearsalary FROM table_name;
    SELECT ename(字段),sal*12 AS yearsalary FROM table_name;
  • 设置数据显示格式,以便用户浏览所查询到的数据. 在MySQL软件中提供函数CONCAT()来连接字符串,从而实现设置显示数据的格式,语句如下:

    1
    SELECT CONCAT|ename ,'雇员的年薪为:', sal*12) yearsalary FROM table_name;

结果:SMITH雇员的年薪为:9600.00

多表数据记录查询

  • 多表数据记录查询

    • 内连接查询:笛卡尔积内连接表后查询

    • 外连接查询:笛卡尔积外连接表后查询

    • 子查询

      进行连接查询中,首先要对两张或两张以上表进行连接操作。多表数据记录查询是关系数据操作中专门用于数据库操作的关系运算。有并、笛卡尔积、连接(UNION)

  • 查询语法

多表数据记录查询

多表数据记录查询

多表数据记录查询

多表数据记录查询

实现特殊功能比较运算符

  • 正则表达式匹配

    • ^:匹配字符串开始部分,如REGEXP '^c'

    • $:匹配字符串结束部分,如REGEXP 'g$'

    • .:匹配字符集合任意一个字符,如REGEXP '^c···g$'

    • [字符集合]:匹配字符集合任意一个字符,如REGEXP '[abc]'

    • [^字符集合]:匹配字符集合任意一个字符,如REGEXP '^[abc]'

    • str1|str2|str3:匹配str1、str2、str3中任意一个字符

    • *:匹配字符,包括0个或1个,如REGEXP 'a*g'

    • +:匹配字符,包括1个,如REGEXP 'a+g'

    • 字符串{N}:字符串出现N次

    • 字符串{M,N}:字符串出现至少M次,至多N次

  • 位运算符

    • &:按位与

    • |:按位或

    • ~:按位取反

    • ^:按位异或

    • <<:按位左移

    • >>:按位右移

    • 例子:

      1
      2
      SELECT 5&6, BIN (5&6) 二进制;
      SELECT 4&5&6, BIN (4&5&6) 二进制;
结果:

按位运算符计算结果

MySQL常用函数

MySQL常用函数1

MySQL常用函数2

MySQL常用函数3

MySQL常用函数4

MySQL常用函数5

存储过程和函数的操作

MySQL事务

MySQL安全性机制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哪些钱借了可以不还?

借钱竟然可以不还&#xff1f;这个估计很多人都不知道&#xff0c;但是在实际民间借贷中&#xff0c;确实是有一些借贷关系是不受法律保护的&#xff0c;那哪些债务还是不受法律保护的呢&#xff1f;&#xff08;一&#xff09;借款用于非法用途案例&#xff1a;任某在生意场上…

模块说明(四)

模块说明&#xff08;四&#xff09; 比较模块 判断一个矩阵是否为一个奇异矩阵&#xff0c;看其行列式是否为0 位设置与清零模块 位运算模块 按位运算 位提取、位移运算模块 检测模块 表查询库 表查询模块

PID控制器_Matlab/Simulink仿真

PID控制器_Matlab/Simulink仿真 Kp:比例增益;Kpe:当前误差 KI:积分增益;KI∫edt:过去误差,累计 KD:微分增益;KD*de/dt:变换趋势 PD控制是增加了一个零点 例子: simulink操作

银行停贷、涨息、排队,8月不贷只能等明年

这几天做贷款的朋友圈被这种消息刷屏了没&#xff1f;据深圳商报报道&#xff0c;目前深圳一些大银行已经出现了贷款资金余额不足的情况&#xff0c;甚至有的银行已经停止信用贷款的发放&#xff1b;业内人士认为&#xff0c;信贷额度紧张局面估计持续到年底。除了深圳&#xf…

如何快速把借呗额度提高到10万?

借呗是一个很好的贷款工具&#xff0c;快&#xff0c;简&#xff0c;省等优点深得广大网友的喜爱。但是借呗虽然好用&#xff0c;却受限于额度&#xff0c;很多人的额度都是在3万以内&#xff0c;能超过10万的毕竟是少数人&#xff0c;看到别人几十万的额度&#xff0c;你是不是…

Simulink模糊控制入门

Simulink模糊控制入门 第一步:在命令窗口输入 fuzzy 在命令窗口输入 :doc Implement Fuzzy PID Controller in Simulink Using Lookup Table可以找到模糊控制说明的文档 另一种设置隶属函数的方式(建议):先删除所有的FMs在添加7个就行

监管升级,央行变相加息,贷款难还在继续

近段看到很多有贷款需求的朋友已经排队很久了&#xff0c;但是贷款还是没有着落&#xff0c;而还在观望的朋友&#xff0c;对不起&#xff0c;可能贷款没你的份了&#xff0c;因为监管正在升级&#xff0c;说白了就是央行变相加息&#xff0c;让贷款更难。银行同业存单纳入MPA考…

集成运放笔记

集成运放笔记 1 电压传输特性 开环 u0A0d(Up-Un) 线性区 阻容耦合无法集成 电流源电路 比例电流源 微电源 以电流源为有源负载的放大电路 共射放大电路 放大电路中的反馈 基本概念和判断 反馈&#xff1a;输出量影响输入量 正反馈&#xff1a;增强了净输入量 负反馈&a…

音频特征域方法

特征域方法摘自&#xff1a;严勤 吕勇著《语音信号处理与识别》 特征域方法可分为鲁棒特征提取 和 特征补偿两个子类。 鲁棒特征提取&#xff1a;致力于寻找更加稳健的声学特征&#xff0c;这些特征受语音变异性的影响较小&#xff0c;因此测试集和训练集的声学特征可以保持较高…

linu的安装

linu的安装 基本说明 学习Linux需要一个环境&#xff0c;我们需要创建一个虚拟机&#xff0c;然后在虚拟机上安装一个Centos系统来学习。 1.先安装virtual machine 15.5 再安装Linux(CentOS 7.6/centOS8.1) 3.原理示意图 vmware15.5下载 VM安装的步骤 使用迅雷下载 …

MATLAB工具常用函数

简介MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。使用 MATLAB&#xff0c;可以较使用传统的编程语言&#xff08;如 C、C 和 Fortran&#xff09;更快地解决技术计算问题。 应用范围&#xff1a;包括信号和图像处理、通讯、控…

虚拟机快照

虚拟机快照 虚拟机的删除和迁移 虚拟机的克隆

这些人,建议你不要去贷款了

贷款是好事&#xff0c;但是贷款还不上就不是好事了&#xff0c;在实际的贷款中&#xff0c;有很多人贷款都是没有目的性&#xff0c;纯粹是为了获取贷款而贷款&#xff0c;如果你是下面这些人&#xff0c;建议不要去贷款了。第一种人&#xff0c;贷款投机的人所谓投机就是为了…

特征选择方法

概述特征选择在模式识别领域中扮演着一个极其重要的角色。 一方面&#xff0c;在样本有限的情况下&#xff0c;用大量特征来设计分类器无论是从计算开销还是从分类器性能来看都不合时宜&#xff1b; 另一方面&#xff0c;特征和分类器性能之间并不存在线性关系&#xff0c;当特…

安装vmtools

安装vmtools Ubuntu 16.04 下安装VMware Tools(三行命令搞定&#xff0c;亲测好使)&#xff1a; 第一行命令&#xff1a;sudo apt-get upgrate 第二行命令&#xff1a;sudo apt-get install open-vm-tools-desktop -y 第三行命令&#xff1a;sudo rebootcd /opt/ 表示进入到op…

空间谱专题02:波束形成(Beamforming)

作者&#xff1a;桂。 时间&#xff1a;2017-08-22 10:56:45 链接&#xff1a;http://www.cnblogs.com/xingshansi/p/7410846.html 前言 本文主要记录常见的波束形成问题&#xff0c;可以说空间谱估计是波束形成基础上发展而来&#xff0c;在系统论述空间谱之前&#xff0c;有…

常见的矩阵形式

作者&#xff1a;桂。 时间&#xff1a;2017-08-22 12:30:33 链接&#xff1a;http://www.cnblogs.com/xingshansi/p/7411043.html 前言 记录经常用到的矩阵形式。 A-正交矩阵 定义&#xff1a;一实的正方矩阵Q∈Rnxn&#xff0c;称为正交矩阵&#xff0c;若&#xff1a; B-酉…

空间谱专题03:时空特性与采样定理

作者&#xff1a;桂。 时间&#xff1a;2017-08-27 08:07:30 链接&#xff1a;http://www.cnblogs.com/xingshansi/p/7439558.html 一、一阶无模糊特性 可结合时域、空域对偶性一文来理解。 在DOA ambiguity vs. array configuration for subspace-based DF method 一文&…

远程登录到Linux服务器

远程登录到Linux服务器 要求能够Ping通 第一步&#xff1a; 两边就可以互换文件了&#xff01;

采样定理

作者&#xff1a;桂。 时间&#xff1a;2017-08-28 19:09:42 链接&#xff1a;http://www.cnblogs.com/xingshansi/p/7445454.html 原文链接&#xff1a;http://pan.baidu.com/s/1nvFopuD 一、Nyquist采样定理 对于一个频带限制在&#xff08;0&#xff0c;fh&#xff09;的连…