目錄
1. 爲什麼學習數據庫
- 90%以上的軟件都需要操作數據,⽐如遊戲、社交、新聞、商城、財務等,這些軟件都在不停的展示、存儲數據, 它們的數據都存儲在數據庫,數據庫是軟件的基礎
- 測試⼯程師在測試軟件的過程中,不僅需要在界⾯上操作,還需要檢查數據庫中的數據是否正確。從⽽在軟件出問 題時,測出更深層的問題。 ⽐如測試註冊登錄功能,在輸⼊了註冊信息後,提示註冊成功,但是使⽤剛纔註冊的信息登錄不成功。這時需要檢查數據庫中是否保存了正確的註冊信息,如果數據庫中沒有保存數據,那麼使⽤剛纔註冊的賬號肯定登錄不了,這樣就能定位問題:註冊時,沒有把數據存儲起來
2. 數據庫
數據庫是指⻓期存儲在計算機內、有組織的數據集合。簡⽽⾔之,數據庫就是⼀個存儲數據的地⽅。表是數據庫中存儲數據的基本單位,數據按照分類存儲到不同的表中,能夠⾮常⾼效的查詢其中的數據
3. RDBMS
Relational Database Management System
關係型數據庫系統
關係型數據庫的主要產品:
- oracle:在以前的⼤型項⽬中使⽤,銀⾏,電信等項⽬
- mysql:web時代使⽤最⼴泛的關係型數據庫
- ms sql server:在微軟的項⽬中使⽤
- sqlite:輕量級數據庫,主要應⽤在移動平臺
關係型數據庫核心元素:
- 數據⾏(⼀條記錄)
- 數據列(字段)
- 數據表(數據⾏的集合)
- 數據庫(數據表的集合,⼀個數據庫中能夠有 n 多個數據表)
4. SQL
Structured Query Language
結構化查詢語⾔
在數據庫中進⾏操作的語⾔,稱爲sql,結構化查詢語⾔,當前關係型數據庫都⽀持使⽤sql語⾔進⾏操作,也就是說可以 通過 sql 操作 oracle,sql server,mysql,sqlite 等等所有的關係型的數據庫
- sql語⾔主要分爲:
DQL:數據查詢語⾔,⽤於對數據進⾏查詢,如select
DML:數據操作語⾔,對數據進⾏增加、修改、刪除,如insert、udpate、delete
TPL:事務處理語⾔,對事務進⾏處理,包括begin transaction、commit、rollback
DCL:數據控制語⾔,進⾏授權與權限回收,如grant、revoke
DDL:數據定義語⾔,進⾏數據庫、表的管理等,如create、drop
CCL:指針控制語⾔,通過控制指針完成表的操作,如declare cursor
- 對於測試⼯程師來講,重點是數據的查詢,需要熟練編寫DQL,其它語⾔如TPL、DCL、CCL瞭解即可
- SQL 是⼀⻔特殊的語⾔,專⻔⽤來操作關係數據庫
- 不區分⼤⼩寫
5. MySQL
MySQL是⼀個關係型數據庫管理系統,由瑞典MySQL AB公司開發,後來被Sun公司收購,Sun公司後來⼜被 Oracle公司收購,⽬前屬於Oracle旗下產品
常⽤數據類型 :
整數:int,有符號範圍(-2147483648 ~2147483647),⽆符號範圍(0 ~ 4294967295)
⼩數:decimal,如decimal(5,2)表示共存5位數,⼩數佔2位,整數佔3位
字符串:varchar,範圍(0~65533),如varchar(3)表示最多存3個字符,⼀箇中⽂或⼀個字⺟都佔⼀個字符
⽇期時間: datetime,範圍(1000-01-01 00:00:00 ~ 9999-12-31 23:59:59),如'2020-01-01 12:29:59'
約束:
主鍵(primary key):物理上存儲的順序
⾮空(not null):此字段不允許填寫空值
惟⼀(unique):此字段的值不允許重複
默認值(default):當不填寫此值時會使⽤默認值,如果填寫時以填寫爲準
外鍵(foreign key):維護兩個表之間的關聯關係
6. 數據表操作
- 創建表
create table 表名(
字段名 類型 約束,
字段名 類型 約束,
...
)
- 刪除表
格式⼀:drop table 表名
格式⼆:drop table if exists 表名
7. 數據操作-增刪改查
-
簡單查詢
select * from 表名
- 添加數據
添加⼀⾏數據:
insert into 表名 values(...) # 主鍵列是⾃動增⻓,插⼊時需要佔位,通常使⽤0或者 default 或者 null 來佔位
insert into 表名(字段1,...) values(值1,...)
添加多⾏數據:
insert into 表名 values(...),(...)...
insert into 表名(列1,...) values(值1,...),(值1,...)...
- 修改
update 表名
set 列1=值1,列2=值2...
where 條件
- 刪除
delete from 表名 where 條件
truncate table 表名(刪除表的所有數據,保留表結構)
Truncate和Delete、Drop的區別:
1、Delete刪除數據時,即使刪除所有數據,其中的⾃增⻓字段不會從1開始
2、Truncate刪除數據時,其中的⾃增⻓字段恢復從1開始
3、Drop是刪除表,所有數據和表結構都刪掉
總結:
在速度上,drop > truncate > delete
如果想刪除部分數據⽤delete,注意帶上where⼦句
如果想刪除表,⽤drop
如果想保留表⽽將所有數據刪除,⾃增⻓字段恢復從1開始,⽤truncate