操作数据库(DDL)
连接数据库
mysql -u用户名 -p
enter password : 密码
退出数据库
exit
quit
查看已经创建的数据库
show databases;
— 注意
- mysql不严格区分大小写
- 分号作为结束符,必须写
查看数据库版本
select version();
创建数据库
create database 数据库名;
create datebase 数据库名 charset=‘utf-8’;
— 注意
- charset : 指定编码为utf8
查看创建数据库的命令
show create database 数据库名;
查看当前使用的数据库
select database();
使用数据库
use 数据库名;
删除数据库
drop database 数据库名;
操作数据表
查看当前数据库中所有表
show tables;
创建表
create table 数据表名(字段 类型 约束[, 字段 类型 约束])
查看表的创建语句
show create table 数据表名;
查看表描述信息
desc 数据表名;
添加表字段
alter table 数据表名 add 字段 类型;
修改表字段
alter table 数据表名 modify 字段 类型; (不重复命名)
alter table 数据表名 change 原字段名 新字段名 类型和约束 (将字段重命名)
删除表字段
alter table 数据表名 drop 字段;
操作数据
新增数据
整行插入
insert into 数据表名 values(值1,值2,值3)
指定列中插入数据
insert into tabname(字段1,字段2) values(值1,值2),(值1,值2)
修改数据
update 数据表名 set 字段1= 新值,字段2=新值;
删除数据
delete from 数据表名 【where 条件】;
逻辑删除
查询数据
查询整个表数据
select * from 数据表名;
查询指定字段数据
select 字段1,字段2, from 数据表名;
查询指定字段数据,并给字段其别名
select 字段1 as 别名,字段2 as 别名 from 数据表名;
查询指定字段并去重
select distinct 字段1 from 数据表名;
where子句
— where子句通常结合增删改查使用,用于做筛选的条件。
比如,查询当id=1的数据
select * from students where id=1
模糊查询
like关键字用来进行模糊查询,并结合%以及_使用
- % 表示任意多个字符
- _ 表示一个任意字符
- 仅含有两个字符
常用聚合函数
count 总数
max()最大值
min() 最小值
sum()求和
avg 平均值
分组与分组之后的筛选
在数据库中,通过group by将查询结果按照1个或多个字段进行分组,字段值相同的为一组。
– select … from students group by 需要分组字段;
group_concat(…)
— 我们通过group_concat(…)查看每组的详细信息
— 如果分组后,还想查看总人数 with rollup
— group_concat方法里面的拼接方法
分组后的筛选
分组后不进行where操作
错误
真确
排序
order by 字段 默认升序
order by asc 字段 指定升序
order by desc 字段 指定降序
限制
limit start , count
- start为偏移量,默认起始0
- count为条数
注意:
- limit不能写数学公式
- limit只能写在末尾
表连接
当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回mysql。这时我们就需要使用表连接。
分类
- 内连接
- 外连接(左连接 右连接)
内连接
— 内连接仅选出两张表中互相匹配的记录
select * from 表1 inner join 表2 on 表1.列 = 表2.列;
左连接
– 查询的结果为两个表匹配到的数据,左表持有的数据,对于右表中不存的数据使用null填充
– select * from 表1 left join 表2 on 表1.列 = 表2.列;
右连接
查询结果为两个表匹配到的数据,右表持有的数据,对于左表中不存在的数据使用null填充。
select * from 表1 right join 表2 on 表1.列 = 表2.列
子查询
某些情况下,当进行查询的时候,需要的条件是另外一个 select 语句的结果,这个时候,就要用到子查询。