寫在前面
大家好,這部分被稱為DQL部分,是每個(gè)學(xué)習(xí)MySQL必須要學(xué)會(huì)的部分,下面就讓我來(lái)介紹MySQL中的其他部分。
DQL部分
先介紹一下sql語(yǔ)句的語(yǔ)法和執(zhí)行順序(序號(hào)代表順序由1~9):
select 查詢列表 (7) | |
from 表名 (1) | |
[ | |
join type join 表2 (2) | |
on 連接條件。 (3) | |
where 篩選條件 (4) | |
group by 分組字段 (5) | |
having 分組后的篩選 (6) | |
order by 排序的字段 (8) | |
] | |
limit [offset] ,size; (9) | |
其中: | |
select: 指定要查詢的列或表達(dá)式,用于檢索數(shù)據(jù)。 | |
from: 指定要查詢的表名,表示數(shù)據(jù)來(lái)自哪個(gè)表。 | |
join: 將兩個(gè)或多個(gè)表連接起來(lái)進(jìn)行查詢,有不同類型的連接(如內(nèi)連接、左連接、右連接等)。 | |
on: 指定連接條件,即指定兩個(gè)表如何關(guān)聯(lián)。 | |
where: 篩選條件,用于過(guò)濾數(shù)據(jù),只返回滿足條件的行。 | |
group by: 按指定列對(duì)結(jié)果集進(jìn)行分組,通常與聚合函數(shù)一起使用(如 SUM、COUNT)。 | |
having: 對(duì)分組后的結(jié)果應(yīng)用篩選條件,過(guò)濾分組后的結(jié)果集。 | |
order by: 指定結(jié)果集的排序方式,可以是升序(ASC)或降序(DESC)。 | |
limit: 限制查詢返回的行數(shù),常與 offset 一起使用,表示從第幾行開始取數(shù)據(jù),取多少行。 | |
offset: 要顯示條目的起始索引(起始索引從0開始)。 | |
size: 要顯示的條目個(gè)數(shù)。 |
當(dāng)你在編寫 SQL 查詢時(shí),通常會(huì)使用這些來(lái)獲取想要的數(shù)據(jù),是MySQL中DQL的基本語(yǔ)法,要想熟練掌握它,需要不斷通過(guò)sql習(xí)題來(lái)增強(qiáng)記憶,學(xué)會(huì)分析問(wèn)題的思路,最后就能快速地實(shí)現(xiàn)需求。
DML(數(shù)據(jù)操作語(yǔ)言)部分
以下是數(shù)據(jù)庫(kù)操作部分的語(yǔ)法及其示例:
插入數(shù)據(jù):
## 方式一:insert into 表名 values(,,) ; | |
# 示例 : | |
INSERT INTO beauty | |
VALUES (17,'關(guān)曉彤','女',NULL,'18788888888',NULL,NULL); | |
## 方式二:insert into 表名 set 1,2,3; | |
# 示例 : | |
INSERT INTO beauty | |
SET id=18,name='張靜怡',phone='19088888888'; |
更新數(shù)據(jù):
## 單表更新: | |
update 表名 set xx=xx ; | |
# 示例 : | |
UPDATE boys SET boyName='李晨',userCP=50 | |
WHERE id = 3; | |
## 多表更新: | |
# (92規(guī)范)示例 : | |
UPDATE boys bo,beauty b | |
SET b.boyfriend_id = 3 | |
WHERE bo.id = b.boyfriend_id | |
AND bo.id IS NULL; | |
# (99規(guī)范)示例 : | |
UPDATE boys bo | |
RIGHT JOIN beauty b | |
ON bo.id = b.boyfriend_id | |
SET b.boyfriend_id = 3 | |
WHERE bo.id IS NULL; |
刪除數(shù)據(jù):
## 單表刪除: | |
delete [from](單表加上,多表放表名后面)表名 where 篩選條件; | |
# 示例 : | |
DELETE FROM beauty WHERE phone LIKE '19%'; | |
## 多表刪除: | |
# 方式一:使用delete | |
DELETE b | |
FROM beauty b | |
INNER JOIN boys bo ON b.boyfriend_id = bo.id | |
WHERE bo.boyName = '汪峰'; | |
delete b | |
from beauty b , boys bo | |
where b.boyfriend_id = bo.id | |
and bo.boyName = '汪峰'; | |
# 方式二:使用truncate | |
truncate table 表名 | |
TRUNCATE TABLE boys WHERE userCP > 100; -- 報(bào)錯(cuò),truncate只能用于截?cái)嗷蛘哒f(shuō)是清空表。 | |
TRUNCATE TABLE boys; 相當(dāng)于清空表 |
delete和truncate對(duì)比
(1)delete可以加where條件,truncate不能加。 (2)truncate刪除,效率高一點(diǎn)。 (3)加入要?jiǎng)h除的表中有自增長(zhǎng)列,如果用delete刪除后,再插入數(shù)據(jù),自增長(zhǎng)列的值從斷點(diǎn)開始,而truncate刪除后,再插入數(shù)據(jù)自增長(zhǎng)列的值從1開始。 (4)truncate刪除沒有返回值,delete刪除有返回值。 (5)truncate刪除不能回滾,delete刪除可以回滾。
DDL(數(shù)據(jù)定義語(yǔ)言)部分
以下是數(shù)據(jù)庫(kù)定義部分的語(yǔ)法及其示例:
創(chuàng)建 create
#庫(kù): | |
DROP DATABASE IF EXISTS books; | |
CREATE DATABASE [IF NOT EXISTS] books; | |
#表: | |
DROP TABLE IF EXISTS books; | |
CREATE TABLE [IF NOT EXISTS] books( | |
id INT, | |
bName VARCHAR(20) | |
); |
修改 alter
# 庫(kù): | |
RENAME DATABASE books TO 新庫(kù)名; -- 一般不修改 | |
# 更改庫(kù)的字符集 | |
ALTER DATABASE books CHARACTER SET 'utf8'; | |
# 表: | |
# 語(yǔ)法: | |
alter table 表名 add | drop | modify | change column 列名 [列類型 約束]; | |
add(加字段):ALTER TABLE author ADD COLUMN age INT; | |
drop(刪字段):ALTER TABLE author DROP COLUMN age; | |
modify(修改字段類型):ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP; | |
change(修改列名):ALTER TABLE book CHANGE COLUMN publishDate pubDate DATETIME; | |
如果想修改表名:ALTER TABLE author RENAME TO book_author; | |
添加外鍵:ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES other_table(column_name) |
刪除 drop
#庫(kù): | |
DROP DATABASE [IF EXISTS] books; | |
#表: | |
DROP TABLE [IF EXISTS] book_author; |
表的復(fù)制
# 方式一: 使用like復(fù)制表結(jié)構(gòu) | |
CREATE TABLE 表名 LIKE author; | |
# 方式二: 復(fù)制結(jié)構(gòu)和數(shù)據(jù) | |
CREATE TABLE 表名 SELECT * FROM author; | |
# 使用where 0和 where 1 來(lái)實(shí)現(xiàn): | |
CREATE TABLE 表名 | |
SELECT id,au_name | |
FROM author | |
WHERE 0; (僅僅復(fù)制表結(jié)構(gòu)即字段) | |
CREATE TABLE 表名 | |
SELECT id,au_name | |
FROM author | |
WHERE 1; (結(jié)構(gòu)加數(shù)據(jù)) |
常見數(shù)據(jù)類型
整型: int bigint | |
小數(shù)定點(diǎn)數(shù): DECIMAL類型 NUMERIC類型 | |
小數(shù)浮點(diǎn)數(shù): float double | |
字符型較短的文本:char varchar | |
字符型較長(zhǎng)的文本:text blob(較長(zhǎng)的二進(jìn)制數(shù)據(jù)) | |
日期型: date datetime timestamp | |
在創(chuàng)表時(shí)不確定的字段類型使用varchar(255) |
好了,今天就先介紹這么多,以后每天還會(huì)分享更多的大數(shù)據(jù)技術(shù)基礎(chǔ)知識(shí)! 最后附上這部分思維導(dǎo)圖,以便大家記憶。 DML部分:
DDL部分:
鏈接:https://www.cnblogs.com/cjybigdatablog/p/18326252
-
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3926瀏覽量
66217 -
MySQL
+關(guān)注
關(guān)注
1文章
860瀏覽量
27930 -
SQL語(yǔ)句
+關(guān)注
關(guān)注
0文章
19瀏覽量
7167
原文標(biāo)題:MySQL基礎(chǔ)知識(shí)分享
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
DAM串口發(fā)送/接收數(shù)據(jù)的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
STM32時(shí)鐘分頻系數(shù)的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
JTAG調(diào)試的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
關(guān)于匯編語(yǔ)言的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
物聯(lián)網(wǎng)設(shè)計(jì)與開發(fā)的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
STM32定時(shí)器中斷的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
Systick中斷優(yōu)先級(jí)的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
HT32F52352的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
STM32時(shí)鐘樹的基礎(chǔ)知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
PHP基礎(chǔ)學(xué)習(xí)知識(shí)點(diǎn)匯總免費(fèi)下載

評(píng)論