1. 程式人生 > 資料庫 >東軟大三上學期實訓筆記-mysql篇Day4

東軟大三上學期實訓筆記-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) 字元型
① 較短文字

  1. Char、varchar

② 較長文字

  1. text、blob

(3) 日期型
① Date
② Time

③ Year
④ Datetime
⑤ Timestamp
(4) 整型
① Tinyint =》1
② Smallint =》2
③ Mediumint =》3
④ Int、integer =》4
⑤ Bigint =》8
(5) 小數
① 分類

  1. 浮點型
    a. float(M,D)
    b. Double(M,D)
  2. 定點型(精準:財務計算)
    a. decimal(M,D)
    b. 建議使用時,設定長度
    備註:M:整數位數+小數位數,D:小數位數

(6) 字元型
① Char:定長

  1. 常用:狀態碼、性別 等

② Varchar

  1. 非定長的字串
  2. 預設長度:255

③ 較長的文字

  1. text
  2. Blob(二進位制)

④ 其他型別

  1. Enum:列舉
  2. Set:集合

(7) 日期型別
① Date:只儲存日期
② Time:只儲存時間
③ Year:只儲存年份
④ Datetime:儲存 日期+時間
⑤ Timestamp:儲存 日期+時間
在這裡插入圖片描述
⑥ Datetime 與 timestamp 區別
在這裡插入圖片描述

3、約束

(1) 概念
① 一種限制,用於限制表中的資料,為了保證表中資料的準確和可靠性
(2) 約束的種類
① 預設:default
② 非空約束:NOT Null
③ 主鍵約束:PRIMARY KEY
④ 唯一約束:UNIQUE
檢查約束:CHECK(mysql不支援)
⑥ 外來鍵約束:FOREIGN KEY
(3) 新增約束的分類
① 列級約束

  1. 六大約束語法都支援,但是外來鍵約束沒有效果

② 表級約束

  1. 除了 非空、預設,其他都支援

(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
① 為什麼?

  1. 因為這三個語句都是和資料庫中的資料有關,事務的存在主要是為了保證詩句的完整性、安全性
    (3) 事務的特性:ACID
    ① A:原子性
  2. 事務是最小的工作單元,是不可再分

② C:一致性

  1. 事務必須保證多條DML語句同時成功或同時失敗

③ I: 隔離性

  1. 事務與事務之間是相互獨立,互不影響

④ D:永續性

  1. 永續性就是說最終資料必須持久化到硬碟檔案中,事務才算成功結束

(4) Mysql中事務模式是:自動提交的
如何關閉自動提交?

start transaction

(5) 事務隔離級別
① 第一級別:讀未提交(read uncommitted)

  1. 對方事務還沒有提交,我們當前事務就可以讀到對方未提交的資料
  2. 讀未提交存在:髒讀

② 第二級別:讀已提交(read committed)

  1. 對方事務提交之後,我們才可以讀取
  2. 解決了髒讀現象

③ 第三級別:可重複讀(repeatable read)
④ 第四級別:序列化讀/序列化讀
⑤ 注意:

  1. Mysql預設:可重複讀
  2. Oracle預設:讀已提交

(6) 如何檢視隔離級別?
① select @@global.tx_isolation;
在這裡插入圖片描述
(7) 設定隔離級別
① set global transaction isolation level 隔離級別;
② 例如:
在這裡插入圖片描述
(8) 自己測試:隔離級別的改變