mysql中的DQL查询

2023-12-14 19:48:33

表格为:

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 student

SELECT
   NAME,
   gender,
   (CASE WHEN height >=2 THEN 'A'
         WHEN height >=1.8 THEN'B'
         ELSE  'c' END
   )AS height
FROM student

-- ifnull(被检测值,默认值)
SELECT
  NAME,
  gender,
  IFNULL(height,'暂无录入身高信息') AS height
FROM  student

-- if(条件,'结果1','结果2')
SELECT
   NAME,
   gender,
   IF(height>=1.9,'高个子','正常')AS height
   FROM 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 DESC

SELECT * FROM student ORDER BY height ASC

SELECT * 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

文章来源:https://blog.csdn.net/2303_77522514/article/details/134912858
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。