最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql?DCL權(quán)限控制和簡單函數(shù)案例說明

 更新時間:2026年01月23日 09:26:41   作者:wysysy  
DCL語句主要是DBA用來管理系統(tǒng)中的對象權(quán)限時所使用,一般的開發(fā)人員很少使用,這篇文章主要介紹了mysql?DCL權(quán)限控制和簡單函數(shù)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

引言

SQL(Structured Query Language)是數(shù)據(jù)庫管理的核心語言,涵蓋數(shù)據(jù)操作(DML)、數(shù)據(jù)定義(DDL)、數(shù)據(jù)控制(DCL)等功能。本筆記詳細解析用戶提供的代碼中涉及的DCL權(quán)限控制、字符串函數(shù)、數(shù)值函數(shù)、日期函數(shù)和流程控制函數(shù),并結(jié)合案例說明應(yīng)用場景。建議使用數(shù)據(jù)庫可視化工具(如MySQL Workbench)執(zhí)行查詢并查看結(jié)果圖表。

1. DCL權(quán)限控制

DCL(Data Control Language)用于管理數(shù)據(jù)庫訪問權(quán)限,包括用戶授權(quán)和撤銷權(quán)限。關(guān)鍵命令:

  • GRANT:授予用戶權(quán)限,語法為 GRANT 權(quán)限 ON 數(shù)據(jù)庫.表 TO '用戶'@'主機'
    GRANT ALL ON itcast.* TO 'itheima'@'%'; -- 授予用戶itheima對itcast數(shù)據(jù)庫的所有權(quán)限
    
  • REVOKE:撤銷用戶權(quán)限,語法為 REVOKE 權(quán)限 ON 數(shù)據(jù)庫.表 FROM '用戶'@'主機'。
    REVOKE ALL ON itcast.* FROM 'itheima'@'%'; -- 撤銷用戶itheima對itcast數(shù)據(jù)庫的所有權(quán)限
    
  • SHOW GRANTS:查詢用戶權(quán)限。
    SHOW GRANTS FOR 'itheima'@'%'; -- 顯示用戶itheima的權(quán)限
    

應(yīng)用場景:控制用戶對數(shù)據(jù)庫的讀寫權(quán)限,確保數(shù)據(jù)安全。例如,管理員授予開發(fā)人員只讀權(quán)限,防止誤操作。

2. 字符串函數(shù)

字符串函數(shù)用于文本處理,包括拼接、大小寫轉(zhuǎn)換、填充和截取等。常見函數(shù):

  • CONCAT(str1, str2):拼接字符串,如 CONCAT('hello', 'mysql') 返回 'hellomysql'。
  • LOWER(str):轉(zhuǎn)為小寫,如 LOWER('HELLO') 返回 'hello'。
  • UPPER(str):轉(zhuǎn)為大寫,如 UPPER('hello') 返回 'HELLO'。
  • LPAD(str, len, pad_str):左側(cè)填充,如 LPAD('01', 5, '-') 返回 '---01'(長度5,左側(cè)填充'-')。
  • RPAD(str, len, pad_str):右側(cè)填充,如 RPAD('01', 5, '-') 返回 '01---'。
  • TRIM(str):去除首尾空格,如 TRIM(' hello mysql ') 返回 'hello mysql'。
  • SUBSTRING(str, start, len):截取子串,如 SUBSTRING('hello mysql', 1, 5) 返回 'hello'。

案例:統(tǒng)一工號格式,不足5位左側(cè)補零。

UPDATE emp SET workno = LPAD(workno, 5, '0'); -- 將workno填充至5位,左側(cè)補0

3. 數(shù)值函數(shù)

數(shù)值函數(shù)處理數(shù)學(xué)運算,包括取整、模運算和隨機數(shù)生成:

  • CEIL(num):向上取整。
    SELECT CEIL(1.1); -- 返回 2
    
  • FLOOR(num):向下取整。
    SELECT FLOOR(1.1); -- 返回 1
    
  • MOD(a, b):模運算。
    SELECT MOD(7, 4); -- 返回 3 (7 ÷ 4 余 3)
    
  • RAND():生成 $[0,1)$ 的隨機數(shù)。
    SELECT RAND(); -- 返回隨機數(shù)如 0.752
    
  • ROUND(num, decimals):四舍五入
    SELECT ROUND(2.345, 2); -- 返回 2.35
    

案例:生成6位隨機驗證碼。

SELECT LPAD(ROUND(RAND()*1000000, 0), 6, '0'); -- 步驟:1. RAND()*1000000 生成隨機數(shù);2. ROUND 取整;3. LPAD 左側(cè)補0至6位

 通過數(shù)據(jù)庫函數(shù),生成6位隨機驗證碼,rand求隨機數(shù)*1000000得隨機數(shù),round舍去后面小數(shù),lpad在左側(cè)補0保證6位數(shù)

4. 日期函數(shù)

日期函數(shù)處理時間數(shù)據(jù),包括獲取當前日期、提取成分和計算差值:

  • CURDATE():返回當前日期,如 '2023-10-05'。
  • CURTIME():返回當前時間,如 '14:30:00'。
  • NOW():返回當前日期和時間,如 '2023-10-05 14:30:00'。
  • YEAR(date):提取年份
    SELECT YEAR(NOW()); -- 返回當前年份
    
  • MONTH(date):提取月份
  • DAY(date):提取日期
  • DATE_ADD(date, INTERVAL expr type):添加時間間隔,如 DATE_ADD(NOW(), INTERVAL 70 YEAR) 返回當前日期加70年。
  • DATEDIFF(date1, date2):計算日期差
    SELECT DATEDIFF('2021-12-01', '2021-11-01'); -- 返回 30
    

案例:計算員工入職天數(shù)并排序。

SELECT name, DATEDIFF(CURDATE(), entrydate) AS entrydays FROM emp ORDER BY entrydays ASC;

5. 流程控制函數(shù)

流程控制函數(shù)實現(xiàn)條件邏輯,包括簡單判斷和分支選擇:

  • IF(condition, true_val, false_val):條件判斷,

    如果為true返回OK,為false返回error

    SELECT IF(TRUE, 'OK', 'Error'); -- 返回 'OK'
    
  • IFNULL(val, default):空值處理

    ifnull,如果為空(NULL)則返回默認值,否則返回第一個字符

    SELECT IFNULL(NULL, 'default'); -- 返回 'default'
    
  • CASE WHEN THEN ELSE END:多分支條件,語法:
    CASE 
      WHEN condition1 THEN result1
      WHEN condition2 THEN result2
      ELSE default
    END
    

    case when then else end,當符合when的值時,返回then的值,否則返回else的值
    -- 需求:查詢emp表的員工姓名和工作地址(北京/上海----->一線城市,其他----->二線城市)

案例1:分類工作地址。

SELECT name, 
  (CASE workaddress 
    WHEN '北京' THEN '一線城市' 
    WHEN '上海' THEN '一線城市' 
    ELSE '二線城市' 
  END) AS '工作地址' 
FROM emp;

案例2:學(xué)員成績分級(基于score表)。

SELECT id, name,
  (CASE WHEN math >= 85 THEN '優(yōu)秀' WHEN math >= 60 THEN '及格' ELSE '不及格' END) '數(shù)學(xué)',
  (CASE WHEN english >= 85 THEN '優(yōu)秀' WHEN english >= 60 THEN '及格' ELSE '不及格' END) '英語',
  (CASE WHEN chinese >= 85 THEN '優(yōu)秀' WHEN chinese >= 60 THEN '及格' ELSE '不及格' END) '語文'
FROM score;

數(shù)學(xué)表示:CASE 語句可視為分段函數(shù),例如成績分級:

案例:統(tǒng)計班級各個學(xué)員的成績,展示的規(guī)則如下:

-- >=85 ,展示優(yōu)秀
-- >=60 ,展示及格
-- 否則,展示不及格

6. 綜合案例:學(xué)員成績分析

用戶創(chuàng)建了score表并插入數(shù)據(jù):

CREATE TABLE score(
    id INT COMMENT 'ID',
    name VARCHAR(20) COMMENT '姓名',
    math INT COMMENT '數(shù)學(xué)',
    english INT COMMENT '英語',
    chinese INT COMMENT '語文'
) COMMENT '學(xué)員成績表';
INSERT INTO score VALUES (1, 'Tom', 67, 88, 95), (2, 'Rose', 23, 66, 90), (3, 'Jack', 56, 98, 76);

使用流程控制函數(shù)分級成績:

SELECT id, name,
  (CASE WHEN math >= 85 THEN '優(yōu)秀' WHEN math >= 60 THEN '及格' ELSE '不及格' END) '數(shù)學(xué)',
  -- 類似邏輯應(yīng)用于英語和語文
FROM score;

結(jié)果示例(建議用表格展示):

IDName數(shù)學(xué)英語語文
1Tom及格優(yōu)秀優(yōu)秀
2Rose不及格及格優(yōu)秀
3Jack及格優(yōu)秀及格

配圖建議:在數(shù)據(jù)庫工具中執(zhí)行查詢,導(dǎo)出為CSV或圖表,展示成績分布(如條形圖顯示各等級人數(shù))。

總結(jié)

SQL函數(shù)極大簡化了數(shù)據(jù)處理:

  • DCL 確保數(shù)據(jù)安全。
  • 字符串函數(shù) 優(yōu)化文本操作。
  • 數(shù)值函數(shù) 支持數(shù)學(xué)計算。
  • 日期函數(shù) 管理時間數(shù)據(jù)。
  • 流程控制函數(shù) 實現(xiàn)復(fù)雜邏輯。 通過案例可見,這些函數(shù)在數(shù)據(jù)清洗(如工號格式化)、分析(如入職天數(shù)計算)和報表(如成績分級)中廣泛應(yīng)用。建議練習(xí)更多場景以鞏固技能,例如結(jié)合多函數(shù)處理實時數(shù)據(jù)。

到此這篇關(guān)于mysql DCL權(quán)限控制和簡單函數(shù)的文章就介紹到這了,更多相關(guān)mysql DCL權(quán)限控制和函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql去重的兩種方法詳解及實例代碼

    mysql去重的兩種方法詳解及實例代碼

    這篇文章主要介紹了mysql去重的兩種方法詳解及實例代碼的相關(guān)資料,這里對去重的兩種方法進行了一一實例詳解,需要的朋友可以參考下
    2017-01-01
  • RHEL6.5編譯安裝MySQL5.6.26教程

    RHEL6.5編譯安裝MySQL5.6.26教程

    這篇文章主要介紹了RHEL6.5編譯安裝MySQL5.6.26教程的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • mysql密碼忘了的問題及解決方案

    mysql密碼忘了的問題及解決方案

    這篇文章主要介紹了mysql密碼忘了的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • MySQL使用MyFlash快速恢復(fù)誤刪除和修改的數(shù)據(jù)

    MySQL使用MyFlash快速恢復(fù)誤刪除和修改的數(shù)據(jù)

    MyFlash 是由美團點評公司技術(shù)工程部開發(fā)并維護的一個開源工具,主要用于MySQL數(shù)據(jù)庫的DML操作的回滾,MyFlash的優(yōu)勢在于它提供了更多的過濾選項,使得回滾操作變得更加容易,本文將實驗通過 MyFlash 工具快速恢復(fù)誤刪除 或 誤修改的數(shù)據(jù),需要的朋友可以參考下
    2024-06-06
  • mysql 數(shù)據(jù)庫備份和還原方法集錦 推薦

    mysql 數(shù)據(jù)庫備份和還原方法集錦 推薦

    本文討論 MySQL 的備份和恢復(fù)機制,以及如何維護數(shù)據(jù)表,包括最主要的兩種表類型:MyISAM 和 Innodb,文中設(shè)計的 MySQL 版本為 5.0.22。
    2010-03-03
  • MySQL中鎖的相關(guān)問題

    MySQL中鎖的相關(guān)問題

    這篇文章主要介紹了MySQL中鎖的相關(guān)問題,本文給大家介紹了從對數(shù)據(jù)操作的粒度分 ,從對數(shù)據(jù)操作的類型分,給大家介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • MYSQL Left Join優(yōu)化(10秒優(yōu)化到20毫秒內(nèi))

    MYSQL Left Join優(yōu)化(10秒優(yōu)化到20毫秒內(nèi))

    在實際開發(fā)中,相信大多數(shù)人都會用到j(luò)oin進行連表查詢,但是有些人發(fā)現(xiàn),用join好像效率很低,而且驅(qū)動表不同,執(zhí)行時間也不同。那么join到底是如何執(zhí)行的呢,本文就詳細的介紹一下
    2021-12-12
  • 最新評論

    房山区| 福清市| 绩溪县| 曲水县| 长海县| 陈巴尔虎旗| 台安县| 丰都县| 屏东县| 会泽县| 常州市| 巴林左旗| 双江| 米易县| 巴东县| 阳泉市| 尖扎县| 安阳县| 方城县| 方城县| 武穴市| 永寿县| 闸北区| 泸溪县| 仁布县| 邢台县| 永年县| 宁安市| 屯留县| 隆安县| 息烽县| 东阳市| 商水县| 临湘市| 德安县| 东明县| 南安市| 宿迁市| 汉中市| 凌海市| 海伦市|