MySQL数据库
数据库管理系统
数据库管理系统是一种大型软件。
常见的关系型数据库管理系统:
- Oracle
- DB2
- SQL Server:现在用得少了
- SQL Lite:用于手机端
- MySQL:目前不要下载最新的8.0,下载5.7版本的。
下载地址:https://downloads.mysql.com/archives/installer/
MySQL数据库安装步骤略,环境配置很简单:
- 新建系统变量
%MYSQL_HOME%
,值为MySQL Server 5.7所在路径,默认为C:Program FilesMySQLMySQL Server 5.7 - 修改系统变量path,增加一个值为
%MYSQL_HOME%in
MySQL数据类型
数值类型
数据类型 | 字节数 | |
---|---|---|
INT | 4 | |
DOUBLE | 8 | |
DOUBLE(M,D) | 8。M表示长度,D表示小数位数 | |
DECIMAL |
日期类型
DATE
TIME
YEAR
DATETIME
TIMESTAP:时间范围短,不要用这个。
字符串类型
CHAR:用于定长字符串,如性别。
VARCHAR:用于变长字符串。
BLOB:二进制。
TEXT:长文本数据。
数据表的操作:
更改数据表的结构
ALTER TABLE 表名 操作......
操作
包括:ADD,MODIFY,DROP,CHANGE,RENAME
修改记录的内容
- UPDATE
UPDATE 表名 SET 列1=新值1, 列2=新值2 WHERE 条件
注意:UPDATE语句常常需要配合WHERE条件一起使用,某则UPDATE将对整张表更新!
- DELETE
删除符合条件的记录。
DELETE FROM 表名 WHERE 条件
- TRUNCATE
清空整张表。
TRUNCATE 表名
Q:
TRUNCATE 表
与DELETE FROM 表
有何区别?A:
TRUNCATE
是销毁表然后按照原表结构重新建一张表,原表的行不受影响;
而SELETE FROM 表
是逐行删除表的每一行,每行都受到影响。
实体完整性约束
- 主键约束 PRIMARY KEY:表中的某列值不可重复。
- 唯一约束 UNIQUE:表中的某列值不可重复,但可以为NULL。
- 自动增长列 AUTO_INCREMENT:自动增长,只能配合主键使用,使得INT类型的主键从1开始每次加1。
域完整性约束
对列的单元格的正确性做约束
- 非空
NOT NULL
- 默认值约束
DEFAULT
:插入记录时指定某字段为DEFAULT
时,其值会设为创建该列时用DEFAULT
指定的默认值。
引用完整性约束
CONSTRAINT 引用名 FOREIGN KEY(列名) REFERENCES 被引用表(列名)
注意:
创建表时,先创建主表,后创建从表;
删除表时,先删除从表,再删除主表。
事务
事务是一个原子操作,由一条或多条SQL语句组成。这些SQL语句必须全部执行成功,事务才算成功;如果其中某条SQL语句执行失败,则整个事务失败。
事务的特性(ACID)
- 原子性:一个事务内的所有操作是个整体。
- 一致性:操作失败时,数据库要回滚到操作之前的状态。
- 隔离性:在执行完毕之前,数据的改变是外部看不到的。
- 持久性:持久性事务完成之后,它对系统的影响是永久性的。
事务的操作
-
开启事务:
START TRANSACTION
-
提交修改:
COMMIT
-
回滚:
ROLLBACK
开启事务后执行的SQL语句都属于事务,全部执行成功后执行COMMIT
进行提交,否则用ROLLBACK
进行回滚。
用户管理
创建用户
CREATE USER 用户名 IDENTIFIED BY 密码
授权
GRANT ALL ON 数据库.表 TO '用户名'
数据库.*
是指数据库里的所有表。
撤销权限
REVOKE ALL ON 数据库.表 FROM '用户名'
注意:撤销权限后,被撤销权限的人要在下次登录后才生效。
删除用户
DROP USER 用户名
视图
视图用来临时保存查询结果。视图不单独存储数据,原表内容发生改变时视图内容也会发生改变。
优点:简单性;安全性
缺点:
创建视图
CREATE VIEW 视图名 AS 查询语句
修改视图
-
若明确知道视图名存在,则可以这样修改:
ALTER VIEW 视图名 AS 查询语句
-
若不确定某视图名是否存在,可以这样修改:
CREATE OR REPLACE 视图名 AS 查询语句
删除视图
DROP VIEW 视图名
删除视图不会影响原表。
关于视图的注意事项:
- 视图不独立存储数据。原表改变内容,则视图跟着变化;
- 视图没有优化任何查询性能;
- 如果视图有以下结构,则视图不能修改:
- 聚合函数的结果;
GROUP BY
分组后的结果;HAVING
过滤后的结果;DISTINCT
去重后的结果;UNION
、UNION ALL
联合的结果。
参考资料
https://www.bilibili.com/video/BV1BZ4y1H7LZ?from=search&seid=277125244471690868
B站记录视频学习进度:
5 | 6 | ||||
---|---|---|---|---|---|
7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | |