MySQL数据库SQL语句(一)

  • 一、MySQL高级SQL语句
  • 1. 显示表格中的内容
  • 2. 条件查询语句
  • 2.1 where
  • 2.2 and、or
  • 2.3 in
  • 2.4 between
  • 2.5 通配符、like
  • 2.6 order by
  • 二、函数
  • 1. 数学函数
  • 2. 聚合函数
  • 3. 字符串函数
  • 4. group by
  • 5. having
  • 6. 别名
  • 7. 子查询:连接表
  • 8. exists:判断语句


一、MySQL高级SQL语句

1. 显示表格中的内容

select 字段1,字段2,.../* from 表名;
select distinct 字段1,字段2,.../* from 表名;      不显示重复部分

mysql数据库操作语言 数据库mysql语句_mysql数据库操作语言

2. 条件查询语句

2.1 where

select 字段1,字段2,.../* from 表名 where 字段=...
select name,price from list where id=5;

mysql数据库操作语言 数据库mysql语句_sql_02

2.2 and、or

用来连接两个条件表达式

select 字段1,字段2,... from 表名 where 条件表达式1 and (条件表达式2);
select id,name from list where price>=2000 and (price<=4000);

mysql数据库操作语言 数据库mysql语句_sql_03

2.3 in

select 字段1,字段2,... from 表名 where 字段 in (数值1,数值2,...);
select id,name from list where price in (2000,5000);

mysql数据库操作语言 数据库mysql语句_字段_04

2.4 between

select 字段1,字段2,... from 表名 where 字段 between 数值1 and 数值2;
select id,name from list where price between 3000 and 5000;

mysql数据库操作语言 数据库mysql语句_数据库_05

2.5 通配符、like

  • %:百分号表示零个、一个或多个字符
  • _:下划线表示单个字符
  • like:用于匹配模式来查找资料
select 字段1,字段2,... from 表名 where 字段 like '模式';
select id,name from list where price like '40%';

mysql数据库操作语言 数据库mysql语句_mysql数据库操作语言_06

2.6 order by

按关键字排序

select 字段1,字段2,... from 表名 [where 条件表达式] order by 字段 [asc/desc]

mysql数据库操作语言 数据库mysql语句_数据库_07

二、函数

1. 数学函数

函数

作用

abs(x)

返回 x 的绝对值

rand()

返回 0 到 1 的随机数

mod(x,y)

返回 x 除以 y 以后的余数

power(x,y)

返回 x 的 y 次方

round(x)

返回离 x 最近的整数

round(x,y)

保留 x 的 y 位小数四舍五入后的值

sqrt(x)

返回 x 的平方根

truncate(x,y)

返回数字 x 截断为 y 位小数的值

ceil(x)

返回大于或等于 x 的最小整数

floor(x)

返回小于或等于 x 的最大整数

greatest(x1,x2…)

返回集合中最大的值

least(x1,x2…)

返回集合中最小的值

select abs(-2),rand(),mod(5,2),power(3,2),round(1.78);

mysql数据库操作语言 数据库mysql语句_数据库_08


mysql数据库操作语言 数据库mysql语句_mysql数据库操作语言_09

2. 聚合函数

函数

作用

avg()

返回指定列的平均值

count()

返回指定列中非 NULL 值的个数

min()

返回指定列的最小值

max()

返回指定列的最大值

sum(x)

返回指定列的所有值之和

select avg(字段) from 表名;
select avg(price) from list;

mysql数据库操作语言 数据库mysql语句_mysql_10

select count(字段) from 表名;
select count(price) from list;
select count(distinct 字段) from 表名;        去重后统计指定列非NULL值的个数

mysql数据库操作语言 数据库mysql语句_mysql_11

select min(字段) from 表名;
select min(price) from list;

select max(字段) from 表名;
select max(price) from list;

mysql数据库操作语言 数据库mysql语句_mysql数据库操作语言_12


mysql数据库操作语言 数据库mysql语句_sql_13

select sum(字段) from 表名;
select sum(price) from list;

mysql数据库操作语言 数据库mysql语句_mysql数据库操作语言_14

3. 字符串函数

函数

作用

trim()

返回去除指定格式的值

concat(x,y)

将提供的参数 x 和 y 拼接成一个字符串

substr(x,y)

获取从字符串 x 中的第 y 个位置开始的字符串,跟substring()函数作用相同

substr(x,y,z)

获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串

length(x)

返回字符串 x 的长度

replace(x,y,z)

将字符串 z 替代字符串 x 中的字符串 y

upper(x)

将字符串 x 的所有字母变成大写字母

lower(x)

将字符串 x 的所有字母变成小写字母

left(x,y)

返回字符串 x 的前 y 个字符

right(x,y)

返回字符串 x 的后 y 个字符

repeat(x,y)

将字符串 x 重复 y 次

space(x)

返回 x 个空格

strcmp(x,y)

比较 x 和 y,返回的值可以为-1,0,1

reverse(x)

将字符串 x 反转

  • trim() 返回去除指定格式的值
select trim(位置 '字符' from '字段');
位置可以是开头(leading),结尾(trailing),both(开头或结尾)

mysql数据库操作语言 数据库mysql语句_mysql_15

  • concat(x,y) 将提供的参数 x 和 y 拼接成一个字符串
select concat(字段1,字段2) from 表名;
select concat(id,name) from list;

mysql数据库操作语言 数据库mysql语句_mysql_16

select 字段1 || ' ' || 字段2 from 表名 [where 条件表达式];
select id || ' ' || name from list where price=3000;

mysql数据库操作语言 数据库mysql语句_sql_17

  • substr(x,y) 获取从字符串 x 中的第 y 个位置开始的字符串
  • substr(x,y,z) 获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串
select substr(字段,数字) from 表名 [where 条件表达式];
select substr(字段,数字1,数字2) from 表名 [where 条件表达式];
select substr(price,3) from list where id=4;
select substr(price,1,2) from list;

mysql数据库操作语言 数据库mysql语句_数据库_18


mysql数据库操作语言 数据库mysql语句_数据库_19

  • length(x) 返回字符串 x 的长度
select length(字段) from 表名;
select length(price) from list;

mysql数据库操作语言 数据库mysql语句_mysql_20

  • replace(x,y,z) 将字符串 z 替代字符串 x 中的字符串 y
select replace(price,'0','1') from list;

mysql数据库操作语言 数据库mysql语句_mysql数据库操作语言_21

  • upper(x) 将字符串 x 的所有字母变成大写字母
  • lower(x) 将字符串 x 的所有字母变成小写字母
select upper(字段) from 表名;
select lower(字段) from 表名;
select upper(name) from list;

mysql数据库操作语言 数据库mysql语句_mysql数据库操作语言_22

  • left(x,y) 返回字符串 x 的前 y 个字符
  • right(x,y) 返回字符串 x 的后 y 个字符
select left(字段,数字) from 表名;
select right(字段,数字) from 表名;
select left(price,3) from list;
select right(price,3) from list;

mysql数据库操作语言 数据库mysql语句_数据库_23

  • repeat(x,y) 将字符串 x 重复 y 次
select repeat(字段,数字) from 表名;
select repeat(name,2) from list;
select repeat(数字,n):              显示数字n次

mysql数据库操作语言 数据库mysql语句_sql_24

  • space(x) 返回 x 个空格

mysql数据库操作语言 数据库mysql语句_mysql_25

  • strcmp(x,y) 比较 x 和 y,返回的值可以为-1,0,1
select strcmp(数字1,数字2);

mysql数据库操作语言 数据库mysql语句_sql_26

  • reverse(x) 将字符串 x 反转
select reverse(数字);

mysql数据库操作语言 数据库mysql语句_字段_27

4. group by

select 字段1,sum(字段2) from 表名 group by 字段1;
select id,sum(price) from list group by id;
select id,sum(price) from list group by id order by sum(price);

mysql数据库操作语言 数据库mysql语句_字段_28


mysql数据库操作语言 数据库mysql语句_mysql_29

5. having

常与group by结合使用,进一步筛选内容

select 字段1,sum(字段2) from 表名 group by 字段1 having sum(字段2);
select id,sum(price) from list group by id having sum(price) > 3000;

mysql数据库操作语言 数据库mysql语句_字段_30

6. 别名

select 表别名.字段1 "字段1别名",sum(表别名.字段2) "字段2别名" from 表名 表别名 group by 字段1别名;
select A.id "ID",sum(A.price) "P" from list A group by ID;

mysql数据库操作语言 数据库mysql语句_mysql数据库操作语言_31

7. 子查询:连接表

连接表格,在where子句或having子句中插入另一个SQL 语句
注:在一个表中根据条件得出一个参数值,同时这个参数值在另一个表中也有,此时将第一个表中得到的参数值所在的字段进行相应操作

  • 可以是符号的运算符:=、>、<、>=、<=
  • 也可以是文字的运算符:like、in、between
select sum(求和字段) from 表名1 where 字段1 in (select 字段1 from where 字段2条件);
select sum(price) from list where id in (select id from list1 where status='ok');
分解:
select id from list1 where status='ok';
select sum(price) from list where id in ('a','c');

mysql数据库操作语言 数据库mysql语句_sql_32


mysql数据库操作语言 数据库mysql语句_mysql数据库操作语言_33

显示表1中与表2相同字段相同值的行
select * from 表1名 表1别名 where 表1名.字段 in (select 字段 表2别名 where 表2别名.字段 = 表1别名.字段);
select * from list a where a.id in (select id from list1 b where b.id = a.id);

mysql数据库操作语言 数据库mysql语句_数据库_34

8. exists:判断语句

select '操作' from 表名 where exists ('判断语句');
若判断语句成立,则执行操作,否则输出NULL值
select sum(price) from list where exists (select id from list1 where id='a');

mysql数据库操作语言 数据库mysql语句_mysql数据库操作语言_35


mysql数据库操作语言 数据库mysql语句_数据库_36