MySQL資料庫學習筆記02(事務控制,資料查詢)

XITMan發表於2020-10-18

一、事務控制
什麼是事務控制:在運算元據時需要讓有關係的資料進行聯動(一起有效、無效)。
注意:資料定義語句立即有效,不需要事務控制,只有資料操作語句才需要事務控制。

1、commit提交
    一個使用者向表中插入一條記錄,其它使用者並不能立即查詢到,只有執行提交命令才確定有效。
    注意:MySQL資料庫預設設定了自動提交
    檢視是否開啟自動提交:show variables like 'autocommit';
        'autocommit', 'OFF' 關閉
        'autocommit', 'ON'  開啟
    設定當前連線的自動提交:set session autocommit=1|0;
    設定所有連線的自動提交:set global autocommit=1|0;
    當需要執行原子操作時,需要關閉自動提交,當所有操作完成後才執行commit命令。
2、rollback回滾
    當使用資料操作語句對資料進行更改時,如果還沒有commit,那麼就可以使用rollback撤銷,把資料還原成修改前的樣子。

3、savepoint儲存點
    預設情況下執行rollback語句,資料會加到最近一次的commit,設定儲存點可以在rollback時返回到指定的位置。
    操作1
    savepoint sp1;
    操作2
    savepoint sp2;
    操作3
    savepoint sp3;
    操作4

    如果還是直接執行rollback語句,四項操作還是會直接消失,讓rollback與儲存點配合,返回的指定的位置:rollback to savepoint spn;

二、查詢
1、排重查詢
select distinct 欄位 from 表名;
注意:查詢多個欄位時,所有欄位都相同才會被認為是重複的資料。

2、算術運算子
select 字元±*/資料 from 表名;
如果相改變運算子的優先順序可以使用小括號。

3、排序
select 欄位 from 表名 order by 欄位 [desc|asc],欄位 [desc|asc];
降序:desc 升序:asc,預設按照升序顯示。

4、條件查詢
配合關係運算子邏輯運算子:> < >= <= = !=,and(&&) or(||) not(!)
select 欄位 from 表名 where 欄位 關係運算子 資料;

5、特殊條件
select 欄位 from 表名 where 欄位 between A and B;
注意:包括A且包括B,並且A<B

select 欄位 from 表名 where 欄位 in (A,B,C,…);

select 欄位 from 表名 where 欄位 is null;
select 欄位 from 表名 where 欄位 is not null;
注意:在資料庫,空是一種狀態,而不是固定的資料。

6、模糊查詢
select 欄位 from 表名 where 欄位 like ‘%_’;
注意:所有型別都可以進行模糊查詢,它的原理就是把所有資料查詢出來轉換成字串,因此這種查詢方式效率非常低。
% 替換0個或多個字元,相當於命令列中的*
_ 替換一個字元

7、函式
函式就是資料庫已經實現好的一些功能,這些不屬於SQL語句,所以沒有統一,不同的資料庫實現的函式差別很大。

行函式:一行資料就會返回一個結果。
數值相關:
round(資料,[n]) 把資料四捨五入,n表示小數點後的位數。
truncate(資料,[n]) 擷取顯示,n表示小數點後的位數。
floor(資料) 向下取整,直接丟棄小數點後的資料。
ceil(資料) 向下取整,丟棄小數點後的資料+1。
abs(資料) 求絕對值
pow(x,n) 求x的n次方
字串相關:
char_length(str) 計算字串的長度
concat(str1,str2,str3,…) 連線若干個字串
lower(str) 把字串中的所有字母轉換成小寫
upper(str) 把字串中的所有字母轉換成大寫
trim(str) 去除掉字串總部和尾部的空格
locate(s1,str) 返回在str字串中s1首次出的位置,第幾個字元。
left(str,n) 返回字串的前n個字元
right(str,n) 返回字串的後n個字元
mid(str,n,len) 返回字串從n開始的len個字元。
strcmp(str1,str2) 功能與C標準庫的一致
reverse(str) 字串逆序顯示
日期相關:
now() 獲取當前日期和時間
current_date() 獲取當前日期
current_time() 獲取當前時間
date(str) 把字串轉換成日期
adddate(date,n) 在日期date的基礎上加上n天
date_sub(date,n) 日期減掉n天得到一個新日期
datediff(date1,date2) 計算兩個日期之間相隔多少天
dayofweek(date) 把日期轉換成星期幾
date_format(date,fromat) 按指定的格式顯示時間
%a 星期幾
%b 月份縮寫
%d 天數
%y 只顯示年份的後兩位
%Y 顯示4位年份
%r 顯示12小時制時間
%T 顯示24小時制時間

相關文章