DDL:数据定义语言,创建数据库和表字段
DML:数据操纵语言,数据的维护和查询
一、数据库操作
1.查询服务器上的所有数据库:
show databases;
2.创建数据库:
create database 数据库名
3.使用数据库:
use 数据库名
4.查询当前所在的数据库:
select database();
5.删除数据库:drop database 数据库名;
二、MySQL数据类型
常用的:
1.数值型:int / bigint
2.字符串类型:varchar / text
3.日期类型:datetime
三、表的操作用法
3.1表结构操作
1.创建表
语法:
示例:
2.删除表
示例:
3.查询所有表
4.查询表结构
5.修改表结构
5.1添加列
5.2删除列
5.3修改列
列已经有数据了不能删除只能修改,可以使用change语句
语法:
示例:
5.4修改表名
语法:
3.2表数据操作
1.添加
1.1全列添加
1.2指定列添加
2.查询
2.1全列查询
select * from score;
2.2指定列查询
select math,name from score;
2.3表达式查询
select name,math+chinese+english from score;
select name,math+10 from score;
注意:使用select 进行的表达式计算不会修改原表数据。
2.4使用别名查询
select math+english+chinese as total from score;
2.5去重查询distinct
单行去重查询
多行去重查询
当distinct使用为多行去重查询,规则是:所有的联合字段全部相同才能去重,否则不去重
2.6排序order by
升序asc,降序desc,在不指定排序规则的情况下,默认使用的是升序asc
多列排序:当math成绩相同时,会根据第二规则chinese排序
2.7条件查询where
比较运算符:
条件运算符:
where条件查询中不能使用别名
常见面试题:
为什么在where条件查询中不能使用别名,但在oder by中可以?
MySQL执行顺序:
1.from阶段
2.where阶段
3.group by阶段
4.having阶段
5.select阶段
6.order by阶段
7.limit阶段
别名产生在第五个阶段,order by在第5阶段之后别名已经产生,而where在第五阶段之前,所以order by中可以用.
基本使用:
1.数学成绩为 NULL 的⼈
select * from score where name is null;
2.数学成绩及格的⼈
select * from score where math >= 60;
3.语⽂成绩⼤于数学成绩的⼈
select * from score where chinese > math;
4. 总成绩⼤于 150 分的⼈
select name,(math+chinese+english) from score where (math+english+chinese)>150;
5.语⽂成绩和数学成绩都 > 80 分的人
select * from score where chinese>80 and math>80;
6.语⽂成绩或数学成绩⼤于 80 分的⼈
select * from score where chinese>80 or math>80;
7.between x and y
select name,math from score where math between 60 and 90;
8.in 查询
数学成绩等于 99 和 100 分的同学:
select name,math where math in(90,100);
9.模糊查询
a.%:匹配任意个字符
b._:匹配一个字符
10.分页limit
a.select * from score limit 2;
b.select * from score limit 2offset2;表示查询两条数据,跳过前两条
c.select * from score limit 2,4;表示跳过前两条,限制查询4条
示例:
1.总分数排名前三
2.总分数第⼆⻚(4-6条数据)
3.limit x offset y(x,y 值超出不报错)
3.修改
3.1全部修改
update score set math=85;
3.2部分修改
update score set math=85 where name=‘刘备’;
3.3修改多列
update score set math=85,chinese=85 where name=‘刘备’;
3.4表达式修改
4.删除
4.1删除单条数据
delete from score where name=‘刘备’;
4.2全部删除
delete from score;
只是删除行数据,但表的结构依然存在
4.3truncate
truncate [table] 名称
4.4delete VS drop VS truncate
1.删除的影响范围:
drop(删除表,表结构不存在) > truncate(删除表中的所有数据) >= delete(删除部分或所有数据)
2.查询条件:
delete可以添加查询条件,但另外两个不可以
3.命令类型:
delete:DML
drop:DDL
truncate:DDL
4,数据恢复不同:
delete删除的数据可以恢复,但另外两个不可以
5.执行效率:
drop > truncate > delete