東軟大三上學期實訓筆記-mysql篇Day4
mysql篇Day4
20201224
知識點回顧:
1、連線查詢:
(1) 內查詢
(2) 外查詢
2、三表查詢
3、分頁查詢:limit
4、聯合查詢:union、union all
5、DML語言:
(1) Insert、delete、update
(2) truncate
6、DDL語言
(1) 資料庫的定義(資料庫與表)
(2) 資料庫定義:
① 建立、刪除、修改編碼格式
(3) 表的定義:alter table
① 表的建立、修改、刪除
② 預設表名定義:t_ 或 tbl_
作業分析與講解:
1、------
知識點講解:
1、表複製
(1) 複製表的結構
①
create table 新表 like 原表
(2) 複製表結構+資料
①
Create table 新表 select * from 原表
(3) 只複製部分資料
①
Create table 新表 select 列表 from 原表 where 篩選條件
(4) 只複製某些欄位
①
Create table 新表 select 列表 from 原表 where 1=2
2、常見的資料型別
(1) 數值型
① 整型
② 小數
(2) 字元型
① 較短文字
- Char、varchar
② 較長文字
- text、blob
(3) 日期型
① Date
② Time
④ Datetime
⑤ Timestamp
(4) 整型
① Tinyint =》1
② Smallint =》2
③ Mediumint =》3
④ Int、integer =》4
⑤ Bigint =》8
(5) 小數
① 分類
- 浮點型
a. float(M,D)
b. Double(M,D) - 定點型(精準:財務計算)
a. decimal(M,D)
b. 建議使用時,設定長度
備註:M:整數位數+小數位數,D:小數位數
(6) 字元型
① Char:定長
- 常用:狀態碼、性別 等
② Varchar
- 非定長的字串
- 預設長度:255
③ 較長的文字
- text
- Blob(二進位制)
④ 其他型別
- Enum:列舉
- Set:集合
(7) 日期型別
① Date:只儲存日期
② Time:只儲存時間
③ Year:只儲存年份
④ Datetime:儲存 日期+時間
⑤ Timestamp:儲存 日期+時間
⑥ Datetime 與 timestamp 區別
3、約束
(1) 概念
① 一種限制,用於限制表中的資料,為了保證表中資料的準確和可靠性
(2) 約束的種類
① 預設:default
② 非空約束:NOT Null
③ 主鍵約束:PRIMARY KEY
④ 唯一約束:UNIQUE
⑤ 檢查約束:CHECK(mysql不支援)
⑥ 外來鍵約束:FOREIGN KEY
(3) 新增約束的分類
① 列級約束
- 六大約束語法都支援,但是外來鍵約束沒有效果
② 表級約束
- 除了 非空、預設,其他都支援
(4) 案例:(列級別約束)
注意:檢查約束與外來鍵約束,無效
(5) 案例:(表級別約束)
注意:檢查約束 無效
(6) 案例:(表級別約束:自定義約束名稱)
4、約束的修改
(1) 新增列級別約束
①
Alter table 表名 modify column 欄位名 欄位型別 新約束;
(2) 新增表級別約束
①
Alter table 表名 add 【constraint 約束名】 約束型別(欄位名)【外來鍵引用】
(3) 案例:
(4) 刪除約束
(5) 主鍵約束 與 唯一約束對比
5、自增長:(經常與主鍵配合使用)
(1) 自增長:可以不用手動的插入值,系統提供預設的序列值
(2) 使用形式:
① auto_increment(mysql支援)
② sequence (序列:oracle支援)
(3) 案例:
(4) 是否可以設定自增長的步長???
① 預設的步長:1
②
set auto_increment_increment = 步長;
6、事務:transaction
(1) 什麼是事務
① 一個完整的業務邏輯單元,不可再分
(2) 和事務相關的語句:insert、delete、update
① 為什麼?
- 因為這三個語句都是和資料庫中的資料有關,事務的存在主要是為了保證詩句的完整性、安全性
(3) 事務的特性:ACID
① A:原子性 - 事務是最小的工作單元,是不可再分
② C:一致性
- 事務必須保證多條DML語句同時成功或同時失敗
③ I: 隔離性
- 事務與事務之間是相互獨立,互不影響
④ D:永續性
- 永續性就是說最終資料必須持久化到硬碟檔案中,事務才算成功結束
(4) Mysql中事務模式是:自動提交的
① 如何關閉自動提交?
start transaction
(5) 事務隔離級別
① 第一級別:讀未提交(read uncommitted)
- 對方事務還沒有提交,我們當前事務就可以讀到對方未提交的資料
- 讀未提交存在:髒讀
② 第二級別:讀已提交(read committed)
- 對方事務提交之後,我們才可以讀取
- 解決了髒讀現象
③ 第三級別:可重複讀(repeatable read)
④ 第四級別:序列化讀/序列化讀
⑤ 注意:
- Mysql預設:可重複讀
- Oracle預設:讀已提交
(6) 如何檢視隔離級別?
① select @@global.tx_isolation;
(7) 設定隔離級別
① set global transaction isolation level 隔離級別;
② 例如:
(8) 自己測試:隔離級別的改變