sql语句最后需要以;号结尾,sql语句最后需要以;号结尾,sql语句最后需要以;号结尾。重要的事说三遍。
数据库操作
select version():显示数据库版本
select now():显示时间
show databases:查看所有数据库
show create database 数据库名:查看创建数据库的语句
create database 数据库名字:创建数据库
create database 数据库名字 charset=utf8:创建指定编码格式的数据库
drop database 数据库名:删除数据库
use 数据库名:使用数据库
select database ():查看当前使用的数据库
数据表操作
show tables:查看当前数据库中所有表
drop table 表名:删除表
show create table 表名:查看创建表的语句
create table 表名(字段 类型 约束[,字段 类型 约束]):创建表
参数:auto_increment表示自动增长、not null表示不能为空、primary key表示主键、default 默认值
desc 表名:查看表的状态
insert into 表名 values():向表插入数据,按照参数类型写参数
select * from 表名:查看表中所有的数据
alter table 表名 add 列名 类型:向表中添加字段
alter table 表名 modify 列名 类型 约束:不重命列名版
alter table 表名 change 列的原名 列的新名 类型 约束 :重命列名版
alter table 表名 drop 列名:删除字段
数据的增删改查
增加
全列插入:insert into 表名 values(数据)
主键字段:可以用0 null default 来占位。因为auto_increment是自动增加的
部分插入:insert into 表名(列名1) values(值1) 没有的值取默认值
多行插入:insert into 表名 values (数据1),(数据2)
update 表名 set 列名 :整列都改
update 表名 set 列名 where 条件:根据条件改
通过其他表来更新一个表:
update 其他表 as 新名 inner join 被更新的表 as 新名 on 条件 set 需要改的数据
查询:
select from 表名:查询整个表,号代表全部
select * from 表名 where :根据条件查询
select 查询的列名 from 表名:根据列名查询。查询多列时,列名间用,隔开
select 查询的列名 as 列的新名字 from 表名:将列查询后以新的名字显示出来
select 表名.列名 from 表名
select 表的新名字.列名 from 表名 as 表的新名字
select distinct 列名 from 表名:可以去重,只显示相同数据第一次数据出现的位置
条件查询:
and、or、not都可以用,类似python的语法。判断是否为空,is NULL。
模糊查询:
like :%代表一个或多个,_代表一个。
select name from 表名 where name like “%小%”:查询名字中有”小”字的名字
select name from 表名 where name like “__”:查询两个字的名字
select name from 表名 where name like “__%”:查询两个字以上的名字
rlike:利用正则查询
范围查询:
in表示在一个非连续的范围内
between 数字 and 数字表示在一个连续的范围内
排序:order by 默认从小到大排序
asc:从小到大排
desc:从大到小排
如果排序字段相同,我们可以设置多个排序字段。若不设置,默认按照主键大小排。
聚合函数(count,max,min,avg,sum,round):不能跟其他字段一起用
count:计算个数,其他类似
max:计算最大的
min:计算最小的
avg:计算平均值
sum:求和
round:四舍五入 ,round(123.23,1)保留一位小数=123.2
分组:group by
按照性别分组:
配合聚合函数使用计算每种性别的人数:
计算男性的人数:
group_concat():查询同一组的其他字段
还可以用字符串分割
having:将达到条件的组输出,可以配合聚合函数一起使用
having和where的区别:having是在分组后进行筛选,where是在原表的基础上进行筛选
分页:
limit start,count 限制查询出来的数据个数。start代表从哪开始,count 代表查询的数据个数。start默认为0
链接查询:内链接、左链接、右链接
内链接:inner join ……on
在两个表中取交集,如果存在则将两表数据合并。不存在则跳过。
可以利用as化简语句:
可以根据需求修改需要显示的数据:
还可以修改数据显示的位置:
通过某个表的字段排序:
左链接:left join……on。谁在左边,谁就是左表。
查询的结果为两个表匹配到的数据,左表特有的数据,对于右表不存在的数据使用null填充
将左表特有的数据提取出来:
右链接:right join……on:类似左表。可以直接将右链接的表中左表和右表的显示交换即可得右链接。
自关联:补。。。。
子查询:查询里嵌套一个查询
删除
删除分为物理删除和逻辑删除:
物理删除:
delete from 表名:删除整个表
delete from 表名 where 条件:删除符合条件的数据
逻辑删除:(用一个字段表示,这条信息是否还能用)
alter table 表名 add 字段 类型 default 默认值