MySQL数据库语法

admin 2023-12-04 588 阅读 0评论

◆ 创建数据库

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 代表创造出新的一列 

喜欢就支持以下吧
点赞 0

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 588人围观)

最近发表

热门文章

最新留言

热门推荐

标签列表