寫在前面 大家好,不知道前面的20題大家寫的怎麼樣,前面分享的20題是SQL中查詢的基礎題型,這部分被稱為DQL部分,是每個學習MySQL必須要學會的部分,下麵就讓我來介紹MySQL中的其他部分。 回顧DQL部分 先介紹一下sql語句的語法和執行順序(序號代表順序由1~9): select 查詢列表 ...
寫在前面
大家好,不知道前面的20題大家寫的怎麼樣,前面分享的20題是SQL中查詢的基礎題型,這部分被稱為DQL部分,是每個學習MySQL必須要學會的部分,下麵就讓我來介紹MySQL中的其他部分。
回顧DQL部分
先介紹一下sql語句的語法和執行順序(序號代表順序由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: 指定要查詢的列或表達式,用於檢索數據。
from: 指定要查詢的表名,表示數據來自哪個表。
join: 將兩個或多個表連接起來進行查詢,有不同類型的連接(如內連接、左連接、右連接等)。
on: 指定連接條件,即指定兩個表如何關聯。
where: 篩選條件,用於過濾數據,只返回滿足條件的行。
group by: 按指定列對結果集進行分組,通常與聚合函數一起使用(如 SUM、COUNT)。
having: 對分組後的結果應用篩選條件,過濾分組後的結果集。
order by: 指定結果集的排序方式,可以是升序(ASC)或降序(DESC)。
limit: 限制查詢返回的行數,常與 offset 一起使用,表示從第幾行開始取數據,取多少行。
offset: 要顯示條目的起始索引(起始索引從0開始)。
size: 要顯示的條目個數。
當你在編寫 SQL 查詢時,通常會使用這些來獲取想要的數據,是MySQL中DQL的基本語法,要想熟練掌握它,需要不斷通過sql習題來增強記憶,學會分析問題的思路,最後就能快速地實現需求。
DML(數據操作語言)部分
以下是資料庫操作部分的語法及其示例:
插入數據:
## 方式一:insert into 表名 values(,,) ;
# 示例 :
INSERT INTO beauty
VALUES (17,'關曉彤','女',NULL,'18788888888',NULL,NULL);
## 方式二:insert into 表名 set 1,2,3;
# 示例 :
INSERT INTO beauty
SET id=18,name='張靜怡',phone='19088888888';
更新數據:
## 單表更新:
update 表名 set xx=xx ;
# 示例 :
UPDATE boys SET boyName='李晨',userCP=50
WHERE id = 3;
## 多表更新:
# (92規範)示例 :
UPDATE boys bo,beauty b
SET b.boyfriend_id = 3
WHERE bo.id = b.boyfriend_id
AND bo.id IS NULL;
# (99規範)示例 :
UPDATE boys bo
RIGHT JOIN beauty b
ON bo.id = b.boyfriend_id
SET b.boyfriend_id = 3
WHERE bo.id IS NULL;
刪除數據:
## 單表刪除:
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; -- 報錯,truncate只能用於截斷或者說是清空表。
TRUNCATE TABLE boys; 相當於清空表
delete和truncate對比
(1)delete可以加where條件,truncate不能加。
(2)truncate刪除,效率高一點。
(3)加入要刪除的表中有自增長列,如果用delete刪除後,再插入數據,自增長列的值從斷點開始,而truncate刪除後,再插入數據自增長列的值從1開始。
(4)truncate刪除沒有返回值,delete刪除有返回值。
(5)truncate刪除不能回滾,delete刪除可以回滾。
DDL(數據定義語言)部分
以下是資料庫定義部分的語法及其示例:
創建 create
#庫:
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
# 庫:
RENAME DATABASE books TO 新庫名; -- 一般不修改
# 更改庫的字元集
ALTER DATABASE books CHARACTER SET 'utf8';
# 表:
# 語法:
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
#庫:
DROP DATABASE [IF EXISTS] books;
#表:
DROP TABLE [IF EXISTS] book_author;
表的複製
# 方式一: 使用like複製表結構
CREATE TABLE 表名 LIKE author;
# 方式二: 複製結構和數據
CREATE TABLE 表名 SELECT * FROM author;
# 使用where 0和 where 1 來實現:
CREATE TABLE 表名
SELECT id,au_name
FROM author
WHERE 0; (僅僅複製表結構即欄位)
CREATE TABLE 表名
SELECT id,au_name
FROM author
WHERE 1; (結構加數據)
常見數據類型
整型: int bigint
小數定點數: DECIMAL類型 NUMERIC類型
小數浮點數: float double
字元型較短的文本:char varchar
字元型較長的文本:text blob(較長的二進位數據)
日期型: date datetime timestamp
在創表時不確定的欄位類型使用varchar(255)
好了,今天就先介紹這麼多,以後每天還會分享更多的大數據技術基礎知識!
最後附上這部分思維導圖,以便大家記憶。
DML部分:
DDL部分: