MySQL数据库语法
◆ 创建数据库
create database 数据库名 default character set = 'utf8';
◆查看当前连接下的数据库列表
show databases;
◆切换/选择/使用数据库
use 数据库名;
◆查看当前连接的是哪一个数据库
select database();
◆删除数据库
drop database 数据库名;
◆建表
create table 表名(
字段1 数据类型1,
字段2 数据类型2,
……,
字段n 数据类型n
);
MySQL常用的数据类型:
整型 int/浮点型 float double decimal/字符型 char varchar/枚举型 enum/日期型 date datetime time
◆约束
主键约束(primary key)
非空约束(not null)
唯一约束(unique)
默认值约束(default 默认值)
外键约束(foreign key)
foreign key(sid) references 主键表名(sid)
SET FOREIGN_KEY_CHECKS=0; 关闭
SET FOREIGN_KEY_CHECKS=1; 打开
◆查看表结构
desc 表名;
◆显示数据库中所有的表
show tables;
◆修改表名
alter table 旧表名 rename to 新表名;
◆ 修改字段名
alter table 表名 change 旧字段名 新字段名 新字段的数据类型;
◆添加字段
alter table 表名 add 字段名 字段的数据类型;
◆ 删除字段
alter table 表名 drop 字段名;
◆删除表
drop table 表名;
表数据和表结构一起删除
◆ 数据的插入
insert into 表名[(字段1,字段2,……字段n)] values(值1,值2,……值n),(值1,值2,……值n), ……(值1,值2,……值n);
◆查询所有的字段
select * from 表名;
◆查找特定的字段
select 字段1,字段2,……字段n from 表名;
select distinct 字段 from 表名;
使用distinct过滤重复的记录,若有多个字段则同时取值相同的时候才会过滤重复值
◆条件查询
select *|字段1,字段2,……字段n from 表名 where 查询条件;
where条件里经常用到的关系运算符:= != > >= < <=
条件查询还支持多条件,多条件有三个常用的逻辑运算符:
and 与 并且的意思 /or 或 或者的意思 /not 非 取反的意思/ between and 在……之间/ in 在一个集合里任选其一/ not between and/ not in
◆ 模糊查询
% 表示此处有0个或1个或多个字符 _ 标识此处有1个字符
select * from 表名 where 字段 like '张%';
◆空值查询
is null 是空值 is not null 不是空值
select * from 表名 where 字段 is null;
◆排序显示
select *|字段1,字段2,……字段n from 表名 where 查询条件
order by 字段 [asc|desc];
默认升序 asc:ascend 升序 / desc:descend 降序
◆数据的更新
update 表名 set 修改的内容 [where 更新条件];
如果不跟更新条件,则表里所有的记录都会更新
◆数据的删除
delete from 表名 [where 删除条件];
如果不跟条件则会删除表里所有的数据(保留表结构)
主外键关联通常需要先删除子表里的相关数据,再删除父表的数据。
◆聚合函数:
常用的聚合函数有:count() 统计个数 / avg() 求平均值 / sum() 求和 / max() 求最大值 / min() 求最小值
◆分组查询
select *|字段1,字段2,……字段n from 表名 where 查询条件
group by 分组字段 having 过滤条件 order by 字段 [asc|desc];
group by 子句:按某个字段做分组/having子句:对分组之后的数据做进一步过滤,针对组的过滤/where子句:对分组之前的数据做过滤,针对行的过滤,聚合函数不能出现在where子句里
having和where的区别:
书写位置不同,where在group by之前,having在group by之后
执行顺序不同,where和group同时出现是先筛选后分组,group by和having是先分组后筛选,也就是where执行在分组之前,having执行在分组之后。
where后面的条件只能是表中的字段,having可是是聚合函数或者运算函数
◆子查询
结果语句 where 字段 in或者= (子查询语句)
查询返回多行,要用in进行连接,而不是=
◆关联查询
内连接:
select * from 表名1,表名2 where 表名1.字段=表名2.字段;
select * from 表名1 inner join 表名2 on 表名1.字段=表名2.字段;
左外连接:left join 指的是除了返回满足关联条件的结果集以外,还会把left join左边的那张表完整的展示出来,右边的那张表里不满足关联条件的字段位置补空值(null)
右外连接:right join 指的是除了返回满足关联条件的结果集以外,还会把right join右边的那张表完整的展示出来,左边的那张表里不满足关联条件的字段位置补空值(null)
全连接 full join 指的是除了返回满足关联条件的结果集以外,还会把full join两边的表完整的展示出来,两边不满足关联条件的字段位置补空值(null)
MySQL不支持full join,可以通过union集合操作来实现全外连接
#union和union all 合并查询结果(注意查询结果列数量一致)#前者去重 后者不去重
◆限制结果输出
limit子句用于限制查询结果返回的数量
limit n 等同于limit 0,n
limit n,m 表示从记录编号n开始的m条数据(记录的编号从0开始)
◆ if( ) 查询
select 字段,if(condition,a,b) 字段_result from 表名
如果condition为真,则返回a值,否则返回b值。
解决if多层嵌套循环过程case when
select 字段,(case 列名 when 条件1 then 返回值1 when 条件2 then 返回值2 ...... else返回默认值 end)字段_result from 表名
字段_result 代表创造出新的一列
发表评论