名称 | 简称 |
---|---|
数据库 | DataBase(DB) |
数据库管理系统 | DataBase Management System(DBMS) |
结构查询语言 | SQL |
数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言
DDL-数据库操
1、查询 1.1、查询所有的数据库 SHOW DATABASES; 1.2、查询当前数据库 SELECT DATABASES(); 2、创建 CREATE DATABASE [IF NOT EXISTS]数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则]; 3、删除 DROP DATABASE[IF EXISTS]数据库名; 4、使用 USE 数据库名;
DDL-表操作-查询
1、查询当前数据库所有表 SHOW TABLES; 2、查询表结构 DESC 表名; 3、查询指定表的建表语句 SHOW CREATE TABLE 表名;
DDL-表操作-创建
CREATE TABLE 表名( 字段1 字段1类型[COMMENT 字段1注释], 字段2 字段2类型[COMMENT 字段2注释], 字段3 字段3类型[COMMENT 字段3注释], ......, 字段n 字段n类型[COMMENT 字段n注释], )[COMMENT 表注释];
MySQL数据类型
DDL-表操作-修改
1、添加字段 ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释][约束]; 案例:为emp表添加一个新的字段“昵称” 为 nickname,类型为varchar(20) ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称'; 2、修改数据类型 ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度); 案例:将emp表的nickname 类型修改为 varchar(10) ALTER TABLE emp MODIFY nickname varchar(10); 3、修改字段名和字段类型 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释][约束]; 案例:将emp表的nickname字段修改为username,类型为varchar(30) ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称'; 4、删除字段 ALTER 表名 DROP 字段名; 案例:将emp表的字段username删除 ALTER emp DROP username; 5、修改表名 ALTER TABLE 表名 RENAME TO 新表名; 案例:将emp表的表名修改为employee ALTER TABLE emp RENAME TO employee;
DDL-表操作-删除
1、删除表 DROP TABLE [IF EXISTS] 表名; 2、删除指定表,并重新创建该表 TRUNCATE TABLE 表名;
DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增删改操作。
DML-添加数据
1、给指定字段添加数据 INSERT INTO 表名(字段名1,字段名2,....)VALUES(值1,值2,....); 2、给全部字段赋值 INSERT INTO 表名(值1,值2,....); 3、批量添加多头数据 INSERT INTO 表名(字段名1,字段名2,...)VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...); INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...); 注意: 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。 字符串和日期型数据应该包含在引号中。 插入的数据大小,应该在字段的规定范围内。
DML-修改数据
UPDATE 表名 SET 字段1 = 值1,字段2 = 值2,...[WHERE 条件]; 注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
DML-删除数据
DELETE FROM 表名 [WHERE 条件];
DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
DQL-语法
SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数
DQL-基本查询
1、查询多个字段 SELECT 字段1,字段2,字段3,... FROM 表名; SELECT * FROM 表名; 2、设置别名 SELECT 字段1[as 别名1],字段2[as 别名2],... FROM 表名; 3、去除重复记录 SELECT DISTINCT 字段列表 FROM 表名;
DQL-条件查询
1、语法 SELECT 字段列表 FROM 表名 WHERE 条件列表;
2、条件
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN....AND.... | 在某个范围之内(含最小值、最大值) |
IN(....) | 在IN之后的列表中的值,多选一 |
LIKE 占位符 | 模糊查询(_匹配单个字符,%匹配任意个字符) |
IS NULL | 是NULL |
逻辑运算符 | 功能 |
---|---|
AND 或 && | 并且(多个条件同时成立) |
OR 或 || | 或者(多个条件任意一个成立) |
NOT 或 ! | 非,不是 |
DQL-聚合函数
1、语法 SELECT 聚合函数(字段列表) FROM 表名; 注意:null值不参与聚合函数运算。
DQL-分组查询
1、语法 SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段 [HAVING 分组后过滤条件]; 2、where 和 having 区别 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。 判断条件不同:where不能对聚合函数进行判断,而having可以。 注意: 执行顺序:where > 聚合函数 > having 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
DQL-排序查询
1、语法 SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2; 2、排序方式 ASC:升序(默认值) DESC:降序 注意:如果是多个字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
DQL-分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数; 注意: (1)起始索引从0开始,起始索引=(查询页码-1) * 每页显示记录数; (2)分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是 LIMIT; (3)如果查询的是第一页数据,起始索引可以省略,直接简写为 LIMIT 10 。
DQL-执行顺序
FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 SELECT 字段列表 ORDER BY 排序字段列表 LIMIT 分页参数
DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。
DCL-管理用户
1、查询用户 USE mysql; SELECT * FROM user; 2、创建用户 CREATE USER '用户名'@ '主机名' IDENTIFIED '密码'; 3、修改用户密码 ALTER USER '用户名'@ '主机名' IDENTIFIED WITH mysql_native_password BY '新密码'; 4、删除用户 DROP USER '用户名'@ '主机名'
DCL-权限控制
MySQL中定义了很多种权限,但是常用的就以下几种:
权限 | 说明 |
---|---|
ALL,ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/视图 |
CREATE | 创建数据库/表 |
1、查询权限 SHOW GRANTS FOR '用户名'@ '主机名'; 2、授予权限 GRANTS 权限列表 ON 数据库名.表名 TO '用户名'@ '主机名'; 3、撤销权限 REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@ '主机名';