MySQL数据库
数据库管理系统
数据库管理系统是一种大型软件。
常见的关系型数据库管理系统:
Oracle
DB2
SQL Server:现在用得少了
SQL Lite:用于手机端
MySQL:目前不要下载最新的8.0,下载5.7版本的。
MySQL数据库安装步骤略,环境配置很简单:
新建系统变量%MYSQL_HOME%,值为MySQL Server 5.7所在路径,默认为C:\Program Files\MySQL\MySQL Server 5.7
修改系统变量path,增加一个值为%MYSQL_HOME%\bin
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 联合的结果。
参考资料
B站记录视频学习进度:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37