八股文–MySql基础
文章目录
1.数据类型
分类 | 数据类型 | 大小 | 描述 |
---|---|---|---|
数值类型 | TINYINT | 1 byte | 小整数值 |
SMALLINT | 2 bytes | 大整数值 | |
MEDIUMINT | 3 bytes | 大整数值 | |
INT或INTEGER | 4 bytes | 大整数值 | |
BIGINT | 8 bytes | 极大整数值 | |
FLOAT | 4 bytes | 单精度浮点数值 | |
DOUBLE | 8 bytes | 双精度浮点数值 | |
DECIMAL | 小数值 | ||
日期和时间类型 | DATE | 3 | 日期值 |
TIME | 3 | 时间值或持续时间 | |
YEAR | 1 | 年份值 | |
DATETIME | 8 | 混合日期和时间值 | |
TIMESTAMP | 4 | 混合日期和时间值,时间戳 | |
字符串类型 | CHAR | 0-255 bytes | 定长字符串 |
VARCHAR | 0-65535 bytes | 变长字符串 | |
TINYBLOB | 0-255 bytes | 不超过 255 个字符的二进制字符串 | |
TINYTEXT | 0-255 bytes | 短文本字符串 | |
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 | |
TEXT | 0-65 535 bytes | 长文本数据 | |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 | |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 | |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 | |
LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
2.DDL(Data Definition Language)
CREATE DATABASE 数据库名称;
CREATE DATABASE IF NOT EXISTS 数据库名称;
DROP DATABASE 数据库名称;
DROP DATABASE IF EXISTS 数据库名称;
USE 数据库名称;
SELECT DATABASE();
SHOW TABLES;
DESC 表名称;查询表结构
修改表名: ALTER TABLE 表名 RENAME TO 新的表名;
添加一列:ALTER TABLE 表名 ADD 列名 数据类型;
修改数据类型:ALTER TABLE 表名 MODIFY 列名 新数据类型;
修改列名和数据类型:ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
删除列:ALTER TABLE 表名 DROP 列名;
3.DML:(Data Manipulation Language)对数据进行增(insert)删(delete)改(update)操作
给指定列添加数据: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,…),(值1,值2,…),(值1,值2,…)…;
修改表数据:UPDATE 表名 SET 列名1=值1,列名2=值2,… [WHERE 条件] ;
删除数据:DELETE FROM 表名 [WHERE 条件] ;
4.DQL
查询多个字段:SELECT 字段列表 FROM 表名; SELECT * FROM 表名; – 查询所有数据
去除重复记录:SELECT DISTINCT 字段列表 FROM 表名;
条件查询
符号 | 功能 |
---|---|
> | |
< | |
>= | |
<= | |
= | |
<>或!= | 不等于 |
between…and… | 范围 |
in(…) | 多选一 |
like占位符 | 模糊查询 |
is null | |
is not null | |
and或&& | 并且 |
or或|| | 或者 |
not或! | 非 |
模糊查询使用like关键字,可以使用通配符进行占位: (1)_ : 代表单个任意字符 (2)% : 代表任意个数字符
排序查询:SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
ASC : 升序排列 (默认值) DESC : 降序排列
聚合函数分类
函数名 | 功能 |
---|---|
count(列名) | 统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
SELECT 聚合函数名(列名) FROM 表;注意:null 值不参与所有聚合函数运算
分组查询
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
-
查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的
select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*) > 2;
where 和 having 区别:
-
执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
-
可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。
分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
注意: 上述语句中的起始索引是从0开始
进行过滤。
- 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。
分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
注意: 上述语句中的起始索引是从0开始