表格為:
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