```mysql
# mysqlselect可以查询常量,函数, 表达式select 100;select"xiaomo";select 100 * 100;selectversion()
```
```mysql
# mysql 起别名select "xiaomo" asname;select new_name as 姓名 fromxxm;
# 默认为空格也可以select new_name 姓名 fromxxm;
# 其别名 如果为all name 这样的 可以使用 ''来表示。select new_name 'all name' fromxxm;
```
```mysql
# 去重distinct
select distinct new_name fromxxm;
```
```mysql
# concat 拼接
# 注意null和 任何字段拼接,结果都为null
# 如果为null 的一列有数据 有 null 或者有值 可以使用ifnull 判断是否有值 ifnull(字段名,"默认值") : 例如: select concat(new_name, ifnull(age,0)) fromxxm;select concat(new_name,age) fromxxm;/*运行结果:
zhangsan22 |
| tom22
| xiaohong22*/```
```mysql
#between and在什么什么之间。SELECTnew_name,
ageFROMxxmWHEREageBETWEEN 5
AND 20# 运行结果:
nice18nice18nice18nice18```
```mysql
#in的使用SELECT id,age,new_name FROM xxm WHERE age in (520,22)
```
```mysql
#is NULL筛选出为空的数据。SELECT id,new_name FROM xxm WHERE new_name is NULL# 运行结果:12 null```
```mysql
#is not null筛选出不为空的数据SELECT id,new_name FROM xxm WHERE new_name is NOT NULL# 运行结果:1zhangsan2tom
...11moyan
```
```mysql
# 安全等于<> 不等于 != 或者 <>
1. 可以作为普通的运算符为 =# 例如:SELECT new_name FROM xxm WHERE new_name <=> 'zhangsan'# 运行结果:
# zhangsan
```
```mysql
#order by排序
#DESC降序 , 从大到小SELECT new_name,age FROM xxm WHERE age >= 22 ORDER BY age DESC```
```mysql
# LENGTH 获取字符串长度
# 获取字符串长度按照降序来排序SELECT LENGTH(new_name),new_name FROM xxm ORDER BY LENGTH(new_name) DESC
/*运行结果:
8 zhangsan
8 xiaohong
5 moyan*/```
```mysql
# 字符函数
# LENGTH 获取字符串的字节数
# concat 字符拼接
#UPPER SELECT UPPER(new_name) FROMxxm # 将小写字母变成大写字母
#lower SELECT LOWER(new_name) FROMxxm # 将大写字母变成小写字母
# SUBSTRSELECT SUBSTR(new_name,1,2) FROMxxm # 截取字符长度,索引为一开始 这个是截取俩个字符
# SUBSTRSELECT SUBSTR(new_name,1) FROMxxm # 获取字符一后面所有的字符
# INSTR 返回字符第一次出现的索引,如果找不到返回0SELECT INSTR(new_name,'san'),new_name FROMxxm/*运行结果:
6 zhangsan
0 tom
0 xiaohong*/# trim 去除左右俩边的空格SELECT TRIM(new_name) FROMxxm
# lpad 左填充 如果不够10 位*号 填充SELECT LPAD(new_name,10,"*") FROMxxm
# rpad 右填充SELECT RPAD(new_name,10,"*") FROMxxm
#replace将 xxm 中张三 替换成 lisiSELECT REPLACE(new_name,'zhangsan','lisi') FROMxxm
```
```mysql
#round四舍五入SELECT ROUND(age) FROMxxm
# 小数点保留后俩位SELECT ROUND(age,2) FROMxxm
# CEIL # 返回>=最少整数SELECT CEIL(age) FROMxxm
#floor 返回该<=最大整数SELECT CEIL(age) FROMxxm
#TRUNCATE截断, 只保留小数点1位数SELECT TRUNCATE(age,1) FROMxxm
# MOD 取余SELECT MOD(age,2) FROMxxm
```
```mysql
# now 返回年月日, 时分秒SELECTNOW()/*运行结果:
2020-09-17 10:00:41*/# 只返回年月日SELECTCURDATE()/*结果:
2020-09-17*/# 只返回时分秒SELECTCURTIME()/*运行结果:
10:55:34*/# 获取 年月日 时分秒SELECT YEAR(NOW()) # 年SELECT MONTH(NOW()) # 月SELECTMONTHNAME(NOW()) # 英文显示SELECT DAY(NOW()) # 日SELECTHOUR(NOW()) # 时SELECTMINUTE(NOW()) # 分SELECTSECOND(NOW()) # 秒/*运行结果:
2020
9
September
17
11
1
14*/
/*%Y 四位年份
%y 2位年份
%m 月份 补0 01 02
%c 月份不补 0 1 2 3
%d 日 01 02 03 ...
%H 时 24 小时
%h 时 12 小时
%i 分 00 01
%s 秒 00 ..*/# STR_TO_DATE 将 字符转换成 日期类型SELECT STR_TO_DATE('2020-09-17','%Y-%m-%d')
# DATE_FORMAT 将日期转换成字符SELECT DATE_FORMAT(NOW(),"%Y")/*运行结果:
2020年*/```
```mysql
#IF 相当于 if else# 有没有年龄大于或者等于520的 ,如果有返回有,如果没有返回没有SELECT IF(age>=520,'有','没有') FROMxxm/*运行结果:
没有
有*/```
```mysql
#CASE
SELECT id, new_name, CASEidWHEN 1 THEN age * 2
WHEN 2 THEN age / 2# 还可以继续写 你的条件ELSEage* 10
END FROMxxm/*运行结果:
1 zhangsan 44
2 tom 11.0000
3 xiaohong 220
4 nice 180*/```
```mysql/*sum 求和
avg 平均值
max 最大值
min 最小值
count 计算个数*/# 所有 年龄的 和SELECT SUM(age) FROMxxm
# 所有 年龄的 平均值SELECT avg(age) FROMxxm
# 最小值SELECT min(age) FROMxxm
# 最大值SELECT max(age) FROMxxm
# 计算个数SELECT count(age) FROMxxm
# 聚合函数支持 distnctSELECT count(DISTINCT age) FROMxxm
# 日期相差值SELECT DATEDIFF('2020-10-01','2020-09-17')/*运行结果:
14*/```
```MYSQL
#group by分组
# 每个年龄 的 平均年龄SELECT AVG(age) FROM xxm GROUP BYage
#having 在group by 后面使用 having [聚合函数]
SELECT age FROM xxm GROUP BY age HAVING AVG(age)
```
```mysql
# 内连接SELECT * FROM teacher,xxm WHERE xxm.t_id =teacher.id
# 内连接 语法select 字段名, 字段名 FROM 表1 INNER JOIN 表2 ON 表1.外键id =表2.idSELECT t_name, new_name FROM xxm INNER JOIN teacher ON xxm.t_id =teacher.id/*运行结果:
toms zhangsan
toms tom*/# 左连接, 查询出所有没有老师交的学生SELECT xxm.id, t_id, new_name FROM xxm LEFT JOIN teacher ON teacher.id = xxm.t_id WHERE xxm.t_id = 0
/*运行结果:
3 0 xiaohong
6 0 nice
7 0 nice*/# 右连接SELECT xxm.id, new_name,t_id FROM teacher RIGHT JOIN xxm ON xxm.t_id = teacher.id WHERE xxm.t_id = 0```