表格为:
DQL 基础查询
语法:select 查询列表 from 表名:(查询的结果是一个虚拟表格)
-- 查询指定的列
SELECT NAME,birthday,phone FROM student
-- 查询所有的列 * 所有的列, 查询结果是虚拟的表格,不能操作,是只读的
SELECT * FROM student
查询结果的处理:
-- 查询结果进行算数运算
SELECT NAME,height+1 FROM student
-- 去除重复数据 查询结果中所有的列都相同
-- DISTINCT关键字去除重复数据
SELECT DISTINCT NAME,gender FROM student
函数:
类似于 java 中的方法,将一组逻辑语句事先在数据库中定义好 , 可以直接调
用
单行函数
-- 单行函数:
-- 分组函数
-- length(列名) 以字节为单位
SELECT NAME,LENGTH(NAME),gender FROM student
-- char_lenghth(列明) 以字符为单位
SELECT NAME,CHAR_LENGTH(NAME),gender FROM student
-- concat()拼接 ;as 重新取名
SELECT CONCAT(NAME,":",CHAR_LENGTH(NAME)) AS NAME,gender FROM student
-- upper英文转大写 ,lower英文转小写
SELECT UPPER(NAME),LOWER(NAME),FROM student
-- stubstring(字符串,开始位置,截取长度)开始位置从一开始
SELECT SUBSTRING(NAME,1,2) FROM student
-- instr(字符串,指定的字符) 返回指定位置首次出现的位置 找不到返回0
SELECT INSTR(NAME,'哈') FROM student
-- trim()默认去除字符串前面的空格,trim(指定子串 from 字符串)可以指定去除前后的子串
SELECT TRIM(NAME),NAME FROM student
-- 左填充 右填充 到指定长度
SELECT LPAD(NAME,5,'a'),RPAD(NAME,5,'b') FROM student
-- replace(列,'old','new')
SELECT REPLACE(NAME,'哈','咕') FROM student
逻辑处理:
SELECT NAME,gender,(CASE WHEN height>=2 THEN'高个子' ELSE '正常升高 'END)FROM studentSELECTNAME,gender,(CASE WHEN height >=2 THEN 'A'WHEN height >=1.8 THEN'B'ELSE 'c' END)AS height
FROM student-- ifnull(被检测值,默认值)
SELECTNAME,gender,IFNULL(height,'暂无录入身高信息') AS height
FROM student-- if(条件,'结果1','结果2')
SELECTNAME,gender,IF(height>=1.9,'高个子','正常')AS heightFROM student
数字函数
-- 数学函数
-- round(数值):四舍五入
-- round(数值):四舍五入
-- ceil(数值):向上取整,返回>=该参数的最小整数
-- floor(数值):向下取整,返回<=该参数的最大整数
-- truncate(数值,保留小数的位数):截断,小数点后截断到几位
-- mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负
-- rand():获取随机数,返回0-1之间的小数
SELECT NAME,ROUND(height),CEIL(1.1),FLOOR(1.9) FROM student
SELECT NAME,gender,TRUNCATE(height,1),height,RAND() FROM student
日期函数
-- now() 年月日 时分秒 系统当前时间
-- curdate() 年月日
-- curtime() 时分秒
SELECT NOW(),CURDATE(),CURTIME() FROM student
-- year(日期) 将日期格式化为年
SELECT YEAR(birthday),MONTH(birthday) FROM student
-- STR_TO_DATE('2003-3-','%Y-%m-%d') 将字符串日期 格式化为 日期类型
SELECT STR_TO_DATE('2003-3-','%Y-%m-%d') FROM student
-- DATE_FORMAT(birthday,'%Y-%m')将日期格式化为指定字符串
SELECT DATE_FORMAT(birthday,'%Y-%m') FROM student
-- DATEDIFF(CURDATE(),birthday) 计算两个日期之间的相差的天数
SELECT DATEDIFF(CURDATE(),birthday) FROM student
分组函数 聚合函数 统计函数:
-- sum avg处理数值类型 max,min,count 都可以处理
SELECT SUM(height) FROM student -- 求和
SELECT AVG(height) FROM student -- 平均值
SELECT MAX(height) FROM student -- 最大值
SELECT MIN(height) FROM student -- 最小值
SELECT COUNT(*) FROM student -- 统计个数-- 条件查询
-- select * from 表名 where 条件-- and 并且
SELECT * FROM student WHERE gender ='男' AND height>1.80 -- or 一个或多个条件满足即可
SELECT * FROM student WHERE gender != '男'
SELECT * FROM student WHERE gender <> '男'-- lick 模糊匹配
SELECT* FROM student WHERE NAME licke'咕%'-- between and
SELECT * FROM student WHERE height BETWEEN 1.89 AND 2.00
-- in not in
SELECT * FROM student WHERE height IN (1.88,1.98)
SELECT * FROM student WHERE height NOT IN(1.88) SELECT *FROM student WHERE height NOT NULL
SELECT * FROM student WHERE height NULL -- union 将多个查询结果合并,合并时,列数必须一直,去除重复数据-- union all 合并不会去除重复数据-- 排序 order by 列 asc(升序) desc(降序)
SELECT * FROM student ORDER BY number DESCSELECT * FROM student ORDER BY height ASCSELECT * FROM student ORDER BY number DESC , height DESC-- 数量限制 limit 从0开始,显示n个信息
SELECT * FROM student LIMIT 0,1
-- 统计男生女生个有多少人
SELECT COUNT (*),gender FROM student GROUP BY gender HAVING COUNT(*)>2