DDL
- DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
1.CREATE 2.DROP 3.ALTER
--数据库的创建
CREATE DATABASE [IF NOT EXISTS] `数据库名称` [DEFAULT CHARACTER SET 字符集 COLLATE 排序规则字符集];
例如:
CREATE DATABASE IF NOT EXISTS mydb2 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
--删除数据库
DROP DATABASE [IF EXISTS] `数据库名称`;
--修改数据库
ALTER DATABASE `数据库名称` CHARACTER SET utf8
*数据表定义
-数据完整性约束
非空约束: NOT NULL
主键约束: PRIMARY KEY
自增列: AUTO_INCREMENT (默认1,增量1)
默认约束: DEFAULT
检查约束: CHECK
唯一约束: UNIQUE KEY
外键约束: FOREIGN KEY
-创建表
CREATE TABLE [IF NOT EXISTS] `表名`(
字段名 数据类型 约束 ,
字段名 数据类型 约束 ,
字段名 数据类型 约束 ,
...
字段名 数据类型 约束
);
-删除表
DROP TABLE [IF EXISTS] `表名`;
- 不能删除外键约束
TURNCATE `表名`;
DDL的一些基本操作
-查看表列表
SHOW TABLES;
-查看表的创建
SHOW CREATE TABLE `表名`;
-查看表结构
DESC `表名`
-删除表
DROP TABLE `表名`
-添加列
ALTER TABLE `表名` ADD 列表 数据类型 约束
-修改列的类型
ALTER TABLE `表名` MODIFY 列明 新的数据类型
-修改列的列明+数据类型+约束
ALTER TABLE `表名` CHANGE 原列明 新列明 数据类型 约束;
-删除列
ALTER TABLE `表名` DROP `列明`
-表重命名
ALTER TABLE `表名` RENAME TO `新表名`
-删除主键
ALTER TABLE `表名` DROP PRIMARY KEY;
-添加主键
ALTER TABLE `表名` ADD CONSTRAINT 主键名称
PRIMARY KEY 表名(`字段名称`)
-删除外键
ALTER TABLE `表名` DROP FOREIGN KEY 外键名称;
-添加外键
ALTER TABLE `表名` ADD CONSTRAINT 外键名称
FOREIGN KEY `表名(`字段名称`) REFERENCES `表名(`字段名称`)
-删除唯一约束
ALTER TABLE `表名` DROP INDEX `约束字段`;
-添加唯一约束
ALTER TABLE `表名` ADD CONSTRAINT 唯一约束名称
UNIQUE KEY `表名`(`字段名称`) ;
-删除默认约束
ALTER TABLE `表名` ALTER 字段名称 DROP DEFAULT;
-添加默认约束
ALTER TABLE `表名` ALTER 字段名称 SET DEFAULT 默认值;
DML
- DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
1.UPDATE 2.DELETE 3.INSERT
-数据插入
INSERT [INTO] `表名` (字段列表) VALUES (值列表)
-数据修改
UPDATE `表名` SET 字段名 = 值,字段名 = 值......
[WHERE 条件语句]
-数据删除
DELETE FROM `表名`
[WHERE 条件语句]
DCL
- DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
用来管理数据库用户、控制数据库的访问权限
1.GRANT 2.INVOKE
-创建用户
-删除用户
DROP USER 用户名;
-权限授予
GRANT 权限1, … , 权限n ON 数据库.* TO 用户名;
-权限撤销
REVOKE权限1, … , 权限n ON 数据库.* FORM 用户名;
-密码修改
UPDATE USER SET authentication_string=PASSWORD('密码') WHERE User='用户名' and Host='IP';
FLUSH PRIVILEGES;
DQL
- DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
-SELECT
完整语法:
SELECT 字段列表(*) FROM `表名`
[WHERE 条件语句]
[GROUP BY 分组字段]
[HAVING 分组条件]
[ORDER BY 排序字段]
[DESC | ASC]
[LIMINT 偏移量,每页数量]
WHERE 和 HAVING区别?
WHERE条件是筛选分组的之前的数据,后不能使用聚合函数
HAVING条件是筛选分组后的数据,支持使用聚合函数
聚合函数:
1>.COUNT() 统计函数
2>.SUM() 求和函数
3>.MAX() 求最大值函数
4>.MIN() 求最小值函数
5>.AVG() 求平均值函数
-多表查询
-1.子查询
-2.复合查询
-3.内连接
INNER JOIN .... ON....
-4.外连接
[LEFT|RIGHT] JOIN...ON...
注意:内连接和外连接的区别
内连接只要有一张表的所有数据是NULL,则查结果不显示。
外连接如果有一张表的所有数据是NULL,则取决主从表的关系。