赞
踩
# 语法:select 字段 from 表名;
# 举例: 从 student 表中查询 name 与 age
select name, age from student;
# 语法:select 字段 as 别名 from 表名;
# 举例: 从 student 表中查询 name 与 age
select name as 'myName', age as 'myAge' from student;
# 语法:select distinct 字段 from 表名;
# 举例: 从 student 表中查询 name 并且将结果去重
select distinct name from student;
# 语法:select 字段 from 表名 where 条件;
# 举例:从 student 表中查询 age = 15 的 name
select name from student where age = 15;
# 语法:select 字段 from 表名 where 字段 like '%数据%';
# 举例:从 student 表中查询 name 中含有 '张' 的所有记录
select * from student where name like '%张%';
# 语法:and(且), or(或), not(非)
# 举例:从 student 表中查询 age = 15 或 sex = 'man' 的所有记录
select * from student where age = 15 or sex = 'man';
# 语法:select 字段 from 表名 where 字段 in(列表)//或 not in(列表);
# 举例:从 student 表中查询 age 为 (13, 14, 15) 之间的所有记录
举例:select * from student where age in(13, 14, 15);
# 语法:>(大于), <(小于), =(等于), !=(不等于), <>(不等于), >=(大于等于), <=(小于等于)
# 举例:解析:从 student 表中查询 age < 15 的所有记录
select * from student where age < 15;
# 语法:select 字段 from 表名 where 字段 between 起始值 and 结束值;
# 举例:从 student 表中查询 age>=10 且 age<=20 之间的数据
select * from student where age between 10 and 20;
# 语法:select 字段 from 表名 order by 字段 排序方式(升序 asc, 降序 desc);
# 举例:从 student 表中查询所有记录并按照 age 升序排序
select * from student order by age asc
# 语法:select 分组字段,count(1) from 表名 group by 分组字段;
# 举例:从 student 表中查询name,并且对name进行分组统计
select name,count(1) from student group by name;
# 语法:select 分组字段,group_concat(字段) from 表名 group by 分组字段;
# 举例:从 student 表中查询name,并且对name进行分组统计,将分组后的id都显示出来
select name,group_concat(id) from student group by name;
# 语法:select 分组字段,count(1) from 表名 group by 分组字段 having count(1)>=2 order by count(1) desc;
# 举例:从 student 表中分组查询name总数大于等于2个的数据,并且对name分组后统计数量进行倒序
select name,count(1) from student group by name having count(1)>=2 order by count(1) desc;
# 语法:select 字段 from 表名 limit 页码,每页显示条数;
# 举例:查询 student 表从第一行开始,往后查询5条数据包含第一条, 0 表示第一行记录,也是从 0 开始,和数值类似
select * from student where limit 0,5;
# or
select * from student where limit 5;
# 语法:select 函数(字段) from 表名;
# 举例:统计 student 表中有多少条数据
select count(1) from student;
PS: 聚合函数会自动忽略null值那一行
如: select name,count(name) from student group by name;
就算有多个name值为空,最后统计出来name=null的值也是0,可以使用 ifnull(字段名,默认值) ,不去忽略null值的哪一行,而是赋值一个默认值
select name,count(ifnull(name,'张三')) from student group by name;
SELECT CONCAT('My','S','QL');
# 结果:MySQL
SELECT REPLACE('这是一个数据库', '一个', 'MySQL');
# 结果:这是MySQL数据库
SELECT INSERT('这是一个数据库',3,2,'MySQL');
# 结果:这是MySQL数据库
SELECT LOWER('MYSQL');
# 结果:mysql
SELECT UPPER('mysql');
# 结果:MYSQL
SELECT SUBSTRING('JavaMySQLOracle',5,5);
# 结果:MySQL
# 将字符串数字转换成整型
SELECT CAST('123' AS SIGNED);
SELECT CONVERT('123', SIGNED);
# 将字符串数字转换成浮点型
SELECT CAST('123.45' AS DECIMAL(9,2));
SELECT CONVERT('123.45', DECIMAL(9,2));
# 获取当前时间秒数
SELECT UNIX_TIMESTAMP();
# 获取当前时间毫秒数
SELECT UNIX_TIMESTAMP() * 1000;
# 查询系统当前时间
SELECT SYSDATE();
# 查询当前时间
SELECT NOW();
# 查询当前日期
SELECT CURDATE();
# 获取指定日期的年份
SELECT YEAR('2023-09-11 00:05:00'); # 结果:2023,这里可以传字符串格式时间也可以传datetime等时间类型,但是不支持时间戳
SELECT FROM_UNIXTIME(1694239200000/1000, '%Y-%m-%d %H:%i:%s');
# 结果:2023-09-09 14:00:00
SELECT UNIX_TIMESTAMP('2023-09-09 14:00:00') as ts;
SELECT UNIX_TIMESTAMP('2023/9/9 14:00:00') as ts;
# 结果 1694239200 ,这里得到的是秒,需要乘1000得到毫秒
SELECT UNIX_TIMESTAMP('2023-09-09') as ts;
SELECT UNIX_TIMESTAMP('2023/9/9') as ts;
# 结果 1694188800 ,这里得到的是秒,需要乘1000得到毫秒
SELECT UNIX_TIMESTAMP(STR_TO_DATE('2023.09.09 14:00:00', '%Y.%m.%d %H:%i:%s')) as ts;
# 结果 1694239200 ,这里得到的是秒,需要乘1000得到毫秒
ceil(x)或ceiling(x)
SELECT ceil(1.5);
# 结果 2
floor(x)
SELECT floor(1.5);
# 结果 1
truncate(x ,y),y代表小数点后几位
SELECT truncate(1.56 ,1);
# 结果 1.5
round(x ,y)
SELECT round(1.5);
# 结果 2
mod(x,y)
SELECT mod(3,2);
# 结果 1
rand(),返回 0 到 1 的随机数
SELECT rand();
# 结果类似 0.4608162319854053
sign(x),返回 x 的符号,x 是负数返回 -1、x 是0返回 0、x 是正数返回 1
SELECT sign(-2);
# 结果 -1
SELECT sign(0);
# 结果 0
SELECT sign(2);
# 结果 1
# 语法:select 字段 from 表1 inner join 表2 on 表1.字段 = 表2.字段;
# 根据两个表中共有的字段进行匹配,然后将符合条件的合集进行拼接
# on后面是连接条件,也就是共有字段
# 举例:将 student 表与 engScore 表通过相同的 name 拼接起来,简单的来说就是两个 excel 合并
select * from student inner join engScore on student.name = engScore.name;
# 语法:select 字段 from 表1 left join 表2 on 连接条件;
# 举例:与内连接形式相同,但左表为主表,指定字段都会显示,右表为从表,无内容会显示 null
select * from student left join engScore on student.name = engScore.name;
# 语法:select 字段 from 表1 right join 表2 on 连接条件;
# 举例:与内连接形式相同,但右表为主表,指定字段都会显示,左表为从表,无内容会显示 null
select * from student right join engScore on student.name = engScore.name;
# 语法:
# select id,name from 表名 where 字段 = 条件
# union
# select id,name from 表名 where 字段 = 条件
# 举例:查询name=张三 和 name=李四的数据,不包含重复行
select * from student where `name` = "张三"
union
select * from student where `name` = "李四"
# 语法:
# select id,name from 表名 where 字段 = 条件
# union all
# select id,name from 表名 where 字段 = 条件
# 举例:查询name=张三 和 name=李四的数据,包含重复行
select * from student where `name` = "张三"
union all
select * from student where `name` = "李四"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。