国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)庫的基礎學習1:select語句的查詢

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)庫的基礎學習1:select語句的查詢。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

數(shù)據(jù)庫的三個階段:人工管理階段、文件系統(tǒng)階段、數(shù)據(jù)庫系統(tǒng)階段

數(shù)據(jù)庫管理系統(tǒng):DBMS

常見的關系型數(shù)據(jù)庫:Oracle、DB2、mysql

常見的非關系型數(shù)據(jù)庫:MongoDB、redies

sql的四部分:

DML(update、delete、insert)

DDL(create、drop、alter、truncate)

DQL(select查詢語句)

DCL(對數(shù)據(jù)進行變更)


MySQL數(shù)據(jù)庫的常見操作:

查看所有數(shù)據(jù)庫:show databases;

查看以a開頭的數(shù)據(jù)庫:show databases like 'a%';

創(chuàng)建數(shù)據(jù)庫:create database if not? exists 數(shù)據(jù)庫名;

刪除數(shù)據(jù)庫:drop database if exists 數(shù)據(jù)庫名;

注:在數(shù)據(jù)庫的語法規(guī)定里是不區(qū)分大小寫,但通常關鍵字大寫,數(shù)據(jù)庫名、表名、字段名小寫


查詢數(shù)據(jù):

提示:使用select語句進行查詢數(shù)據(jù),語法格式如下

SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表達式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]

下面我們來分條解析使用select 的語法格式:

  • {*|<字段列名>}包含星號通配符的字段列表,表示所要查詢字段的名稱。
  • <表 1><表 2>…,表 1 和表 2 表示查詢數(shù)據(jù)的來源,可以是單個或多個。
  • WHERE <表達式>是可選項,如果選擇該項,將限定查詢數(shù)據(jù)必須滿足該查詢條件。
  • GROUP BY< 字段 >,該子句告訴 MySQL 如何顯示查詢出來的數(shù)據(jù),并按照指定的字段分組。
  • [ORDER BY< 字段 >],該子句告訴 MySQL 按什么樣的順序顯示查詢出來的數(shù)據(jù),可以進行的排序有升序(ASC)和降序(DESC),默認情況下是升序。
  • [LIMIT[<offset>,]<row count>],該子句告訴 MySQL 每次顯示查詢出來的數(shù)據(jù)條數(shù)

查詢表中所有字段或指定字段,字段去重distinct

? 所有字段:

  • 使用“*”通配符查詢所有字段,語法格式:SELECT * FROM 表名;? 給所有的字段內容去重在*前面加distinct即可。
  • 在select后面列出表的所有字段名,用 英文的逗號? , 分隔開。 在第一個字段名前面加distinct即可。

? 指定字段:

  • 在select后跟指定字段名稱即可;去重在字段名前加distinct。? ? ?

表名很長時,可以在標明后面 通過 AS 關鍵字 為表指定一個別名;字段也是 語法一樣,可以給字段也指定別名。

表名 AS 別名;
字段名 AS 別名;

limit:可以限制文件的輸出條數(shù)和輸出位置

LIMIT 初始位置,輸出條數(shù)    --下表是從0開始
LIMIT 輸出條數(shù)  --默認從第一條開始
LIMIT 輸出條數(shù) OFFSET 初始位置

?order by:對查詢結果通過某一字段排序(可以通過字段名排序)

ORDER BY <字段名> [ASC|DESC]?   --ASC是默認的升序的 如果不寫,默認ASC , desc是降序

where 條件查詢語句?

  • 帶比較運算符和邏輯運算符的查詢條件
  • 帶 BETWEEN AND OR關鍵字的查詢條件
  • 帶 IS NULL 關鍵字的查詢條件
  • 帶 IN 關鍵字的查詢條件
  • 帶 LIKE 關鍵字的查詢條件
--查詢日本2018年的電影
SELECT * FROM 表名
WHERE 字段名='日本'AND 字段名='2018';
--查詢在 xian上映或者在中國大陸上映且類型為喜劇/奇幻/古裝的影片信息
SELECT * FROM cinema_later
WHERE city='xian'OR (region='中國大陸'AND tag='喜劇/奇幻/古裝');
--模糊查詢
--查詢以人結尾,前面有任意字符的title
SELECT *FROM cinema_later
WHERE title LIKE '%人';

--查詢包含有人字的title
SELECT * FROM cinema_later
WHERE title LIKE '%人%';

--查詢人字前面有固定字符(兩個下劃線表示),但以任意字符結尾的
SELECT * FROM cinema_later
WHERE title LIKE '__人%';

--默認不區(qū)分   加binary按照區(qū)分大小寫字母查詢,
SELECT * FROM cinema_later
WHERE city LIKE BINARY 'C%';
--范圍區(qū)間查詢between
-- 5000到8000之間,且上映城市為xian的
SELECT * FROM cinema_later
WHERE (wish_count BETWEEN 5000 and 8000)AND city='xian';
--查詢英文片名為null的影片
SELECT * FROM north_american_box_office
WHERE yingwenpianming IS NULL
--查詢英文片名不為null的影片
SELECT * FROM north_american_box_office
WHERE yingwenpianming IS not NULL
--查詢當日票房為100或200或300的
SELECT *FROM north_american_box_office
WHERE dangripiaofang IN(100,200,300);

?group by 分組

group by單獨使用時,后面跟字段名即可。GROUP BY 關鍵字也可以和 GROUP_CONCAT() 函數(shù)一起使用。這樣可以把分組的某一字段的每個字段值都顯示。

SELECT 分組的字段名, GROUP_CONCAT(傳入需要全部顯示的字段名) 
FROM 表名
GROUP BY 分組的字段名;

在數(shù)據(jù)統(tǒng)計時,GROUP BY 關鍵字經(jīng)常和聚合函數(shù)一起使用。聚合函數(shù)包括: COUNT()SUM(),AVG(),MAX() MIN()。

  1. COUNT() 用來統(tǒng)計記錄的條數(shù);
  2. SUM() 用來計算字段值的總和;
  3. AVG() 用來計算字段值的平均值;
  4. MAX() 用來查詢字段的最大值;
  5. MIN() 用來查詢字段的最小值。
SELECT sex,COUNT(sex) FROM tb_students_info  GROUP BY sex;  --統(tǒng)計指定的字段的數(shù)量

WITH POLLUP 關鍵字用來在打印所有分組記錄的最后加上一條記錄,這條記錄是上面所有記錄的總和,即統(tǒng)計記錄數(shù)量。?GROUP BY sex WITH ROLLUP;

having 可以用來過濾分組的一些信息,類似where,支持where里所有的操作。但也有差異

  • where用于過濾數(shù)據(jù)行,having用于過濾分組
  • where查詢不可以使用聚合函數(shù),having可以使用聚合函數(shù)。
  • where語句是在分組前進行過濾,而having是在分組后進行過濾。
  • where是根據(jù)數(shù)據(jù)庫文件過濾,而having是根據(jù)查詢結果進行過濾。(having查詢的結果必須select有查詢)
  • where查詢中不可以使用字段別名,但having可以使用字段別名。

表連接:

表連接分為三種:交叉連接、內連接、外連接

交叉連接相當于兩個表的笛卡爾積,和內連接不加過濾條件是一樣的效果。交叉用的較少,因為效率不高。使用的關鍵字是cross join 也可以省略。使用語法如下

SELECT <字段名> FROM <表1> CROSS JOIN <表2> [WHERE子句]
或者
SELECT <字段名> FROM <表1>, <表2> [WHERE子句] 

?內連接:通過關鍵字inner join 來連接兩張表。再通過on來設置內連條件(通過條件來連接對應的數(shù)據(jù)行,有對應匹配關系),如果不加on設置條件,則也相當于計算兩個表的笛卡爾積。且多個表連接時,在from后面繼續(xù)使用inner join on即可實現(xiàn)多表連接。

SELECT *
FROM resource AS b
INNER JOIN resource_type AS a
ON a.type_id=b.resource_type
--多表查詢
SELECT *
FROM material_record_info AS a
INNER JOIN material_info AS b1
ON a.m_id=b1.material_id
INNER JOIN user_info AS b2
ON a.u_id=b2.user_id

外連接:?外連接會先將表分為基表和參考表,再以基表為依據(jù)返回滿足和不滿足條件的記錄,外連接分為左連接和右連接。

左外連接和右外連接的區(qū)別是:左外連接即基表在關鍵字left outer join的左邊,右外連接基表在關鍵字left outer join的右邊。

那么基表有什么意義和作用呢?就是在進行條件匹配時,基表沒有匹配到對應數(shù)據(jù)的數(shù)據(jù)行也會被返回,在沒有匹配到對應數(shù)據(jù)的行里用null來填充。簡單來說就是基表的所有數(shù)據(jù)行均會被返回。

外連接的使用語法和內連接很類似,只是在關鍵字前加了限定詞left或者right

SELECT *
FROM resource_type AS a
LEFT OUTER JOIN resource AS b
ON a.type_id=b.resource_type

子查詢:? ?

子查詢也可以實現(xiàn)類似于表連接的多表查詢,但也有區(qū)別,子查詢是將一個查詢語句嵌套在另一條查詢語句里。其中,連接子查詢的操作符可以是 in、not in、exists、not exists等關鍵字。子查詢可以在select、update、delete里使用。

--查大于80分的教師信息  子查詢
SELECT *
FROM teacher AS t
INNER JOIN course AS c
ON t.t_id=c.t_id
WHERE c.c_id IN(
	SELECT c_id
	from score student_db
	GROUP BY c_id
	HAVING AVG(score>80)
	)
-- exists:如果符合條件,外集合返回表所有內容;加上and判斷條件,就只返回符合兩個條件的信息
SELECT *
FROM user_info AS a
WHERE EXISTS(
	SELECT *
	FROM material_record_info as b
	WHERE b.u_id=7
	)AND user_id=7;

子查詢和表連接的區(qū)別

? 一般來說,表連接都可以用子查詢來替代,反之不然,有點子查詢不能用表連接替換。子查詢比較靈活,直觀,會使sql語句更容易閱讀和編寫,適合用于篩選數(shù)據(jù)。而表連接更適合查看數(shù)據(jù)表的連接。

select查詢語句的執(zhí)行順序:

除了select查詢語句的語法順序我們需要掌握,select語句在內存的執(zhí)行順序我們也需要掌握。大題一共可以分為10步:

  1. From:計算兩個表的笛卡爾積,都到一個虛擬表V1,這是所有select語句最先執(zhí)行的操作,其操作都需要在V1的基礎上。
  2. On:從V1中篩選出符合條件的數(shù)據(jù),形成虛擬表V2。
  3. Join:將該join的數(shù)據(jù)補充到V2,形成V3。
  4. Where:執(zhí)行篩選(不能使用聚合函數(shù)),得到V4。
  5. Group By:對數(shù)據(jù)進行分組,得到V5.
  6. Having:對分組后的數(shù)據(jù)進行篩選(可以用聚合函數(shù)),篩選結果為V6。
  7. Select:得到返回列的數(shù)據(jù)V7。
  8. Distinct:去重,過濾掉重復數(shù)據(jù),得到V8。
  9. Order By:排序,得到V9。
  10. limit:返回需要的行數(shù)。

注意:文章來源地址http://www.zghlxwxcb.cn/news/detail-480544.html

  • GROUP BY 條件中,每個列必須是有效列,不能是聚合函數(shù)
  • NULL 值也會作為一個分組返回
  • 除了聚合函數(shù),SELECT 子句中的列必須在 GROUP BY 條件中

到了這里,關于數(shù)據(jù)庫的基礎學習1:select語句的查詢的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 數(shù)據(jù)庫SELECT語句

    數(shù)據(jù)庫SELECT語句

    SELECT語句 檢索單個列 SELECT prod_name FROM products; 檢索多個列 SELECT prod_id, prod_name, prod_price FROM products; 檢索所有列 SELECT * FROM products; 檢索不同的行 DISTINCT SELECT DISTINCT vend_id FROM products; 限制結果 LIMIT 帶一個值的LIMIT總是從第一行開始,給出的數(shù)為返回的行數(shù)。 帶兩個值的LIMIT可以

    2024年01月15日
    瀏覽(22)
  • MySQL數(shù)據(jù)庫增刪改查及聚合查詢SQL語句學習匯總

    MySQL數(shù)據(jù)庫增刪改查及聚合查詢SQL語句學習匯總

    目錄 數(shù)據(jù)庫增刪改查SQL語句 MySQL數(shù)據(jù)庫指令 1.查詢數(shù)據(jù)庫 2.創(chuàng)建數(shù)據(jù)庫 3.刪除數(shù)據(jù)庫 4.選擇數(shù)據(jù)庫 創(chuàng)建表table ? 查看所有表 創(chuàng)建表 查看指定表的結構 刪除表 數(shù)據(jù)庫命令進行注釋 增刪改查(CRUD)詳細說明 增加 SQL庫提供了關于時間的函數(shù):now()? 查詢 查詢表作列與列之間進

    2024年02月09日
    瀏覽(29)
  • 基本的SELECT語句——“MySQL數(shù)據(jù)庫”

    基本的SELECT語句——“MySQL數(shù)據(jù)庫”

    各位CSDN的uu們好呀,好久沒有更新小雅蘭的MySQL數(shù)據(jù)庫專欄啦,接下來一段時間,小雅蘭都會更新MySQL數(shù)據(jù)庫的知識,下面,讓我們進入今天的主題吧——基本的SELECT語句!?。?SQL概述 SQL語言的規(guī)則與規(guī)范 基本的SELECT語句 顯示表結構 過濾數(shù)據(jù) 1946 年,世界上第一臺電腦誕生

    2024年02月09日
    瀏覽(87)
  • Mysql數(shù)據(jù)庫:select from語句詳解

    ??The Begin??點點關注,收藏不迷路?? select from語句用于從數(shù)據(jù)庫中查詢數(shù)據(jù)。它由兩個組成:select 和from。 select 用于指定要查詢的列,from用于指定要查詢的表。 通過結合使用這兩個,我們可以從數(shù)據(jù)庫中選擇特定的列和行進行查詢。 下面是se

    2024年02月03日
    瀏覽(92)
  • Mysql數(shù)據(jù)庫(六):基本的SELECT語句

    Mysql數(shù)據(jù)庫(六):基本的SELECT語句

    本博主將用CSDN記錄軟件開發(fā)求學之路上親身所得與所學的心得與知識,有興趣的小伙伴可以關注博主!也許一個人獨行,可以走的很快,但是一群人結伴而行,才能走的更遠! 語法: 選擇全部列: 一般情況下,除非需要使用表中所有的字段數(shù)據(jù),最好不要使用通配符‘ *

    2024年02月08日
    瀏覽(99)
  • openGauss學習筆記-195 openGauss 數(shù)據(jù)庫運維-常見故障定位案例-分析查詢語句運行狀態(tài)

    openGauss學習筆記-195 openGauss 數(shù)據(jù)庫運維-常見故障定位案例-分析查詢語句運行狀態(tài)

    195.1 分析查詢語句運行狀態(tài) 195.1.1 問題現(xiàn)象 系統(tǒng)中部分查詢語句運行時間過長,需要分析查詢語句的運行狀態(tài)。 195.1.2 處理辦法 以操作系統(tǒng)用戶omm登錄主機。 使用如下命令連接數(shù)據(jù)庫。 postgres為需要連接的數(shù)據(jù)庫名稱,8000為端口號。 設置參數(shù)track_activities為on。 當此參數(shù)為

    2024年01月15日
    瀏覽(35)
  • 【MySQL入門】-- 數(shù)據(jù)庫簡單的SELECT語句詳解

    【MySQL入門】-- 數(shù)據(jù)庫簡單的SELECT語句詳解

    目錄 1.SQL分類 2.注釋 3.數(shù)據(jù)導入指令 4.基本的SELECT語句 5.列的別名 6.去重復行 7.顯示表結構 8.一些數(shù)據(jù)庫基本操作 1.SQL分類 SQL語言在功能上主要分為三大類: DDL(Data Defintion Language)數(shù)據(jù)定義語言:定義不同的數(shù)據(jù)庫,表,視圖,索引等,可以創(chuàng)建,刪除,修改數(shù)據(jù)庫和數(shù)據(jù)庫

    2024年02月09日
    瀏覽(93)
  • 數(shù)據(jù)庫作業(yè)——select查詢操作

    數(shù)據(jù)庫作業(yè)——select查詢操作

    創(chuàng)建數(shù)據(jù)庫 插入數(shù)據(jù) 1、顯示所有職工的基本信息。 2、查詢所有職工所屬部門的部門號,不顯示重復的部門號。 3、求出所有職工的人數(shù)。 4、列出最高工和最低工資。 5、列出職工的平均工資和總工資。 6、創(chuàng)建一個只有職工號、姓名和參加工作的新表,名為工作日期表。

    2024年02月13日
    瀏覽(28)
  • SQL數(shù)據(jù)庫的查詢操作大全(select)

    SQL數(shù)據(jù)庫的查詢操作大全(select)

    1、數(shù)據(jù)庫的連接、創(chuàng)建 2、對字段的操作:(alter table) 3、對數(shù)據(jù)的操作(插入、修改、刪除) 4、數(shù)據(jù)查詢(select) 5、多表查詢(join on) 6、約束操作 四、數(shù)據(jù)庫查詢大全(select) 1、select 字段名 from 表; 2、In查詢:用于 過濾 你所需要查詢的內容 ???????????????

    2023年04月08日
    瀏覽(20)
  • MySQL數(shù)據(jù)庫查詢語句之組函數(shù),子查詢語句

    MySQL數(shù)據(jù)庫查詢語句之組函數(shù),子查詢語句

    以組為操作單位,一組數(shù)據(jù)得到一個結果。 在沒有手動分組的前提下,整張表默認為一組數(shù)據(jù) max(列名):獲取最大值 min(列名):獲取最小值 sum(列名):獲取總和 avg(列名):獲取平均值 count(列名):統(tǒng)計值的個數(shù) 所有組函數(shù)都會自動忽略null值 在某些情況下,我們需要根據(jù)需要

    2024年01月23日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包