MYSQL语法

一、聚合函数:

1.count(),括号内需要加字段名,显示该字段的在该表中的记录个数;
2.avg(),括号内需要加字段名,显示该字段的在该表中平均值;
3.max(),括号内需要加字段名,显示该字段的在该表中最大值;
4.min(),括号内需要加字段名,显示该字段的在该表中最小值;
5.sum(),括号内需要加字段名,显示在该表中该字段值的总和;

二、基本语法

1.order by 字段名 asc/desc(asc即升序也是默认的排序方式,desc即降序)
就是说通过该字段的ascii码进行一个排序;
也可以再加字段名 asc/desc,就是按照第一个排序完后,相同的部分再根据第二个排序方式进行排序;例如order by 字段名 asc/desc,字段名 asc/desc。

2.limit x,y;就是在sql语句的最后的显示行数(x是起始行,y是要显示几行)。

3.group by 字段名 having 条件
即通过group by 对字段名进行分组后,再通过having进行条件过滤

group by 字段名 with rollup,就是对分组后的所有列数据进行一个求总和,非数值型的为null。

4.in
where 字段名 in(xxx);
一般来说in是多个数据且不确定的情况下使用(例如嵌套查询);

5.合并查询
union 执行合并时删除重复的记录
union all 执行合并时不删除重复的记录(即合并全部记录)

由多条查询语句 通过union 或union all进行“连接”;把多条查询语句的结果合并到新的结果集;并且表的列数和数据类型也要相同。

6.模糊查询
%表示多个位置,_表示一个位置
以x开头:where 字段名 like “x%”;
以x结尾:where 字段名 like “%x”;
包含x:where 字段名 like “%x%”
查询的结构不区分大小写
7.去重复的记录 distinct
例如:select distinct *|字段名 from 表名;

8.between 数值1 and 数值2
俩值之间,包含俩值

9.exists 和not exists
where exists(sql语句), 此时 exists(sql语句)返回的是一个boolean值,false或true;
当sql语句能返回结果集时,则exists(sql语句)的值为true,反之为false;
而not exists则跟exists相反。

三、连接查询

语法:select *|字段名 from 表a inner/left/right join 表b on 表a.字段名=表b.字段名 ;
1.内连接
inner join(等值连接)
等值连接,顾名思义,就是说显示的是表a和表b的字段值相同的行数据,如果表中字段值不相同则不显示;
例如a.bid=2,而b.id没有值为2的行,即没有找到字段值对等的行数据,故a这一行不显示;
即它们俩都是一个平等的关系,需要找到对应的字段值才能显示。

2.外连接
left join(左连接)
left join 就是说显示左表(表a)的所有记录和表b中与表a的某一字段值相同的行数据;如果表b中不存在这样与表a的某一字段值相同,则显示null。
即他们不是平等的关系,而是为左表(表a)为主,再通过表a的某一字段值去找表b中对应的字段值的行数据。

right join(右连接)
right join与右连接类似,就是以右表(表b)为主,通过表b的所有行数据的某一字段值去找表a某一字段值的行数据;

不管是内连接还是外连接通过on来取得俩个表中俩个字段名中值相同的数据( inner/left/right join 表b on 表a.字段名=表b.字段名 );

四、MYSQL的执行顺序

from 拿表名的操作,拿表名字找到对应的表数据
on连接表的条件
join 根据on的条件连接另一张表
where、having、聚合函数都是过滤条件
select是得出找到显示的内容
order by是显示的方式
limit 对显示的内容再进行一个选择显示
sql语句执行的顺序:
from → on → join → where → having、聚合函数 → select → order by → limit
关键字的摆放顺序:
select distinct from inner/left/right join on where group by having order by asc/desc limit
select *|字段名 from 表名

五、命令行常用的SQL操作

  1. 创建数据库:create database db_name;
  2. 查询数据库:show databases;
  3. 删除数据库:drop database db_name;
  4. 使用数据库:use db_name;
  5. 创建表:create table table_name(id int(3),name char(10), ..., primary key(id));
  6. 查询表:show tables;
  7. 插入表数据:insert into table_name values(field_data1,field_data2,...);
  8. 查询表数据:select * from table_name;
  9. 删除表数据:delete from table_name;
  10. 修改表数据:update table_name set field_name=new_data where field_name = field_data
  11. 修改表名:alter table old_table_name rename to new_table_name;

总结:
1.msql数据库在处理sql语句时会自动将关键字自动转化为大写;可以编写时就写成大写;
2.mysql数据库大概的执行顺序,首先是先拿表名,找到对应的表数据;其次是得到通过条件过滤后原本显示的内容;然后再对原本显示的内容进行ascii码的升降序,显示从第几条开始,然后显示几条等。
12. where、group by having、on(inner/left/right on)等都是条件过滤相关的;select 、order by asc/desc、limit、distinct都是跟显示相关的;from、inner/left/right (inner/left/right on)都是取表名找到表数据相关的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值