目录
1、数据库基本概念
2、DDL操作数据库和数据表
4、DQL表数据查询
4.1DQL 表数据查询——查询语法
4.2DQL 表数据查询——查询全部
4.3DQL 表数据查询——条件查询
4.4DQL 表数据查询——聚合函数查询
4.5DQL 表数据查询——排序查询
4.6DQL 表数据查询——分组查询
4.7DQL 表数据查询——分页查询
5、约束
5.1主键约束
5.2主键自增约束
5.3唯一约束
5.4非空约束
5.5外键约束
5.6外键的级联更新和级联删除
1、数据库基本概念
SQL结构化查询语言分类
DDL(Data Definition Language) :数据定义语言。用来操作数据库,表,列等。 DML(Data Manipulation Language) :数据操作语言。用来对数据库中表的数据进行增删改。 DQL(Data Query Language) :数据查询语言。用来查询数据库中表的记录(数据)。 DCL(Data Control Language) :数据控制语言。用来定义数据库的访问权限和安全级别,及创建用户。
2、DDL操作数据库和数据表
DDL操作数据库主要措施:CRUD C(Create):创建 R(Retrieve):查询 U(Update):修改 D(Delete):删除
--DDL查询数据库
--查询所有数据库
SHOW DATABASES;
--查询数据库的创建语句
SHOW CREATE DATABASES 数据库名称;
--DDL 创建数据库
CREATE DATABASE 数据库名称;--创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名称;--创建数据库(判断,如果不存在则创建)
CREATE DATABASE 数据库名称CHARACTER SET 字符集名称;--创建数据库(指定字符集)
--DDL 修改、删除、使用数据库
ALTER DATABASE 数据库名称CHARACTER SET 字符集名称;--修改数据库(修改字符集)
DROP DATABASE 数据库名称;--删除数据库
DROP DATABASE IF EXISTS 数据库名称;--删除数据库(判断,如果存在则删除)
USE 数据库名称;--使用数据库
SELECT DATABASE();--查看当前使用的数据库
--DDL 查询数据表
SHOW TABLES;--查询所有的数据表
DESC 表名;--查询表结构
SHOW TABLE STATUS FROM 库名LIKE '表名';--查询表字符集
--DDL 创建数据表
--创建数据表
CREATE TABLE 表名(
列名数据类型约束,
列名数据类型约束,
...
列名数据类型约束
);
/*
数据类型
int:整数类型
double:小数类型
date:日期类型。包含年月日,格式yyyy-MM-dd
datetime:日期类型。包含年月日时分秒,格式yyyy-MM-ddHH:mm:ss
timestamp:时间戳类型。包含年月日时分秒,格式yyyy-MM-ddHH:mm:ss如果不给该列赋值、或赋值为null,则默认使用当前系统时间自动赋值
varchar(长度):字符串类型
*/
CREATE TABLE 表名LIKE 被复制的表名;--复制数据表
--DDL 修改数据表
ALTER TABLE 表名RENAME TO 新表名;--修改表名
ALTER TABLE 表名CHARACTER SET 字符集名称;--修改表的字符集
ALTER TABLE 表名ADD 列名数据类型;--单独添加一列
ALTER TABLE 表名MODIFY 列名新数据类型;--修改某列的数据类型
ALTER TABLE 表名CHANGE 列名新列名新数据类型;--修改列名和数据类型
ALTER TABLE 表名DROP 列名;--删除某一列
--DDL 删除数据表
DROP TABLE 表名;--删除数据表
DROP TABLE IF EXISTS 表名;--删除数据表(判断,如果存在则删除)
3、DML表数据增删改查
--DML 新增表数据
INSERT INTO 表名(列名1,列名2,…) VALUES (值1,值2,…);--给指定列添加数据
INSERT INTO 表名VALUES (值1,值2,…);--给全部列添加数据
--批量添加数据
INSERT INTO 表名(列名1,列名2,…) VALUES (值1,值2,…), (值1,值2,…),…;
INSERT INTO 表名VALUES (值1,值2,…), (值1,值2,…),…;
--列名和值的数量以及数据类型要对应,除了数字类型,其他数据类型的数据都需要加引号(单引双引都行,推荐单引)。
--DML 修改表数据
UPDATE 表名SET 列名1=值1,列名2=值2,… [WHERE 条件];--修改表中的数据
--修改语句中必须加条件,如果不加条件,则会将所有数据都修改。
--DML 删除表数据
删除表中的数据
DELETE FROM 表名[WHERE 条件];
--删除语句中必须加条件,如果不加条件,则会将所有数据都删除。
4、DQL表数据查询
4.1DQL 表数据查询——查询语法
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段
HAVING
分组后的过滤条件
ORDER BY
排序
LIMIT
分页
4.2DQL 表数据查询——查询全部
SELECT * FROM 表名;--查询全部的表数据
SELECT 列名1,列名2,… FROM 表名;--查询指定字段的表数据
SELECT DISTINCT 列名1,列名2,… FROM 表名;--去除重复查询
SELECT 列名1 运算符(+ -* /) 列名2 FROM 表名;--计算列的值(四则运算)
SELECT 列名AS 别名FROM 表名;--起别名查询
4.3DQL 表数据查询——条件查询
SELECT 列名列表FROM 表名WHERE 条件;
4.4DQL 表数据查询——聚合函数查询
SELECT 函数名(列名)FROM 表名[WHERE 条件];
将一列数据作为一个整体,进行纵向的计算。
4.5DQL 表数据查询——排序查询
SELECT 列名列表FROM 表名[WHERE 条件] ORDER BY 列名排序方式,列名排序方式,…;
排序方式:ASC-升序,DESC-降序 如果有多个排序条件,只有当前边的条件值一样时,才会判断第二条件。
4.6DQL 表数据查询——分组查询
SELECT 列名列表FROM 表名[WHERE 条件] GROUP BY 分组列名
[HAVING 分组后的条件过滤]
[ORDER BY 排序列名排序方式];
4.7DQL 表数据查询——分页查询
SELECT 列名列表FROM 表名
[WHERE 条件]
[GROUP BY 分组列名]
[HAVING 分组后的条件过滤]
[ORDER BY 排序列名排序方式]
LIMIT 当前页数,每页显示的条数;
当前页数:(当前页数-1) * 每页显示的条数
5、约束
约束 | 作用 |
---|---|
PRIMARY KEY | 主键约束 |
PRIMARY KEY AUTO_INCREMENT | 主键自增 |
UNIQUE | 唯一约束 |
NOT NULL | 非空约束 |
FOREIGN KEY | 外键约束 |
FOREIGN KEYON UPDATE CASCADE | 外键级联更新 |
FOREIGN KEYON DELETE CASCADE | 外键级联删除 |
5.1主键约束
主键非空,唯一
--建表时添加主键约束
CREATE TABLE 表名(
列名数据类型PRIMARY KEY,
...
列名数据类型约束
);
ALTER TABLE 表名DROP PRIMARY KEY;--删除主键约束
ALTER TABLE 表名MODIFY 列名数据类型PRIMARY KEY;--建表后单独添加主键约束
5.2主键自增约束
--建表时添加主键自增约束
CREATE TABLE 表名(
列名数据类型PRIMARY KEY AUTO_INCREMENT,
...
列名数据类型约束
);
ALTER TABLE 表名MODIFY 列名数据类型;--删除主键自增约束
ALTER TABLE 表名MODIFY 列名数据类型AUTO_INCREMENT;--建表后单独添加主键自增约束
MySQL 中的自增约束,必须配合键的约束一起使用!
5.3唯一约束
--建表时添加唯一约束
CREATE TABLE 表名(
列名数据类型UNIQUE,
...
列名数据类型约束
);
ALTER TABLE 表名DROP INDEX 列名;--删除唯一约束
ALTER TABLE 表名MODIFY 列名数据类型UNIQUE;--建表后单独添加唯一约束
5.4非空约束
--建表时添加非空约束
CREATE TABLE 表名(
列名数据类型NOT NULL,
...
列名数据类型约束
);
ALTER TABLE 表名MODIFY 列名数据类型;--删除非空约束
ALTER TABLE 表名MODIFY 列名数据类型NOT NULL;--建表后单独添加非空约束
5.5外键约束
--建表时添加外键约束
CREATE TABLE 表名(
列名数据类型约束,
...
CONSTRAINT 外键名FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名)
);
ALTER TABLE 表名DROP FOREIGN KEY 外键名;--删除外键约束
--建表后单独添加外键约束
ALTER TABLE 表名ADD CONSTRAINT 外键名FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名);
5.6外键的级联更新和级联删除
对主表的数据进行更新删除时,从表相关数据也要更新删除
--添加级联更新
ALTER TABLE 表名ADD CONSTRAINT 外键名FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON UPDATE CASCADE;
--添加级联删除
ALTER TABLE 表名ADD CONSTRAINT 外键名FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON DELETE CASCADE;
--同时添加级联更新和级联删除
ALTER TABLE 表名ADD CONSTRAINT 外键名FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON UPDATE CASCADE ON DELETE CASCADE;