【D1n910】(5/42)學(xué)習(xí)【MySQL數(shù)據(jù)庫(kù)】C++語(yǔ)言程序設(shè)計(jì) - MySQL數(shù)據(jù)庫(kù)的筆記
正常操作,正常分析,大家好,我是D1N910。本文是我學(xué)習(xí)【MySQL數(shù)據(jù)庫(kù)】C++語(yǔ)言程序設(shè)計(jì) - MySQL數(shù)據(jù)庫(kù)所做的文字筆記。


【MySQL數(shù)據(jù)庫(kù)】
P1 數(shù)據(jù)處理技術(shù)概述~1
數(shù)據(jù)處理技術(shù)的發(fā)展
人工管理階段 20世紀(jì)50年代中期之前
文件系統(tǒng)階段 20世紀(jì)50年代后期~60年代中期
數(shù)據(jù)庫(kù)階段 20世紀(jì)60年代末~至今
IBM大哥出的數(shù)據(jù)管理系統(tǒng)。1969年的時(shí)候,美國(guó)大哥出了行業(yè)的標(biāo)準(zhǔn)。1970年,IBM的大哥在A(yíng)CM的刊物上發(fā)了關(guān)系模型的概念;
復(fù)雜度高;獨(dú)立性高;冗余度低;
【相關(guān)術(shù)語(yǔ)】
數(shù)據(jù)(Data):
數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象,包括文字、圖形、圖像、聲音等
數(shù)據(jù)庫(kù)(Database):
是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合
數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS):
是位于用戶(hù)和操作系統(tǒng)之間的一層數(shù)據(jù)庫(kù)管理軟件
科學(xué)的組織和存儲(chǔ)數(shù)據(jù)、高效的獲取和維護(hù)數(shù)據(jù)
數(shù)據(jù)庫(kù)系統(tǒng)(DBS):
是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng)構(gòu)成,由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(及其開(kāi)發(fā)工具).應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)管理員(和用戶(hù))構(gòu)成
【主流的數(shù)據(jù)庫(kù)產(chǎn)品】
層次、網(wǎng)狀、關(guān)系以及非關(guān)系型
關(guān)系型應(yīng)用時(shí)間最長(zhǎng),運(yùn)用范圍最廣。
本門(mén)課就是學(xué)習(xí)關(guān)系型數(shù)據(jù)庫(kù)。
1、Oracle
Oracle Database,又名Oracle RDBMS,或簡(jiǎn)稱(chēng)Oracle。是甲骨文公司出的管理系統(tǒng)。2016年,在全球占市場(chǎng)的40%,占國(guó)內(nèi)市場(chǎng)的60%!
2、DB2
IBM DB2企業(yè)服務(wù)器版本,是美國(guó)IBM公司發(fā)展的一套關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。
環(huán)境為UNIX、Linux、IBM i、Z/OS,以及Windows服務(wù)器版本。
提出了 SQL 語(yǔ)言的前身
3、Microsoft SOL Server
Microsoft SOL Server是由美國(guó)微軟公司所推出的關(guān)系數(shù)據(jù)庫(kù)解決方案
4、MysQL
MySQL原本是一個(gè)開(kāi)放源代碼的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)
SQL 語(yǔ)言
SQL是用于對(duì)存放在計(jì)算機(jī)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行組織、管理和檢索的SQL"是Structured Query Language的縮寫(xiě).
SQL是和關(guān)系數(shù)據(jù)庫(kù)交織在一起發(fā)展起來(lái)的。
1970 Codd定義關(guān)系數(shù)據(jù)庫(kù)模式
1974 IBM開(kāi)始其System/R計(jì)劃1974 首篇文章描述SEOUEL語(yǔ)言
1986 批準(zhǔn)ANSI SOL標(biāo)準(zhǔn)
1987 批準(zhǔn)TSO SOI標(biāo)準(zhǔn)
SQL可分為:
數(shù)據(jù)查詢(xún)語(yǔ)言( DQL) : Data Query Language
select
應(yīng)用最廣泛,語(yǔ)法最靈活最復(fù)雜,課程中花時(shí)間最多
數(shù)據(jù)操縱語(yǔ)言( DML): Data Manipulation Language
insert、delete、update
用來(lái)改變數(shù)據(jù)庫(kù)中表中的數(shù)據(jù)
數(shù)據(jù)定義語(yǔ)言(DDL): Data Definition Language
create、alter、drop
創(chuàng)建、修改或者刪除數(shù)據(jù)庫(kù)對(duì)象,比如表、視圖等等
事務(wù)控制語(yǔ)言( TCL) : Transaction Control Language
commit 、rollback、savepoint
為了維護(hù)數(shù)據(jù)庫(kù)數(shù)據(jù)的一致性
數(shù)據(jù)控制語(yǔ)言( DCL): Data Control Language
grant、revoke、create user
用來(lái)進(jìn)行創(chuàng)建用戶(hù)等,對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理的操作,課程中不多
P2 1.2 MySQL基礎(chǔ)知識(shí)~1
MySQL的特點(diǎn)
性能高效
跨平臺(tái)支持
簡(jiǎn)單易用
開(kāi)源
支持多用戶(hù)
進(jìn)入MySQL
啟動(dòng)和停止MySQL服務(wù)
啟動(dòng):service mysql start
重啟:service mysql restart
停止:service mysql stop
連接MySQL服務(wù)器
語(yǔ)法
>其中
host: 主機(jī)名或IP地址
username: 登錄名
pwd: 密碼
dbname: 當(dāng)前數(shù)據(jù)庫(kù)
port:端口號(hào)
示例
> mysql -h localhost -u root -p information_schema 3306
>mysql -h 192.168.1.1 -u root -p
斷開(kāi)服務(wù)器連接 exit, quit
清屏 control + L (Mac)
可以不輸入主機(jī)號(hào),使用默認(rèn)主機(jī)號(hào)
但是如果IP地址不一樣,那么就要加
MySQL的管理
創(chuàng)建數(shù)據(jù)庫(kù)
創(chuàng)建數(shù)據(jù)庫(kù)的語(yǔ)法
其中:
dbname是新建數(shù)據(jù)庫(kù)的名稱(chēng)
示例
創(chuàng)建選課數(shù)據(jù)庫(kù) choose
*注意,我們每行語(yǔ)句都要用分號(hào)作為結(jié)尾!
查看數(shù)據(jù)庫(kù)
查看所有數(shù)據(jù)庫(kù)
語(yǔ)法:?
>其中 :
information _schema(定義了所有的數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象的信息)、performance_schema(收集mysql服務(wù)器的性能參數(shù),方便數(shù)據(jù)庫(kù)管理排查性能問(wèn)題)以及mysql(配置賬號(hào)數(shù)據(jù)等等)數(shù)據(jù)庫(kù)為系統(tǒng)數(shù)據(jù)庫(kù)。
choose數(shù)據(jù)庫(kù)為剛剛新建的數(shù)據(jù)庫(kù)顯示指定數(shù)據(jù)庫(kù)結(jié)構(gòu)
>語(yǔ)法 :?
>其中 :
dbname 是要查看的數(shù)據(jù)庫(kù)的名稱(chēng)
選擇當(dāng)前數(shù)據(jù)庫(kù)
語(yǔ)法
其中: dbname 是要設(shè)置的當(dāng)前數(shù)據(jù)庫(kù)的名稱(chēng)
示例
將choose數(shù)據(jù)庫(kù)設(shè)置為當(dāng)前數(shù)據(jù)庫(kù)
這個(gè)是我們連接數(shù)據(jù)庫(kù)的時(shí)候直接在后面加上數(shù)據(jù)庫(kù)的名稱(chēng)有一樣的作用
刪除數(shù)據(jù)庫(kù)
語(yǔ)法
其中: dbname 是要?jiǎng)h除的數(shù)據(jù)庫(kù)的名稱(chēng)
示例 :
數(shù)據(jù)庫(kù)一旦刪除,保存在該數(shù)據(jù)庫(kù)中的全部數(shù)據(jù)丟失
03 MySQL 表管理
創(chuàng)建表的語(yǔ)法 create
e.g.
查看表
查看當(dāng)前數(shù)據(jù)庫(kù)中所有的表
show tables
查看指定表的表結(jié)構(gòu)
desc[ribe] table_name
示例:?

查看指定表的詳細(xì)信息
show create table table_name;
示例 :?
刪除表
刪除表的語(yǔ)法
drop table table name;
示例:使用SOL語(yǔ)句刪除表student
刪除表后,MySQL服務(wù)實(shí)例會(huì)自動(dòng)刪除表定義文件,以及數(shù)據(jù)、索引等
P4 1.3 表結(jié)構(gòu)的管理(一)~1
MySQL只要支持5種整數(shù)類(lèi)型: tinyint、smallint、mediumint、int和bigint
可以使用關(guān)鍵字“unsigned”對(duì)整數(shù)類(lèi)型進(jìn)行修飾(無(wú)符號(hào))
取值范圍:
tinyint 1字節(jié)
smallint 2 字節(jié)
mediumint 3 字節(jié)
int 4 字節(jié)
bigint 8 字節(jié)
小數(shù)類(lèi)型
精確小數(shù)類(lèi)型
decimal(length, precision)
length決定了該小數(shù)的最大位數(shù)
precision用于設(shè)置精度( 小數(shù)點(diǎn)后數(shù)字的位數(shù) )
例如 : decimal(5,2)
浮點(diǎn)數(shù)類(lèi)型
單精度浮點(diǎn)型 float 4字節(jié)
雙精度浮點(diǎn)型 double 8字節(jié)
例如,定義工資字段salary,可以用 salary float unsigned
其中,unsigned用于約束工資不能為負(fù)數(shù)。
字符串類(lèi)型
定長(zhǎng)字符串: char(n)
最多容納字符數(shù): 255
變長(zhǎng)字符串: varchar(n)
n的取值和字符集有關(guān)
示例
在表student中的student_name列的定義如下:
表示student_name列中最多可存儲(chǔ)長(zhǎng)度為10的字符串。
日期時(shí)間類(lèi)型
date
3個(gè)字節(jié)
取值范圍:‘1000-01-01'~’9999-12-31‘
格式:YYYY-MM-DD
datetime
8個(gè)字節(jié)
取值范圍:'1000-01-01 00:00:00'~*9999-12-31 23:59:59
格式:YYYY-MM-DD hh:mm:ss
time
取值范圍 :'-838:59:59' to838:59:59
格式:"hh:mm:ss' 或"hhh:mm:ss
創(chuàng)建表
語(yǔ)法約束
約束類(lèi)型
主鍵約束 primary key 用標(biāo)記唯一
非空約束 not null 創(chuàng)建數(shù)據(jù)不能為空
默認(rèn)約束 default 創(chuàng)建時(shí)會(huì)有默認(rèn)值
唯一約束 unique
外鍵約束 foreign key、references
1、主鍵約束 primary key(記得用括號(hào)包裹!)
`` 測(cè)試
單一字段作主鍵
????直接在該字段的數(shù)據(jù)類(lèi)型或者其他約束條件后加上關(guān)鍵字primary key
????語(yǔ)法字段名 數(shù)據(jù)類(lèi)型[其他約束條件]? primary key
????例如,將學(xué)生表student的student_no字段設(shè)置為主鍵,SQL語(yǔ)句如下
P5 1.3 表結(jié)構(gòu)的管理(一)~2
多個(gè)字段組合作主鍵
? ? 如果想要?jiǎng)?chuàng)建多個(gè)字段組合起來(lái)作為組件,就要使用復(fù)合組件。
????實(shí)際上就是在定義完所有字段后,加上逗號(hào),另起一行然后加上去。
????語(yǔ)法規(guī)則 :
例如,將(t1,t2)組合你test表的主鍵
約束實(shí)施
非空約束
》語(yǔ)法規(guī)則
直接在該字段的數(shù)據(jù)類(lèi)型后加上關(guān)鍵字not null,語(yǔ)法o字段名 數(shù)據(jù)類(lèi)型 not null
>示例
將學(xué)生表student的student_name字段設(shè)置為非空約束,SQL語(yǔ)句如下

這里 stu_no 是 primary key,所以 Null 是 No;stu_name 做了設(shè)置,所以 Null 是 No
`` 測(cè)試


默認(rèn)值約束
語(yǔ)法
。直接在該字段的數(shù)據(jù)類(lèi)型及約束條件后加上”default 默認(rèn)值”即可,語(yǔ)法:
>示例
·將課程表course的status字段設(shè)置為默認(rèn)值約束,且默認(rèn)值為'未審核’,SQL語(yǔ)句如下:
將課程表course的up limit字段設(shè)置為默認(rèn)值約束,且默認(rèn)值為整數(shù)60,SQL語(yǔ)句如下:

如何使用默認(rèn)值呢?
1、直接用不帶單引導(dǎo)的 default 填充!

2、前置聲明

唯一約束
》 語(yǔ)法
????直接在該字段的數(shù)據(jù)類(lèi)型后加上關(guān)鍵字unique
????字段名 數(shù)據(jù)類(lèi)型 unique
》如果某個(gè)字段存在多種約束條件,約束條件的順序是隨意的
》示例
將班級(jí)表classes的class_name字段設(shè)置為非空約束以及唯一性約束,就是可以為空。SQL語(yǔ)句如下
或者
下面跑一下
輸入內(nèi)容如下,可以發(fā)現(xiàn)unique成功了。
unique和primary key的區(qū)別在于,unique是允許為空值的,且可以有多個(gè)。
注意,多個(gè)空值在數(shù)據(jù)庫(kù)中不是相等的概念,它可以是未定義,也可以是什么值都不是。即“空值等于空值”這個(gè)概念是錯(cuò)誤的,這也就不會(huì)和unique1沖突了

未完待續(xù),學(xué)習(xí)進(jìn)度(5/42)