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

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

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

引言

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

1. DCL權限控制

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

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

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

2. 字符串函數(shù)

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

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

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

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

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

數(shù)值函數(shù)處理數(shù)學運算,包括取整、模運算和隨機數(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 左側補0至6位

 通過數(shù)據(jù)庫函數(shù),生成6位隨機驗證碼,rand求隨機數(shù)*1000000得隨機數(shù),round舍去后面小數(shù),lpad在左側補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:學員成績分級(基于score表)。

SELECT id, name,
  (CASE WHEN math >= 85 THEN '優(yōu)秀' WHEN math >= 60 THEN '及格' ELSE '不及格' END) '數(shù)學',
  (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ù)學表示:CASE 語句可視為分段函數(shù),例如成績分級:

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

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

6. 綜合案例:學員成績分析

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

CREATE TABLE score(
    id INT COMMENT 'ID',
    name VARCHAR(20) COMMENT '姓名',
    math INT COMMENT '數(shù)學',
    english INT COMMENT '英語',
    chinese INT COMMENT '語文'
) COMMENT '學員成績表';
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ù)學',
  -- 類似邏輯應用于英語和語文
FROM score;

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

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

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

總結

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

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

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

相關文章

  • 一步步教你配置MySQL遠程訪問

    一步步教你配置MySQL遠程訪問

    這篇文章主要給大家介紹了配置MySQL遠程訪問的相關資料,文中介紹的非常詳細,相信對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-04-04
  • 解決SQL文件導入MySQL數(shù)據(jù)庫1118錯誤的問題

    解決SQL文件導入MySQL數(shù)據(jù)庫1118錯誤的問題

    在使用Navicat導入SQL文件時,有時會遇到報錯問題,這通常與MySQL版本差異或嚴格模式設置有關,若報錯提示rowsize長度過長,可能是因為MySQL的嚴格模式開啟導致,解決方法是檢查嚴格模式是否開啟,若開啟則需關閉
    2024-10-10
  • MySQL慢查詢如何定位詳解

    MySQL慢查詢如何定位詳解

    這篇文章主要給大家介紹了關于MySQL慢查詢如何定位的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • mysql去重的兩種方法詳解及實例代碼

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

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

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

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

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

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

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

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

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

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

    MySQL中鎖的相關問題

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

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

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

最新評論

烟台市| 腾冲县| 双流县| 双峰县| 威远县| 许昌市| 岳池县| 兴和县| 白朗县| 铜鼓县| 昆明市| 天峻县| 东山县| 临泽县| 定远县| 康定县| 海兴县| 临江市| 佳木斯市| 哈尔滨市| 林甸县| 武宣县| 德令哈市| 教育| 格尔木市| 三江| 泸西县| 黄陵县| 昌宁县| 铜陵市| 任丘市| 姚安县| 武清区| 湟中县| 仲巴县| 江陵县| 额敏县| 乐至县| 建湖县| 军事| 濉溪县|