首先,非常感謝大家對上篇博文的支持,真是讓本菜受寵若驚,同時對拖了這么久才出了此篇表示抱歉。
前言:此文旨在匯總從建立數(shù)據(jù)庫到聯(lián)接查詢等絕大部分SQL語句。SQL語句雖不能說很多,但稍有時間不寫就容易出錯。博主希望通過此文來戰(zhàn)勝自己的健忘,如果大家認(rèn)可也可以保留起來。
?
"SQL"是 "Structured Query Language" 即“結(jié)構(gòu)化查詢語言”的簡稱,它是用來管理關(guān)系型數(shù)據(jù)庫的。
其包括:
CREATE
DATABASE
數(shù)據(jù)庫名;
CREATE
DATABASE
test_sql
此圖為SQLyog的左側(cè)目錄欄,前三個為本地自帶數(shù)據(jù)庫。將SQL語句全部選中運(yùn)行(F8)后,F(xiàn)5刷新目錄欄,出現(xiàn)了我們創(chuàng)建的數(shù)據(jù)庫。
?
連接數(shù)據(jù)庫:
USE
test_sql;
刪除數(shù)據(jù)庫:
DROP
DATABASE
test_sql;
?
接下來就開始創(chuàng)建表了,在創(chuàng)建表之前先列出幾種常用的數(shù)據(jù)類型
整數(shù)數(shù)據(jù)類型:
- INT 大小:4字節(jié)
- BIGINT 大小:8字節(jié)
浮點(diǎn)數(shù)據(jù)類型:
- FLOAT 大小:4字節(jié) 精度:7位小數(shù)
- DOUBLE 大小:8字節(jié) 精度:15位小數(shù)
字符串?dāng)?shù)據(jù)類型:
- VARCHAR 范圍:0-65535
日期數(shù)據(jù)類型:
- DATE 大小:3字節(jié) 格式:YYYY
- DATETIME 大小:8字節(jié) 格式:YYYY-MM-DD
?
創(chuàng)建表:
CREATE
TABLE
<
表名
>
(
<
列名
>
<
列的數(shù)據(jù)類型
>
[
<列的約束>
]
);
如:
CREATE
TABLE
t_student(
student_name
VARCHAR
(
10
),
student_birthday
DATETIME
,
student_phone
INT
,
student_score
FLOAT
);
上表中我們創(chuàng)建了一張學(xué)生表,并定義了姓名、生日、電話、得分四列,列名后加上數(shù)據(jù)類型。 其中要注意的是VARCHAR需要在括號內(nèi)設(shè)置字符串的最大長度。
刷新之后就可以看到我們創(chuàng)建的數(shù)據(jù)庫中多了一張表:
選擇打開表可以直觀的看到內(nèi)容:
之后我們可以通過SQL語句也可以通過手動為表添加內(nèi)容。
?
刪除表:
DROP
TABLE
t_student;
?
復(fù)制表:
CREATE
TABLE
copy_student
SELECT
*
FROM
t_student;
如此我們便復(fù)制了一張名為 copy_student 的表,它包括 t_student 表中的內(nèi)容與結(jié)構(gòu)。 注意:復(fù)制表的同時表的約束并不能復(fù)制過來。
?
只復(fù)制表結(jié)構(gòu)而不復(fù)制表內(nèi)容:
CREATE
TABLE
copy_student
SELECT
*
FROM
t_student
WHERE
1
=
0
;
只需在WHERE條件中加入一個永不為真的值即可。
?
修改表
添加新列:
ALTER
TABLE
t_student
ADD
student_address
VARCHAR
(
50
);
更改列:
ALTER
TABLE
t_student
CHANGE
student_birthday student_age
INT
;
這里我們把學(xué)生生日列改為學(xué)生年齡列, CHANGE 后第一個為舊列名,第二個為新列名。
刪除列:
ALTER
TABLE
t_student
DROP
COLUMN
student_score;
?
數(shù)據(jù)庫完整性
保證數(shù)據(jù)庫的完整性是為了防止垃圾數(shù)據(jù)的產(chǎn)生,以免影響數(shù)據(jù)庫的執(zhí)行效率。這里簡要說一些,因?yàn)楫吘共皇抢碚擃惖奈恼拢@里主要是整理匯總SQL語句。
分類:
CREATE
TABLE
t_student(
student_id
INT
PRIMARY
KEY
,
student_name
VARCHAR
(
10
),
student_birthday
DATETIME
,
student_phone
INT
,
student_score
FLOAT
);
?
實(shí)體完整性--唯一約束:
UNIQUE
唯一約束是指給定列的值必須唯一,與主鍵約束不同的是它可以為空。通常加在表中不能重復(fù)的信息中,如電話號碼。
CREATE
TABLE
t_student(
student_id
INT
PRIMARY
KEY
,
student_name
VARCHAR
(
10
),
student_birthday
DATETIME
,
student_phone
INT
UNIQUE
,
student_score
FLOAT
);
?
域完整性--非空約束:
NOT NULL
非空約束可以加在諸如姓名等列上。
CREATE
TABLE
t_student(
student_id
INT
PRIMARY
KEY
,
student_name
VARCHAR
(
10
)
NOT
NULL
,
student_birthday
DATETIME
,
student_phone
INT
UNIQUE
,
student_score
FLOAT
);
?
域完整性--默認(rèn)約束:
設(shè)定默認(rèn)值后,可以在添加此列時不指定值,數(shù)據(jù)庫會自動填充設(shè)定的默認(rèn)值。
DEFAULT
現(xiàn)給學(xué)生表加入性別列,默認(rèn)值設(shè)為“男”,這樣添加新的學(xué)生信息時如果沒有填寫具體的性別均會默認(rèn)為男性:
CREATE
TABLE
t_student(
student_id
INT
PRIMARY
KEY
,
student_name
VARCHAR
(
10
)
NOT
NULL
,
student_sex
VARCHAR
(
5
)
DEFAULT
'
男
'
,
student_birthday
DATETIME
,
student_phone
INT
UNIQUE
,
student_score
FLOAT
);
?
引用完整性--外鍵約束:
外鍵約束是指在外鍵關(guān)聯(lián)主鍵上強(qiáng)制加上一個約束,如果違反該約束,則不允許該條數(shù)據(jù)的修改。
創(chuàng)建主表--班級表:
CREATE
TABLE
t_class(
class_id
INT
PRIMARY
KEY
,
class_name
VARCHAR
(
20
)
UNIQUE
NOT
NULL
);
)
創(chuàng)建從表--學(xué)生表,并設(shè)置外鍵約束:
CREATE
TABLE
t_student(
student_id
INT
PRIMARY
KEY
,
s_c_id
INT REFERENCES
t_class(class_id),
student_name
VARCHAR
(
10
)
NOT
NULL
,
student_sex
VARCHAR
(
5
)
DEFAULT
'
男
'
,
student_birthday
DATETIME
,
student_phone
INT
UNIQUE
,
student_score
FLOAT
CONSTRAINT FOREIGN KEY(s_c_id) REFERENCES t_class(class_id);
?
紅色標(biāo)識的就是創(chuàng)建外鍵約束的方法,個人認(rèn)為也是SQL語句中最難記的。
?
本篇博文先到這里,寫起來才發(fā)現(xiàn)SQL比想像的多啊,所以初步打算分為三篇。第二篇講數(shù)據(jù)增刪改查這些操作、聚合函數(shù)及分組,第三篇講SQL的子查詢、組合查詢以及連接查詢。
感謝您的瀏覽,希望能對您有所幫助。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

