全网面试八股文--MySql基础

八股文–MySql基础

1.数据类型

分类数据类型大小描述
数值类型TINYINT1 byte小整数值
SMALLINT2 bytes大整数值
MEDIUMINT3 bytes大整数值
INT或INTEGER4 bytes大整数值
BIGINT8 bytes极大整数值
FLOAT4 bytes单精度浮点数值
DOUBLE8 bytes双精度浮点数值
DECIMAL小数值
日期和时间类型DATE3日期值
TIME3时间值或持续时间
YEAR1年份值
DATETIME8混合日期和时间值
TIMESTAMP4混合日期和时间值,时间戳
字符串类型CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-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开始

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值