日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

數(shù)據(jù)庫基本增刪改查語法和多表連查的方式

作者:柒畫503 更新時(shí)間: 2022-09-22 編程語言

目錄

一、什么是數(shù)據(jù)庫?

二、常見的數(shù)據(jù)庫

三、SQL語句分類

四、DML (數(shù)據(jù)操作語言)基本語法

五、DQL(數(shù)據(jù)查詢語言)

常用的聚合函數(shù)


一、什么是數(shù)據(jù)庫?

數(shù)據(jù)庫(Database,簡稱DB)概念:

長期存放在計(jì)算機(jī)內(nèi),有組織、可共享的大量數(shù)據(jù)的集合,是一個(gè)數(shù)據(jù)“倉庫”。

作用:存放、管理數(shù)據(jù)

分類:關(guān)系型數(shù)據(jù)庫、nosql數(shù)據(jù)庫

二、常見的數(shù)據(jù)庫

關(guān)系數(shù)據(jù)庫:MySQL、Oracle、postgresql

非關(guān)系數(shù)據(jù)庫:MongoDB

三、SQL語句分類

SQL語句,即結(jié)構(gòu)化查詢語言(Structured Query Language),是一種特殊目的的編程語言,是一
種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng),同時(shí)也是數(shù)據(jù)庫腳本文件的擴(kuò)展名。
名詞 解釋 命令
DDL (數(shù)據(jù)定義語言)
定義和管理數(shù)據(jù)對(duì)象, 如數(shù)據(jù)庫,數(shù)據(jù)表等
CREATE、DROP、ALTER
DML (數(shù)據(jù)操作語言)
用于操作數(shù)據(jù)庫對(duì)象中所包含的數(shù)據(jù)
INSERT、UPDATE、DELETE
DQL(數(shù)據(jù)查詢語言)
用于查詢數(shù)據(jù)庫數(shù)據(jù)
SELECT
DCL (數(shù)據(jù)控制語言)
用來管理數(shù)據(jù)庫的語言,包括管理權(quán)
限及數(shù)據(jù)更改
GRANT、COMMIT、ROLLBACK

四、DML (數(shù)據(jù)操作語言)基本語法

1.增加數(shù)據(jù)

語法:

INSERT INTO `表名` [(`字段1`,`字段2`,...`字段n`)]? VALUES/VALUE ('值1','值2',...'值n')[,('值1','值2',...'值n')...];

?注意:

其中:
?“[]” 包含的內(nèi)容可以省略;
? 字段或值之間用英文逗號(hào)隔開;
? 可同時(shí)插入多條數(shù)據(jù),values 后用英文逗號(hào)隔開;
? values和value的方式均可

2.?修改數(shù)據(jù)

語法:

UPDATE 表名 SET `字段名1` = '值1' [ , `字段名2` = '值2', …. ]? [ WHERE 條件];

注意:

其中:
?“[]” 包含的內(nèi)容可以省略;
? `字段名`為要更改數(shù)據(jù)的字段,'值'表示字段改后的值,注意字段和值的對(duì)應(yīng);
? 可同時(shí)修改多個(gè)字段,多個(gè)字段后用英文逗號(hào)隔開;
?“WHERE”是where子句,可以給修改增加條件;
? 條件:為篩選條件,如不指定則修改該表的所有列數(shù)據(jù)。

3.刪除數(shù)據(jù)

語法:

DELETE FROM 表名 [ WHERE 條件];

?注意:

其中:
?“[]” 包含的內(nèi)容可以省略;
? “WHERE”可以通過where子句增加刪除的條件。

五、DQL(數(shù)據(jù)查詢語言)

DQL(Data Query Language 數(shù)據(jù)查詢語言)。用途是查詢數(shù)據(jù)庫數(shù)據(jù),如SELECT語句。是SQL語句 中最核心、最重要的語句,也是使用頻率最高的語句。其中,可以根據(jù)表的結(jié)構(gòu)和關(guān)系分為單表查詢和多表聯(lián)查。
查詢語法
SELECT [DISTINCT]
{*|表1.*|[ 表1.字段1 [as 字段別名1]
[, 表1.字段2[as 字段別名2]][, …]]}
FROM 表1 [ as 表別名 ]
[ left|right|inner join 表2 on 表之間
的關(guān)系 ]
[ WHERE ]
[ GROUP BY ]
[ HAVING]
[ ORDER BY]
[ LIMIT {[ 位置偏移量,] 行數(shù) }] ;
注意:
其中:
?“[ ]”包含的內(nèi)容可以省略;
?“{ }”包含的內(nèi)容必須存在;
DISTINCT
設(shè)定DISTINCT可以去掉重復(fù)記錄。
AS
表名或者字段名過長時(shí),可以用AS關(guān)鍵字起別名,方便操作。
GROUP BY
按組分類顯示查詢出的數(shù)據(jù)。
HAVING
GROUP BY分組時(shí)依賴的分組條件。
ORDER BY
將查詢出來的結(jié)果集按照一定順序排序完成。
LIMIT
限制顯示查詢結(jié)果的條數(shù)。
一、單表查詢
針對(duì)數(shù)據(jù)庫中的一張數(shù)據(jù)表進(jìn)行查詢,可以通過各種查詢條件和方式去做相關(guān)的優(yōu)化。
1. 指定字段列
SELECT * | 字段名1, 字段名2...? FROM 表名
*??表示所查詢的數(shù)據(jù)庫表的全部字段。
2. 表別名和字段別名
SELECT 表別名.字段名1 AS 字段別名1, 表別名.字段名2 AS 字段別名2 FROM 表名 AS 表別名
? “.” 當(dāng)前表存在的字段;
? “AS”可忽略不寫,“AS”的功能如下:
????????? 給字段取一個(gè)新別名;
????????? 給表取一個(gè)新別名;
????????? 把經(jīng)計(jì)算或總結(jié)的結(jié)果用另外一個(gè)新名稱來代替
3. DISTINCT
SELECT DISTINCT 字段名1, 字段名2...
去掉SELECT查詢返回的記錄結(jié)果中重復(fù)的記錄(所有返回列的值都相同),只返回一條。
FROM 表名
4. WHERE條件子句
SELECT * FROM 表名 [ WHERE 條件];
? WHERE條件子句不是必須的;
? WHERE子句,可以給查詢?cè)黾訔l件;
? 條件:為篩選條件,如不指定則修改該表的所有數(shù)據(jù)。
5. LIKE 關(guān)鍵字
SELECT * FROM 表名 WHERE 字段 LIKE 條件;
? 在WHERE子句中,使用LIKE關(guān)鍵字進(jìn)行模糊查詢;
? 與“%”一起使用,表示匹配0或任意多個(gè)字符;
? 與“_”一起使用,表示匹配單個(gè)字符
6. IN 關(guān)鍵字
SELECT * FROM 表名 WHERE 字段 IN (值1,值2...);
? 查詢的字段的值,至少與IN 后的括號(hào)中的一個(gè)值相同;
? 多個(gè)值之間用英文逗號(hào)隔開。
7. NULL 值查詢
SELECT * FROM 表名 WHERE 字段 IS NULL | IS NOT NULL
? NULL代表“無值”;
? 區(qū)別于零值0和空符串;
? 只能出現(xiàn)在定義允許為NULL的字段;
? 須使用 IS NULL 或 IS NOT NULL 比較操作符去比較。
8. GROUP BY和HAVING分組
GROUP BY
1、對(duì)所有的數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì);
2、分組的依據(jù)字段可以有多個(gè),并依次分組。
HAVING
與GROUP BY結(jié)合使用,進(jìn)行分組后的數(shù)據(jù)篩選。

常用的聚合函數(shù)

函數(shù)名 返回值
AVG(col)
返回指定列的平均值
COUNT(col)
返回指定列中非NULL值的個(gè)數(shù)
MIN(col)
返回指定列的最小值
MAX(col)
返回指定列的最大值
SUM(col)
返回指定列的所有值之和

9.ORDER BY排序

SELECT * FROM 表名 ORDER BY 字段名 [DESC|ASC]
? ORDER BY 表示對(duì)SELECT語句查詢得到的結(jié)果,按字段名進(jìn)行排序;
? DESC表示排序的順序?yàn)榻敌颍珹SC表示排序的順序?yàn)樯颍?
?“[ ]”包含的內(nèi)容可以省略。
10. LIMIT關(guān)鍵字
SELECT * FROM 表名 LIMIT [n , m ]
? LIMIT關(guān)鍵字是MySQL特有關(guān)鍵字;
? LIMIT限制SELECT返回結(jié)果的行數(shù);
? n 表示第一條記錄的偏移量,m 表示顯示記錄的數(shù)量;
?“[ ]”包含的內(nèi)容可以省略。
二、多表查詢
針對(duì)數(shù)據(jù)庫中兩張或者兩張以上的表同時(shí)進(jìn)行查詢,依賴的手段有復(fù)雜查詢和嵌套查詢。
1. 等值查詢和非等值查詢
非等值查詢:SELECT * FROM 表1,表2
等值查詢:SELECT * FROM 表1,表2 WHERE 表1.字段1 = 表2.字段2...
? 與單表查詢類似,都是SELECT語句;
? 把多個(gè)表放到FROM后,并用逗號(hào)隔開;
? 可使用AS關(guān)鍵字取別名,便于引用;
? 如無重名查詢字段則可省略數(shù)據(jù)表的指定。
2. 連接查詢
SELECT * FROM 表1 LEFT|right|INNER JOIN 表2 ON 條件
LEFT JOIN
從左表(表1)中返回所有的記錄,即便在右
(表2)中沒有匹配的行。
RIGHT JOIN
從右表(table_2)中返回所有的記錄,即便
在左(table_1)中沒有匹配的行。
INNER JOIN
在表中至少一個(gè)匹配時(shí),則返回記錄。
3.UNION
union 是求兩個(gè)查詢的并集。
select A.field1 as f1, A.field2 as f2 from <table1> A
union
(select B.field3 as f1, field4 as f2 from <table2> B)
order by 字段 desc/asc
注意:
1列名不一致時(shí),會(huì)以第一張表的表頭為準(zhǔn),并對(duì)其欄目。
2會(huì)將重復(fù)的行過濾掉。
3如果查詢的表的列數(shù)量不相等時(shí),會(huì)報(bào)錯(cuò)。
4在每個(gè)子句中的排序是沒有意義的,mysql在進(jìn)行合并的時(shí)候會(huì)忽略掉。
5如果子句中的排序和limit進(jìn)行結(jié)合是有意義的。
6可以對(duì)合并后的整表進(jìn)行排序

原文鏈接:https://blog.csdn.net/weixin_56373368/article/details/126821911

欄目分類
最近更新