久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么在MySQL中使用DQL命令查詢數據

124次閱讀
沒有評論

共計 4668 個字符,預計需要花費 12 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

怎么在 MySQL 中使用 DQL 命令查詢數據?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

SELECT 語法

SELECT [ALL | DISTINCT]
{ * | table.* | [table.field1 [as alias1][,table.field2] [as alias2][,...]]}
FROM table_name [as table_alias]
[left | out | inner join table_name2] # 聯合查詢
[WHERE ...] # 指定結果需要滿足的條件
[GROUP BY ...] # 指定結果按照哪幾個字段來分組
[HAVING ...] # 過濾分組的記錄必須滿足的次要條件
[ODER BY ...] # 指定查詢記錄按一個或者多個條件排序
[LIMIT [ 偏移量,返回結果記錄數]; # 指定查詢的記錄從哪條至哪條 

基本查詢語句 AS

以下例子用 student 表中的數據。

怎么在 MySQL 中使用 DQL 命令查詢數據

怎么在 MySQL 中使用 DQL 命令查詢數據

查詢表中所有數據列結果,采用“*”符號,效率低

select * from student;

可指定查詢列,效率高

select StudentName,Phone from student;

 AS 子句的作用和用法

注意:AS 可省略不寫

(1)可給數據列取一個新別名  

select StudentName as  學生姓名  from student;

(2)給表取別名

select stu.address from student as stu;

(3)可把計算或總結的結果用另一個新名稱來代替

SELECT Phone +1 AS Tel FROM student;

DISTINCT 關鍵字

作用:去掉 SELECT 查詢出來的重復值(當所有返回值都相同時,只返回一條記錄)

語法:

SELECT DISTINCT  字段名 1,字段名 2,... from  表名 

注意:ALL 關鍵字是默認的,返回所有記錄,與之相反

當過濾多列重復值時,只有當選擇過濾的列都存在重復值才進行過濾

SELECT DISTINCT StudentNo,address from student;

過濾單列:查詢學生表中的地址

SELECT DISTINCT address from student;

SQL 語句中的表達式

SELECT VERSION(),100*3 as  乘積; # 返回 Mysql  版本和計算結果
 
SELECT NOW()  當前時間  # 返回當前時間 

怎么在 MySQL 中使用 DQL 命令查詢數據

怎么在 MySQL 中使用 DQL 命令查詢數據

避免 SQL 返回結果中包含“.”,“*”,和括號等干擾開發語言程序

SELECT VERSION() as MySQL_V,12.3*100 as expression;
#返回結果不會與后臺開發程序發生混淆 

拼接  CONCAT

SELECT CONCAT(studentName, @.com) as Email from student;

數值類型相加

select StudentNo+100 from student;

比較運算符 通配符

where 條件語句:用于檢索數據表中符合條件的記錄

搜索條件可以由一個或多個邏輯表達式組成,結果一般為真或假

搜索條件的組成:邏輯操作符、比較操作符

#where  條件語句
select * from student where address= 四川 
 
#查詢學生表中電話號碼不為空的學員姓名
select StudentName from student where Phone is not null;
 
#查詢學生表中電話號碼為空的學員姓名
select StudentName from student where Phone is null;
 
#查詢剛刪掉的數據——空值
select StudentName from student where Phone =  
 
# BETWEEN AND  適用于時間范圍 

邏輯操作符

怎么在 MySQL 中使用 DQL 命令查詢數據

比較操作符

怎么在 MySQL 中使用 DQL 命令查詢數據

使用 LIKE 關鍵字進行模糊查詢

與“%”一起使用,表示匹配 0 個或任意個字符

與“_”一起使用 表示匹配單個字符

# 查詢學生表中姓張 * 的學生姓名
SELECT StudentName from student where studentname like  張_ 
 
SELECT StudentName from student where studentname like  % 麗 % 
# IN
SELECT * from student where Address in (四川 , 上海 

注意:

數值數據類型的記錄之間才能進行算數運算

相同的數據類型的數據之間才能進行比較

NULL

null 代表“無值”

區別于零值 0 和空字符串“”

只能出現在定義允許為 NULL 的字段

須使用 IS NULL 或 IS NOT NULL 比較操作符去比較

內連接 自查詢

如果需要多張數據表的數據進行查詢,則可以通過連接運算符實現多個查詢。

分類包括:

內連接(inner  jion):

等值和非等值的連接查詢

自身連接查詢

外連接(out  jion)

左連接(LEFT JION)

右連接(RIGHT JION)

ORDER BY 排序查詢

對 select 語句查詢得到的結果,按某些字段進行排序

與 DESC(降序)或 ASC(升序)搭配使用,默認為 ASC

以 subject 表和 grade 表數據為例:

怎么在 MySQL 中使用 DQL 命令查詢數據

怎么在 MySQL 中使用 DQL 命令查詢數據

SELECT * from subject ORDER BY classhour; # 升序
SELECT * from subject ORDER BY classhour desc; # 降序 

多字段排序:先按照第一個字段排序,再按照第二個字段排序。如果第一個字段數據相同,再按照第二個字段排序。

SELECT * from subject ORDER BY classHour,GradeID;

怎么在 MySQL 中使用 DQL 命令查詢數據

LIMIT 分頁

LIMIT   [m,] n  或   LIMIT  n  OFFSET  m

限制 SELECT 返回結果的行數

m 為第一個返回記錄行的偏移量

n 返回記錄行的數目

注意:

m 不指定,則偏移量為 0,從第一條開始返回前 n 條記錄

LIMIT 常用于分頁顯示

如果超出表中數據,則顯示全部

例如:

SELECT * FROM grade LIMIT 3; # 返回前 3 條記錄
SELECT * FROM grade LIMIT 1,3; # 返回 2~4 條記錄 

怎么在 MySQL 中使用 DQL 命令查詢數據

怎么在 MySQL 中使用 DQL 命令查詢數據

  總記錄數:total

SELECT COUNT(subjectNO)  總數據  from subject;

怎么在 MySQL 中使用 DQL 命令查詢數據

總頁數:int  totalPage = total % pagesize ==0 ? total / pagesize : total  / pagesize  + 1

子查詢

在查詢語句 WHERE 條件子句中,又嵌套了另外一個查詢語句

注意:子查詢返回的結果一般是集合,建議使用 IN 關鍵字

SELECT subjectName from subject
where gradeID IN
(SELECT GradeID from grade);

怎么在 MySQL 中使用 DQL 命令查詢數據

聚合函數

常用的統計函數:COUNT()、SUM()、AVG()、MAX()、MIN()

SELECT COUNT(StudentNo)  總數據  FROM student;
SELECT sum(classHour)  總學時 from subject;
SELECT AVG(classHour)  平均學時  FROM subject;
SELECT MAX(classHour)  最長學時  FROM subject;
SELECT MIN(classHour)  最短學時  FROM subject;

分組  GROUP BY

使用 GROUP BY 關鍵字對查詢結果分組

對所有的數據進行分組統計

分組的字段可以有多個,并依次分組

與 HAVING 結合使用,進行分組后的數據篩選

以 student 表為例

怎么在 MySQL 中使用 DQL 命令查詢數據

(1)對 student 表按照地址分組統計   group by

SELECT Address,COUNT(Address) FROM student GROUP BY Address;

怎么在 MySQL 中使用 DQL 命令查詢數據

HAVING 過濾分組的記錄必須滿足的次要條件

(2)對 student 表 按照地址分組,滿足地址 = 1 的 HAVING

SELECT GROUP_CONCAT(StudentName),COUNT(Address) FROM student GROUP BY Address HAVING COUNT(Address)=1;

怎么在 MySQL 中使用 DQL 命令查詢數據

合并 UNION、UNION

 ALLUNION # 合并完全相同數據

UNION ALL     # 合并所有數據

注意:合并兩張表時,列數必須一樣才能合并。

兩表列數不同時,會報以下錯誤:

     [SQL]SELECT * FROM grade UNION SELECT * FROM student;
     [Err] 1222 – The used SELECT statements have a different number of columns

(1)合并 subject 表和  student 表

SELECT * FROM subject UNION SELECT * FROM student; 
SELECT * FROM subject UNION ALL SELECT * FROM student;

怎么在 MySQL 中使用 DQL 命令查詢數據

子查詢    EXISTS —— true  false

EXISTS  / NOT EXISTS 子查詢條件成立則顯示父查詢的結果,否則不顯示結果

(1)子查詢條件為真(grade 表中 gradeid 1~5,存在  1)

SELECT subjectName,GradeID FROM subject
WHERE EXISTS 
(SELECT * FROM grade WHERE GradeID=1);

SELECT subjectName,GradeID FROM subject
WHERE NOT EXISTS 
(SELECT * FROM grade WHERE GradeID=999);

怎么在 MySQL 中使用 DQL 命令查詢數據

(2)子查詢條件為假  (grade 表中 gradeid 1~5,不存在  999)

SELECT subjectName,GradeID FROM subject
WHERE EXISTS 
(SELECT * FROM grade WHERE GradeID=999);

SELECT subjectName,GradeID FROM subject
WHERE NOT EXISTS 
(SELECT * FROM grade WHERE GradeID=1);

怎么在 MySQL 中使用 DQL 命令查詢數據

子查詢(any all)

ANY:判斷條件中,若子查詢中任意一個值滿足條件,則執行父查詢
ALL:判斷條件中,若子查詢中所有值滿足條件,則執行父查詢
 (1)滿足條件:存在 subject.gradeid = grade.gradeid , 執行父查詢  

SELECT subjectname,gradeid FROM subject 
WHERE GradeID  =ANY
(SELECT GradeID FROM grade);

怎么在 MySQL 中使用 DQL 命令查詢數據

(2)不滿足條件:所有 subject.gradeid = grade.gradeid,不執行父查詢  

SELECT subjectname,gradeid FROM subject 
WHERE GradeID  =ALL
(SELECT GradeID FROM grade);

怎么在 MySQL 中使用 DQL 命令查詢數據

看完上述內容,你們掌握怎么在 MySQL 中使用 DQL 命令查詢數據的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計4668字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 红桥区| 宁津县| 浙江省| 会宁县| 宁国市| 平南县| 江永县| 忻州市| 托克逊县| 大英县| 察隅县| 桂林市| 崇明县| 南涧| 南平市| 东乡族自治县| 黔东| 哈尔滨市| 阿瓦提县| 榆社县| 宿州市| 北海市| 定安县| 马关县| 霸州市| 五河县| 万安县| 广饶县| 邓州市| 双牌县| 紫金县| 琼海市| 德兴市| 广饶县| 逊克县| 阿鲁科尔沁旗| 文昌市| 廊坊市| 贺州市| 鄂伦春自治旗| 开封县|