欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL 使用DQL命令查詢數(shù)據(jù)的實(shí)現(xiàn)方法

 更新時(shí)間:2019年08月13日 09:15:39   作者:CFF_伊人  
這篇文章主要介紹了MySQL 使用DQL命令查詢數(shù)據(jù)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本篇文章博主將帶大家一起學(xué)習(xí)MySQL中常用的數(shù)據(jù)查詢語言。

DQL(Data Query Language 數(shù)據(jù)查詢語言)

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] #聯(lián)合查詢
[WHERE ...]   #指定結(jié)果需要滿足的條件
[GROUP BY ...]   #指定結(jié)果按照哪幾個(gè)字段來分組
[HAVING ...]   #過濾分組的記錄必須滿足的次要條件
[ODER BY ...]   #指定查詢記錄按一個(gè)或者多個(gè)條件排序
[LIMIT [偏移量,返回結(jié)果記錄數(shù)]; #指定查詢的記錄從哪條至哪條

基本查詢語句&AS

以下例子用student表中的數(shù)據(jù)。

查詢表中所有數(shù)據(jù)列結(jié)果,采用 “*” 符號(hào),效率低

select * from student;

可指定查詢列,效率高

select StudentName,Phone from student;

 AS 子句的作用和用法

注意:AS 可省略不寫

(1)可給數(shù)據(jù)列取一個(gè)新別名  

select StudentName as '學(xué)生姓名' from student;

(2)給表取別名

select stu.address from student as stu;

(3)可把計(jì)算或總結(jié)的結(jié)果用另一個(gè)新名稱來代替

SELECT Phone +1 AS Tel FROM student;

DISTINCT 關(guān)鍵字

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

語法:

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

注意:ALL 關(guān)鍵字是默認(rèn)的,返回所有記錄,與之相反

當(dāng)過濾多列重復(fù)值時(shí),只有當(dāng)選擇過濾的列都存在重復(fù)值才進(jìn)行過濾

SELECT DISTINCT StudentNo,address from student;

過濾單列:查詢學(xué)生表中的地址

SELECT DISTINCT address from student;

SQL語句中的表達(dá)式

SELECT VERSION(),100*3 as 乘積; #返回Mysql 版本和計(jì)算結(jié)果
 
SELECT NOW() '當(dāng)前時(shí)間'; #返回當(dāng)前時(shí)間

避免SQL返回結(jié)果中包含“.” ,“*”,和括號(hào)等干擾開發(fā)語言程序

SELECT VERSION() as MySQL_V,12.3*100 as expression;
#返回結(jié)果不會(huì)與后臺(tái)開發(fā)程序發(fā)生混淆

拼接 CONCAT

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

數(shù)值類型相加

select StudentNo+100 from student;

比較運(yùn)算符&通配符

where條件語句:用于檢索數(shù)據(jù)表中符合條件的記錄

搜索條件可以由一個(gè)或多個(gè)邏輯表達(dá)式組成,結(jié)果一般為真或假

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

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

邏輯操作符

比較操作符

使用 LIKE 關(guān)鍵字進(jìn)行模糊查詢

  • 與“%”一起使用,表示匹配0個(gè)或任意個(gè)字符
  • 與“_”一起使用 表示匹配單個(gè)字符
#查詢學(xué)生表中姓張*的學(xué)生姓名
SELECT StudentName from student where studentname like '張_';
 
SELECT StudentName from student where studentname like '%麗%';
# IN
SELECT * from student where Address in ('四川','上海');

注意:

  • 數(shù)值數(shù)據(jù)類型的記錄之間才能進(jìn)行算數(shù)運(yùn)算
  • 相同的數(shù)據(jù)類型的數(shù)據(jù)之間才能進(jìn)行比較

NULL

  • null 代表“無值”
  • 區(qū)別于零值0和空字符串“ ”
  • 只能出現(xiàn)在定義允許為NULL的字段
  • 須使用 IS NULL 或 IS NOT NULL 比較操作符去比較

內(nèi)連接&自查詢

如果需要多張數(shù)據(jù)表的數(shù)據(jù)進(jìn)行查詢,則可以通過連接運(yùn)算符實(shí)現(xiàn)多個(gè)查詢。

分類包括:

  • 內(nèi)連接(inner  jion):
    • 等值和非等值的連接查詢
    • 自身連接查詢
  • 外連接(out  jion)
    • 左連接(LEFT JION)
    • 右連接(RIGHT JION)

ORDER BY 排序查詢

對(duì)select 語句查詢得到的結(jié)果,按某些字段進(jìn)行排序

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

以subject表和grade表數(shù)據(jù)為例:

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

多字段排序:先按照第一個(gè)字段排序,再按照第二個(gè)字段排序。如果第一個(gè)字段數(shù)據(jù)相同,再按照第二個(gè)字段排序。

SELECT * from subject ORDER BY classHour,GradeID;

LIMIT分頁(yè)

LIMIT   [m,] n  或  LIMIT  n  OFFSET  m

限制SELECT返回結(jié)果的行數(shù)

m為第一個(gè)返回記錄行的偏移量

n返回記錄行的數(shù)目

注意:

  • m不指定,則偏移量為0,從第一條開始返回前n條記錄
  • LIMIT 常用于分頁(yè)顯示
  • 如果超出表中數(shù)據(jù),則顯示全部

例如:

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

 總記錄數(shù):total

SELECT COUNT(subjectNO) '總數(shù)據(jù)' from subject;

總頁(yè)數(shù):int  totalPage = total % pagesize ==0 ? total / pagesize : total  / pagesize  + 1

子查詢

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

注意:子查詢返回的結(jié)果一般是集合,建議使用IN關(guān)鍵字

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

聚合函數(shù)

常用的統(tǒng)計(jì)函數(shù):COUNT()、SUM()、AVG()、MAX()、MIN()

SELECT COUNT(StudentNo) '總數(shù)據(jù)' FROM student;
SELECT sum(classHour) '總學(xué)時(shí)'from subject;
SELECT AVG(classHour) '平均學(xué)時(shí)' FROM subject;
SELECT MAX(classHour) '最長(zhǎng)學(xué)時(shí)' FROM subject;
SELECT MIN(classHour) '最短學(xué)時(shí)' FROM subject;

分組 GROUP BY

使用 GROUP BY 關(guān)鍵字對(duì)查詢結(jié)果分組

  • 對(duì)所有的數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì)
  • 分組的字段可以有多個(gè),并依次分組
  • 與 HAVING 結(jié)合使用,進(jìn)行分組后的數(shù)據(jù)篩選

以 student 表為例

(1)對(duì)student 表按照地址分組統(tǒng)計(jì)  group by

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

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

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

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

合并 UNION 、UNION

  •  ALLUNION #合并完全相同數(shù)據(jù)
  • UNION ALL     #合并所有數(shù)據(jù)

注意:合并兩張表時(shí),列數(shù)必須一樣才能合并。

兩表列數(shù)不同時(shí),會(huì)報(bào)以下錯(cuò)誤:

     [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;

子查詢   EXISTS ——>true  false

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

(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);

(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);

子查詢(any & all)

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

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mysql使用全文索引(FullText?index)的實(shí)例代碼

    Mysql使用全文索引(FullText?index)的實(shí)例代碼

    使用索引時(shí)數(shù)據(jù)庫(kù)性能優(yōu)化的必備技能之一,下面這篇文章主要給大家介紹了關(guān)于Mysql使用全文索引(FullText?index)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • macOS 下的 MySQL 8.0.17 安裝與簡(jiǎn)易配置教程圖解

    macOS 下的 MySQL 8.0.17 安裝與簡(jiǎn)易配置教程圖解

    這篇文章主要介紹了macOS 下的 MySQL 8.0.17 安裝與簡(jiǎn)易配置教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • MySQL系列之十三 MySQL的復(fù)制

    MySQL系列之十三 MySQL的復(fù)制

    這篇文章主要介紹了MySQL系列之十三 MySQL的復(fù)制,詳細(xì)的講述了多種復(fù)制架構(gòu)的案例和MySQL復(fù)制相關(guān)概念等,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • mysql中cast函數(shù)用法小結(jié)

    mysql中cast函數(shù)用法小結(jié)

    在MySQL中,CAST函數(shù)用于將一個(gè)表達(dá)式轉(zhuǎn)換為指定的數(shù)據(jù)類型,本文主要介紹了mysql中cast函數(shù)用法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • MySQL啟動(dòng)報(bào)錯(cuò):Starting MySQL.. ERROR! The server quit without updating PID file的問題分析和解決

    MySQL啟動(dòng)報(bào)錯(cuò):Starting MySQL.. ERROR! The se

    這篇文章給大家介紹了MySQL啟動(dòng)報(bào)錯(cuò):Starting MySQL.. ERROR! The server quit without updating PID file的問題分析和解決辦法,文中給出了詳細(xì)的原因分析,需要的朋友可以參考下
    2023-12-12
  • mysql like模糊匹配,按照匹配度排序方式

    mysql like模糊匹配,按照匹配度排序方式

    這篇文章主要介紹了mysql like模糊匹配,按照匹配度排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Mysql如何查看表的索引

    Mysql如何查看表的索引

    這篇文章主要介紹了Mysql如何查看表的索引問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 深入了解mysql長(zhǎng)事務(wù)

    深入了解mysql長(zhǎng)事務(wù)

    這篇文章主要介紹了mysql長(zhǎng)事務(wù)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)mysql,感興趣的朋友可以了解下
    2020-08-08
  • MySQL延時(shí)復(fù)制庫(kù)方法詳解

    MySQL延時(shí)復(fù)制庫(kù)方法詳解

    我相信很多人都遭遇過MySQL主從復(fù)制延遲的問題,處理方案基本上就是你能搜索到的那些,那么我今天卻要說說如何讓MySQL延遲復(fù)制。對(duì)于剛組建的團(tuán)隊(duì)來說,這可能會(huì)救了你的項(xiàng)目
    2020-02-02
  • mysql中使用UDF自動(dòng)同步memcached效率筆記

    mysql中使用UDF自動(dòng)同步memcached效率筆記

    接上篇:mysql使用mysql-udf-http效率測(cè)試筆記 ,這次不使用rest架構(gòu),而是使用:libmemcached和memcached_functions_mysql
    2011-08-08

最新評(píng)論