写在开头

真的真的不想复习了😅总结一下语句直接上战场~😅

常用关键字

  • CREATE(创建)
  • SHOW(查看数据库里的表,或者说广义范围查看)
  • SELECT(查看数据)
  • DESC(查看表信息)
  • DROP(删除)
  • DELETE(删除数据)
  • TRUNCATE(清空数据)
  • ALTER(修改)
  • UPOATE(修改数据)
  • INSERT(插入)
  • WHERE(条件)
  • HAVING(范围条件)

第一章

下载安装配置MySQL

MySQL下载地址 -> https://dev.mysql.com/downloads/installer/

第二章

关键字:

  • CREATE (创建数据库,数据表)
  • SHOW (查看)
  • USE (选择数据库)
  • DROP (删除数据库,数据表)
  • DESC (查看表信息)
  • ALTER TABLE (修改表)
  • INSERT INTO (插入数据)
  • SELECT (查询数据)
  • UPDATE (修改数据)
  • DELETE (删除数据)

语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE DATABASE + 数据库名;
/*(创建数据库)*/

SHOW DATABASE;
/*(查看数据库数据库系统中的数据库)*/

SHOW CREATE DATABASE + 数据库名;
/*(查看数据库创建信息)*/

USE + 数据库名;
/*(选择数据库)*/

DROP + 数据库名;
/*(删除数据库)*/

DROP DATABASE IF EXISTS + 数据库名;
/*(如果存在数据库,则删除)*/

CREATE TABLE IF NOT EXISTS + 表名;
/*(字段名+字段类型+COMMENT+字段属性‘字段中文解释’)*/

  • (创表)实例:
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE IF NOT  EXISTS  S (
    sid INT UNSIGNED COMMENT '学号'PRIMARY KEY,
    sname VARCHAR(10) NOT NULL COMMENT'姓名',
    sex ENUM('男','女') NOT NULL DEFAULT '男' COMMENT'性别',
    birthday DATE NOT NULL COMMENT'出生日期',
    department SET('计算机系','网络工程系','大数据系') DEFAULT '网络工程系' NOT NULL COMMENT '系别',
    phoneno VARCHAR(11) COMMENT '手机号'
    );

语句:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
SHOW TABLES;
/*(查看数据库中的表)*/

SHOW TABLE STATUS FROM 数据库名 LIKE '%相关表信息%';
/*(查看表相关信息)*/

ALTER TABLE 旧表名 TO 新表名;
/*(修改表名)*/

ALTER TABLE 表名 表选项 = 值;
/*(修改表选项)*/

DESC 表名(字段名);
/*(查看表字段信息)*/

SHOW CREATE TABLE 表名;
/*(查看表创建语句)*/

ALTER TABLE 数据库表名 CHANGE 旧字段名 新字段名 字段类型(字段属性);
/*(修改字段名)*/

ALTER TABLE 表名 MODIFY 字段名 新类型(字段属性);
/*(修改字段类型)*/

ALTER TABLE 表名 MODIFY 字段名 数据类型(字段属性) 【FIRST或者AFTER】字段名;
/*(修改字段位置)*/

ALTER TABLE 表名 ADD 新增字段名 数据类型 【FIRST或者AFTER】字段名;
/*(增加新的字段名,可指定位置增加)*/

ALTER TABLE 表名 DROP 字段名;
/*(删除某一字段名)*/

DROP TABLE IF EXISTS 表名;
/*(删表)*/

INSERT INTO 表名 VALUES(值1,值2,值3….. )(如果数据有空值,可以在对应位置加NULL或者另起一行INSERT INTO 表名+字段名 VALUES(值1,值2…..)) ;
/*(为表添加数据)*/

SELECT * FROM 表名;
/*(查看表数据)*/

SELECT (字段名1,字段名2…….) FROM 表名;
/*(查看指定字段数据)*/

SELECT(字段名1,字段名2…) FROM 表名 WHERE 字段名 = 值;
/*(按一定条件查询字段数据)*/

UPDATE 表名 SET 字段名1=WHERE 字段名 = 值;
/*(修改数据)*/

DELETE FROM 表名 WHERE 字段名 = 值;
/*(删除指定数据)*/

第三章(数据类型和约束)

约束类型关键词:

  • DEFAULT (默认值) (设置默认值) 默认约束
  • NOT NULL (为该项添加数据时不允许为空) 非空约束
  • UNIQUE (建立唯一性,为该项添加数据时无法重复) 唯一约束
  • PRIMARY KEY (非空约束和唯一约束集合,且每个表只有一个主键约束) 主键约束
  • AUTO_INCREMENT (针对主键,插入数据时若该项无数据则自动加1)(了解即可) 自动增长
  • CHECK (可给字段插入的数据设置范围) 检查约束
  • FOREIGN KEY (建立外键,用于关联两个表) 外键约束

语句:

1
2
3
4
5
6
7
8
9
10
CREATE TABLE 表名(字段名 数据类型 约束类型(默认约束或非空约束或唯一约束或主键约束) COMNENT'字段属性';
/*(创表时添加默认或非空约束)*/

ALTER TABLE 表名 MODIFY 字段名 数据类型 约束类型;
/*(默认约束或非空约束)*/

ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK;
/*(字段数据范围)*/

/*CHECK约束在表里添加就是在创表语句最后面加上CONSTRAINT 约束名 CHECK(范围)即可*/

第五章(单表操作)

单表操作关键词:

  • DISTINCT (查询时去除重复记录)
  • ORDER BY (字段名 (ASC | DESC) (ASC升序,DESC降序) (排序))
  • LIMIT 记录数 (限量)
  • GROUP BY (分组)(防止查询几组数据后数据发生混乱)
  • HAVING (统计筛选)

聚合函数:

  • COUNT (统计数量)
  • SUM (求和)
  • AVG (求平均值)
  • MAX (求最大值)
  • MIN (求最小值)

语句:

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
CREATE TABLE 表名 LIKE 旧表名; 
/*(复制一个一模一样的表格)*/

INSERT INTO 表名 SELECT * FROM 被复制数据的表名;
/*(复制已有的表数据)*/

REPLACE INTO 表名(字段名)VALUES | VALUE(插入的数据);
/*(解决主键冲突,即复制表数据时可能有些表的主键数据不一定存在,而该表有主键约束,则会产生报错)*/

TPUNCATE TABLE 表名 ;
/*(清除整个表的数据)*/

SELECT DISTINCT 字段名 FROM 表名
/*(查询时去除重复记录)*/

SELECT 字段名 FROM 表名 ORDER BY(ASC | DESC);
/*(单字段排序查询)*/

SELECT 字段名 FROM 表名 ORDER BY 字段名1(ASC | DESC) , 字段名2(ASC | DESC)… ;
/*(多字段排序查询)*/

SELECT 字段名 FROM 表名 …… LIMIT 记录数;
/*(限量查询,即只查询一定数量的数据记录)*/

SELECT 字段名,聚合函数 FROM 表名 GROUP BY 字段名;
/*(分组查询)*/

SELECT 字段名 FROM 表名……GROUP BY ……HAVING ;
/*(筛选统计,即按条件查出数据后,再根据HAVING范围显示数据)*/

SELECT … 聚合函数 FROM 表名 ……;
/*(聚合函数使用方法)*/

第六章(多表操作)

  • 多表操作与单表操作区别就是,多表操作把几个表联合在一起再对其进行查询,其他与单表操作无异。

语句:

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
38
39
40
41
SELECT 字段名 FROM1 JOIN2 ON 连接条件……;
/*(多表连接)*/

SELECT 字段名 FROM1 JOIN2 ON 连接条件……;
/*(两表连接)*/

SELECT 字段名 FROM1 JOIN2 ON 连接条件 JOIN3 ON 连接条件 ……;
/*(三表连接)*/

SELECT 字段名 FROM1 JOIN LEFT(RIGHT) JOIN2 ON 连接条件 ;
/*(左外连接或者右外连接,左外连接以左边的表1为基准,右外连接以右边的表2为基准)*/

CREATE TABLE 表名(……………CONSTRAINT 外键名称 FOREIGN KEY(所需添加外键的字段名) REFERENCES 需参照的主表的字段名 ON DELETE 外键约束 ON UPDATE 外键约束);
/*(创表的时候添加外键约束)*/

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(所需添加外键的字段名) REFERENCES 需参照的主表的字段名 ON DELETE 外键约束 ON UPDATE 外键约束;
/*(在已经创有表的情况下在表外添加约束)*/

ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
/*(删除外键约束)子查询就是在条件查询已经查出的基础下,再在该基础上进行二次查询,最终结果只能是在该基础范围里查出*/

SELECT 字段名称 FROM 表名 WHERE 字段名(子查询) = (SELECT语句);
/*(标量子查询)(子查询结果是一列一行)*/

SELECT 字段名称 FROM 表名 WHERE 字段名(子查询) IN (SELECT DISTINCT 字段名 FROM 表名);
/*(列子查询)(子查询结果为一列多行)*/

SELECT 字段名称 FROM 表名 WHERE (字段名,子查询) 运算符 (SELECT语句);
/*(行子查询)(子查询结果为一行多列)*/

SELECT 字段名称 FROM (SELECT语句);
/*(表子查询)(子查询结果可以为一行一列,一列多行,一行多列或多行多列)*/

SELECT 字段名称 FROM 表名 WHERE EXISTS(子查询语句);
/*(带EXISTS关键字的子查询) (用于判断子查询语句是否有返回的结果,若存在则返回1,否则返回0)*/

SELECT 字段名称 FROM 表名 WHERE 字段名 比较运算符 ANY(子查询语句);
/*(带ANY关键字的子查询)(表示给定判断条件,只要符合ANY子查询结果中任意一个,则返回1,否则返回0)*/

SELECT 字段名称 FROM 表名 WHERE 表达式 比较运算符 ALL(子查询语句);
/*(带ALL关键字的子查询)(表示给定的判断条件全部符合ALL子查询结果才能返回1,否则返回0)*/

第七章(用户与权限)

用户语句:

1
2
3
4
5
6
7
8
CREATE UESR '用户名';
/*(创建一个最简单的用户)*/

CREATE USER '用户名' @ 'localhost' IDENTIFIED BY '密码';
/*(创建一个带有密码的用户)*/

CREATE USER '用户名' @ 'localhost' IDENTIFIED BY '密码' 用户密码管理选项;
/*(创建一个密码期限的用户)*/

用户密码管理选项

  • PASSWORD EXPIRE (将密码标记为过期)
  • PASSWORD EXPIRE DEFAULT; (根据系统变量的指定设置密码的有效性)
  • PASSWORD EXPIRE NEVER; (密码永不过期)
  • PASSWORD EXPIRE INTERVAL n DAY; (将密码设置为n天后过期)

权限语句:

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
CREATE USER '用户名' @ 'localhost' IDENTIFIED BY '密码'  ACCOUNT LOCK;
/*(将创建的用户设定为锁定状态)*/

ALTER USER '用户名' @ 'localhost' ACCOUNT UNLOCK;
/*(将用户解锁)*/

ALTER USER '用户名' @ 'localhost' IDENTIFIED BY '新密码';
/*(修改用户密码)*/

RENAME USER '旧用户名' @ 'localhost' TO '新用户名' @ 'localhost';
/*(修改用户名,修改用户名**不能**用ALTER)*/

DROP USER 用户名;
/*(删除用户)*/

GRANT 所需要授予的权限 ON 授权的级别(数据库 * 或者表) TO 用户名;
/*(若是数据库级别授权则在用户名后面加上@'localhost' , 若是表级别授权则加上@'%')(为用户授予权限)*/

SELECT * FROM mysql.db;
/*(查看数据库级别权限授予情况)*/

REVOKE 所需回收的权限 ON 授权的级别(数据库 * 或者表) FROM 用户名;
/*(若是数据库级别授权则在用户名后面加上@'localhost' , 若是表级别授权则加上@'%')(回收用户权限)*/

FLUSH PRIVILEGES;
/*(刷新权限)*/

SELECT * FROM mysql.user;
/*(查看用户级别的授权情况)*/

第八章(视图)

  • 视图可以理解为给已经有的表再定义一个虚表,视图SQL语句构造方法就是在创建视图的语句后面加上SELECT语句即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE OR REPLACE VIEW 视图名 AS 对应所需要求的SELECT语句;
/*(创建视图,可更新视图)*/

CREATE VIEW 视图名 AS 对应所需要求的SELECT语句 WITH(LOCAL) CHECK OPTION;
/*(创建一个视图,若无LOCAL,则进行级联检查,即满足原本对应表的要求也要满足视图的要求,若有LOCAL,则只需满足视图的要求即可)*/

DESC VIEW 视图名;
/*(查看视图字段信息)*/

/*视图的删除和添加数据与表的SQL语句一致,只不过把TABLE换成了VIEW而已*/

ALTER 用户权限 VIEW 视图名 所需要有修改信息的SELECT语句;
/*(修改视图的信息)*/

写在最后

睡觉力😴