MySQL的入門學習七

一、視圖

1.1 概述

1、視圖是一張虛擬表,它表示一張表的部分數據或多張表的綜合數據,其結構和數據是建立在對錶的查詢基礎上
2、視圖中並不存放數據,而是存放在視圖所引用的原始表(基表)中
3、同一張原始表,根據不同用戶的不同需求,可以創建不同的視圖

1.2 作用

1、篩選表中的行
2、防止未經許可的用戶訪問敏感數據
3、增加數據的兼容性(數據庫的字段名發生變化,程序可以不用改字段名)
4、隱藏數據表的結構
5、降低數據庫的複雜程度

1.3 創建視圖

語法: create view as select 語句;
例如:
在這裏插入圖片描述

1.4 修改視圖

語法: alter view 視圖名 as select 語句;
例:
在這裏插入圖片描述

1.5 刪除視圖

語法: drop view [if exists] 視圖1, 視圖2,...;
例:
在這裏插入圖片描述
在這裏插入圖片描述

1.6 查看視圖信息

方法一:
show tables; 顯示所有的表和視圖

方法二:
視圖信息存儲在information_schema下的views表中。
在這裏插入圖片描述
查詢視圖的結構:
在這裏插入圖片描述

1.7 視圖算法

找出語文成績最高的男生和女生:
方法一:
在這裏插入圖片描述
方法二:
在這裏插入圖片描述
可以看到默認走了merge算法。

視圖的算法有:
1、合併算法(merge)
將視圖語句和外層語句合併後再執行
2、臨時表算法(temptable)
將視圖作爲一個臨時表來執行
3、未定義算法(undefined)

查看創建視圖的語句:
在這裏插入圖片描述
默認視圖創建時爲未定義算法。雖然寫了undefined,但是一般在視圖會使用merge。
方法二更正臨時表算法:
在這裏插入圖片描述

二、事務

2.1 概述

1、事務(TRANSACTION)是一個整體,要麼一起執行,要麼一起不執行。
2、這些操作作爲一個整體一起向系統提交,要麼都執行,要麼都不執行
3、事務是一個不可分割的工作邏輯單元

2.2 事務特性

事務必須具備一下四個屬性,簡稱ACID屬性:
1、原子性(Atomicity):事務是一個完整的操作,事務的各步操作是不可分的(原子的);要麼都執行,要麼都不執行
2、一致性(Consistency):當事務完成時,數據必須處於一致狀態
3、隔離性(Isolation):對數據進行修改的所有併發事務是彼此隔離的。
4、永久性(Durability):事務完成後,它對數據庫的修改被永久保持。

2.3 事務處理

1、開啓事務

start  transaction  或者  begin [work]

2、提交事務

commit

3、回滾事務

rollback

例題:

  1. 先創建測試表和數據:
    在這裏插入圖片描述
    修改默認執行符號(之前默認是分號執行)
    在這裏插入圖片描述
  2. 開啓事務並且更改
    在這裏插入圖片描述
  3. 回滾
    在這裏插入圖片描述
    回滾到了初始狀態。
    在這裏插入圖片描述
    提交(commit)事務後再回滾就沒有用了。

4、設置事務的回滾點
在這裏插入圖片描述

5、自動提交事務
每一個sql語句都是一個獨立的事務。
在這裏插入圖片描述

6、小結:

1、事務是事務開啓的時候開始
2、提交事務、回滾事務後事務都結束
3、只有innodb引擎支持事務
4、一個sql語句就是一個獨立的事務,開啓事務是將多個sql語句放到一個事務中執行

三、索引

3.1 概述

優點:
加快查詢速度

缺點:
1、帶索引的表在數據庫中需要更多的存儲空間
2、操縱數據的命令需要更長的處理時間,因爲它們需要對索引進行更新

3.2 創建索引的指導原則

適合創建索引的列

	1、該列用於頻繁搜索
	2、該列用於對數據進行排序
	3、在where子句中出現的列,在join子句中出現的列

請不要使用下面的列創建索引:

	1、列中僅包含幾個不同的值
	2、表中僅包含幾行,爲小型表創建索引可能不太划算,因爲mysql在索引中搜索數據所話的時間在表中

3.3 創建索引

1、主鍵索引:只要創建了主鍵就會自動的創建主鍵的索引
2、唯一索引:
只要創建了唯一鍵就會自動的創建唯一索引:
還可以通過如下創建唯一索引:
給表添加的方式,創建唯一索引:
在這裏插入圖片描述
在這裏插入圖片描述
通過修改表創建唯一索引:
在這裏插入圖片描述
3、普通索引
在這裏插入圖片描述
給表添加普通索引
在這裏插入圖片描述
修改普通索引
在這裏插入圖片描述
4、小結

1、創建主鍵就會創建主鍵索引
2、創建唯一鍵就會創建唯一索引
3、創建索引後,數據庫根據查詢語句自動選擇索引

3.4 刪除索引

語法: drop index 索引名 on 表名
在這裏插入圖片描述

四、函數

4.1 數字類

1、獲取隨機數
在這裏插入圖片描述
場景一:隨機選擇一名學生
在這裏插入圖片描述
2、四捨五入
在這裏插入圖片描述
3、截取數據
在這裏插入圖片描述
4、取整
向上取整
在這裏插入圖片描述
向下取整
在這裏插入圖片描述

4.2 字符串類

1、大小寫轉換
在這裏插入圖片描述
2、截取字符串
在這裏插入圖片描述
3、字符串相連
在這裏插入圖片描述
在這裏插入圖片描述
4、coalesce(str1, str2) 如果str1有值就顯示str1,如果沒有值就顯示str2
在這裏插入圖片描述
5、length() 字節長度,char_length() 字符長度
在這裏插入圖片描述

4.3 時間類

1、時間戳
在這裏插入圖片描述
2、格式化時間戳
在這裏插入圖片描述
3、獲取當前時間
在這裏插入圖片描述
4、獲取年月日小時分鐘秒
在這裏插入圖片描述
5、星期、月份、哪一天
在這裏插入圖片描述
6、日期相減
在這裏插入圖片描述

4.4 加密函數

1、md5()
在這裏插入圖片描述
2、sha()
在這裏插入圖片描述

五、預處理

預編譯一次,可以多次執行,用來解決一條sql語句頻繁執行的問題
預處理語句:

prepare 預處理名字 from 'sql語句'

執行預處理:

execute 預處理名字 [using 變量]

1、不帶參數的處理
在這裏插入圖片描述
2、帶一個參數的預處理
在這裏插入圖片描述

3、小結

	1、MySQL中變量以@開頭,通過set給變量賦值。
	2、?表示一個佔位符。

在學習的MySQL的路上,如果你覺得本文對你有所幫助的話,那就請關注點贊評論三連吧,謝謝,你的肯定是我寫博的另一個支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章