SQL语句不区分大小写,分号结尾,SQL语句中可以插入任意换行和空格,可以调整SQL语句以美观。[]中是可选的参数
一.DDL(数据定义语言)
1.数据库级别操作
查询所有数据库
SHOW DATABASES;
创建新数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
若加上可选项if,若存在则不创建,若不存在则创建,如果不加if,且数据库已存在,则报错。
删除数据库
DROP DATABASE [IF EXISTS] 数据库名;
if操作作用同上
使用数据库,在某数据库下操作(进入某数据库的空间)
USE 数据库名;
2.表级别操作
表创建
CREATE TABLE 表名{
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
字段4 字段4类型[COMMENT 字段4注释],
.....
}[COMMENT 表注释];
删除表
DROP TABLE [IF EXISTS] 表名;
删除指定表,并重新创建该表
TRUNCATE TABLE 表名
这个命令可以删除表中的全部内容重新创建一个空表,保留了原表的字段
添加表字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释][约束];
修改表字段的数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 [COMMENT 注释][约束];
删除字段
ALTER TABLE 表名 DROP 字段名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
二.DQL(数据查询语言)
1.数据库级别查询
查询当前数据库所有表
SHOW TABLES;
查询表结构
DESC 表名;
查看建表语句
SHOW CREATE TABLE 表名;
能查看建表时的语句,能看到注释的信息
2.表级别查询
条件语句
字段查询
SELECT [DISTINCT(去重)] 字段列表
FROM 表名列表
WHERE 条件列表
GROUP BY 分组字段列表
HAVING 分组后条件列表
ORDER BY 排序字段列表
LIMIT 分页参数
使用聚合函数select
SELECT 聚合函数(字段列表) FROM 表名;
解释一下参数:
WHERE 是筛选过滤字段的条件,也是最先进行过滤的参数语句
GROUP BY 是按照某个字段对查询的内容进行分组,比如性别有男有女,GROUP BY会将查询按照男女分开,所以一般会跟聚合函数联合使用,比如SUM(),AVG()等
HAVING 是GROUP BY之后进行筛选的条件,比如HAVING COUNT(*) >= 10,就筛选了分组后查询超过10条的组。
ORDER BY 字段1 排序方式1,字段2 排序方式2,…;
排序方式: ASC升序, DESC降序,首先按照第一字段排序,接着是第二字段…
LIMIT 起始索引, 查询记录数,起始索引从0开始,每页显示一定的记录数
select * from employee limit 0, 5;
比如,上面的SQL语句即为从第1条记录查询,也就是第一页第一条,共查询5条记录,如果表中每一页记录10条数据,查询从第二页第一条数据开始并查询5条记录,则limit的参数应该为10,5,省略第一个参数的情况下默认从第一条记录开始(索引0)。
3. DQL语句的执行顺序
SELECT [DISTINCT(去重)] 字段列表 (5)
FROM 表名列表 (1)
WHERE 条件列表 (2)
GROUP BY 分组字段列表 (3)
HAVING 分组后条件列表 (4)
ORDER BY 排序字段列表 (6)
LIMIT 分页参数 (7)
即先找表,接着按照WHERE的过滤条件筛选记录,然后将筛选的记录进行分组过滤,
然后将选择的字段取出,排序,最后按照limit取出要取的记录。可以通过给SELECT的字段和FROM 的表起别名,验证执行顺序,WHERE阶段无法使用SELECT中起的别名,因为WHERE在SELECT之前执行,而WHERE可以使用表的别名,因为FROM在WHERE之前
三.DML(数据操作语言,对数据库中的表的记录进行增删改操作)
添加数据(插入数据与指定的字段顺序一一对应,字符串和日期型数据应包含在引号中,插入的数据大小应该在字段的规定范围内)
给指定字段添加数据
INSERT INTO 表名(字段名1, 字段名2,...) VALUES(值1, 值2, ...);
给全部字段添加数据
INSERT INTO 表名 VALUES(值1, 值2, ...);
批量添加数据
INSERT INTO 表名(字段1, 字段2, ...) VALUES(值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);
INSERT INTO 表名 VALUES(值1, 值2, ...), VALUES(值1, 值2, ...), VALUES(值1, 值2, ...);
修改数据
UPDATE 表名 SET 字段名1 = 值1, 字段明2 = 值2, ...[WHERE 条件];
删除数据
DELETE FROM 表名 [WHERE 条件]
删除语句的条件可以有,也可以没有,没有则会删除整张表的所有数据
删除语句不能删除某个字段的值(UPDATE的功能)
四.DCL(数据库控制语言)
DCL用来管理数据库用户,控制数据库的访问权限。
1.用户管理
查询用户
用户的信息都记录在mysql数据库的user表下
USE mysql;
SELECT * FROM user;
创建用户
CREATE USER '用户名'@'主机名' INDENTIFIED BY '密码';
主机名能够是访问数据库的主机,%是任意主机
修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
删除用户
DROP USER '用户名'@'主机名';
2.权限控制
权限列表如下
查询权限
SHOW GRANTS FOR '用户名'@'主机名';
授予权限
GRANTS 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';