日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库自学-SQL-四大SQL语句DDL、DML、DQL、DCL

發布時間:2023/12/10 数据库 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库自学-SQL-四大SQL语句DDL、DML、DQL、DCL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

DDL-介紹

1.DDL-數據庫操作

2.DDL-表操作-查詢

3.DDL-表操作-創建

?4.DDL-表操作-數據類型

(案例)-根據需求創建表(設計合理的數據類型、長度)

DDL-表修改-修改

DDL-表操作-刪除

DDL-小結

DML-介紹

DML-添加數據

DML-修改數據

DML-刪除數據

DML-小結

DQL-介紹

DQL-語法?編輯

DQL-基本查詢

DQL-條件查詢

DDL-聚合函數

DQL-分組查詢

DQL-排序查詢

DQL-分頁查詢

?案例

DQL-執行順序

DQL-小結

DCL-介紹

DCL- 管理用戶

DCL-權限控制

DCL-小結


DDL-介紹

Data Definition Language,數據定義語言,用來定義數據庫對象(數據庫,表,字段)

1.DDL-數據庫操作

查詢所有數據庫?

SHOW DATABASE;

查詢當前數據庫

SELECT DATABASE();

創建

CREATE DATABASE[IF NOT EXISTS]數據庫名[DEFAUT CHARSET 字符集][COLLATE 排序規則]

刪除

drop databas[if exit]數據庫名;

使用

USE 數據庫名;

2.DDL-表操作-查詢

查詢當前數據庫所有表;

show database;

查詢表結構

desc 表名;

?查詢指定的建表語句

show create table 表名;

3.DDL-表操作-創建

  • create table 表名(

  • 字段1 字段1類型[comment 字段1注釋],

  • 字段2 字段2類型[comment 字段2注釋],

  • 字段3 字段3類型[comment 字段3注釋],

  • 字段3 字段3類型[comment 字段3注釋],

  • ...

  • )[comment 表注釋]

  • ?注釋:[..]為可選參數,最后一個字段后面沒有逗號

    創建一個表:

    查詢表結構:desc 表名;

    ?展示詳細信息:show create table 表名;

    ?4.DDL-表操作-數據類型

    主要分為三類:數值類型、字符串類型、日期時間類型

    1.數值類型:

    ?類似java語言中的 ?short int long float double;

    例:

    age TINYINT UNSIGNED

    score double(4,1)//第一位表示整體長度,第二個表示小數位數

    2.字符串類型:

    ?char(10),未占用字符其他空間用空格進行部位--》性能好

    varchar(10)占用空間根據你所存儲的內容--》性能較差

    例:用戶名 usename varchar(50)

    性別 gender char(1)

    3.日期時間類型:

    例 birthday date??

    (案例)-根據需求創建表(設計合理的數據類型、長度)

    設計一張員工信息表,要求如下:

    1.編號(純數字)
    2.員工工號(字符串類型 長度不超過10位)

    3.員工姓名(字符串類型,長度不超過10位)

    4.性別(男/女,存儲一個漢字)

    5.年齡(正常人年齡,不可能存儲負數)

    6.身份證號碼(二代身份證號均為18位,身份證中有x這樣的字符)

    7.入職時間(取值年月日即可)

  • create table employee(

  • id int comment '編號',

  • workname varchar(10) comment '工號',

  • name varchar(10)comment '姓名',

  • gender char (1)comment '性別',

  • age tinyint unsigned comment '年齡',

  • idcard char(18)comment '身份證',

  • entrydate date comment '入職時間'

  • )comment '員工表';

  • 注:要先建立庫,再用use 庫名來使用該數據庫,之后再建立表。

    DDL-表修改-修改

    添加字段

    alter table 表名 add 字符名 類型 (長度) [comment 注釋] [約束];

    (案例)為emp表添加一個新的字段1“昵稱”為nickname,類型為varchar(20)

    alter table emp add nickname varchar(20) comment '昵稱';

    修改數據類型

    alter 表名 modify 字段名 新數據類型(長度);

    修改字段名和字段類型

    alter table 表名 change 舊字段名 新字段名 類型(長度)[commment 注釋][約束];

    (案例)將emp表中的nickname字段該為username,類型為varhar(30)

    alert table emp change nickname username varchar(30) comment'用戶名';

    刪除字段

    alter table 表名 drop 字段名;

    例:alter table emp drop username;

    修改表名

    alter table 表名 rename to 新表名;

    例:alter table emp rename to emplyee;

    DDL-表操作-刪除

    刪除表

    drop table if exits 表名;

    刪除指定表,重新創建表//相當于清空數據

    truncate table 表名;

    DDL-小結


    DML-介紹

    DML英文全稱是Data Manipulation Language(數據操作語言,用來對數據記錄進行增刪改查)

    添加數據(insert)

    修改數據(update)

    刪除數據(delete)

    DML-添加數據

    1.給指定字段添加數據

    insert 表名(字段名1,字段名2...) values(值1,值2..);

    2.給全部字段添加數據

    insert 表名 value (值1,值2..);

    3.批量添加數據

    insert 表名(字段名1,字段名2...) values(值1,值2..),values(值1,值2..),values(值1,值2..); insert 表名 values(值1,值2..),values(值1,值2..),values(值1,值2..);

    注:

    1.插入數據時,指定字段的順序需要和值順序一一對應

    2.字符串和日期型數據應該包含在引號中

    3.插入的數據大小,應該在字段的規定范圍內

    insert into employee (id, workname, name, gender, age, idcard, entrydate) values (1,'1','Itcast','男',10,'12345678','2002-1-01');select * from employee;//顯示表insert into employee values (1,'2','張三','男',18,'1234567812345670','2005-01-01');insert into employee values (3,'3','李四','男',18,'1234567812345670','2005-01-01'),(4,'4','小五','男',18,'12345678145654','2005-01-01');

    ?

    ?

    DML-修改數據

    update 表名 set 字段一=值1,字段2 = 值2,..[where 條件];

    注:修改語句可以有,也可以沒有,如果沒有則會修改整張表的所有數據。

    DML-刪除數據

    delete from 表名 [where 條件];

    注:

    1.delete語句條件可以有,也可以沒有,如果沒有,則會刪除整張表的所以數據。

    2.delete語句不能刪除某一個字段的值(可以使用updata)

    -- 刪除 gender 為女生的員工 delete from employee where gender = '女';-- 刪除所以員工 selete from employee;

    DML-小結

    ?


    DQL-介紹

    DQL:Data Query Languge(數據查詢語言),數據查詢語言,用來查詢數據庫中表的記錄。、

    查詢關鍵字:select

    DQL-語法

    DQL-基本查詢

    1.查詢多個字段1

    select 字段1,字段2,字段3.. from 表名;select * from 表名;

    2.設置別名

    select 字段1[AS 別名1],字段2[AS 別名2].... from 表名;

    3.去除重復記錄

    select distinct 字段列表 from 表名;

    案例:

    查詢指定字段 name, workno, age并返回 select name,workno,age from emp; 查詢返回所有字段 select * from emp; 查詢所有員工的工作地址,起別名 ??????? select workaddress as '工作地址' from emp; -- as可以省略 select workaddress '工作地址' from emp; 查詢公司員工的上班地址有哪些(不要重復) select distinct workaddress '工作地址' from emp;

    ?


    DQL-條件查詢

    1.語法

    SELECT 字段列表 FROM 表名 WHERE 條件列表 ;

    2.條件

    常見的比較運算符:

    ?常見的邏輯運算符:

    案例: A. 查詢年齡等于 88 的員工 select * from emp where age = 88;

    B. 查詢年齡小于 20 的員工信息

    ???????select * from emp where age < 20;

    ??????? C. 查詢年齡小于等于 20 的員工信息

    ???????select * from emp where age <= 20; D. 查詢沒有身份證號的員工信息 ??????? select * from emp where idcard is null;

    E. 查詢有身份證號的員工信息

    select * from emp where idcard is not null;

    F. 查詢年齡不等于 88 的員工信息

    select * from emp where age != 88;? select * from emp where age <> 88;

    G. 查詢年齡在15歲(包含) 到 20歲(包含)之間的員工信息

    select * from emp where age >= 15 && age <= 20; select * from emp where age between 15 and 20;

    H. 查詢性別為 女 且年齡小于 25歲的員工信息

    select * from emp where gender = '女' and age < 25;

    I. 查詢年齡等于18 或 20 或 40 的員工信息

    select * from emp where age = 18 or age = 20 or age =40; select * from emp where age in(18,20,40);

    J. 查詢姓名為兩個字的員工信息 _ %

    select * from emp where name like '__';//兩個下劃線

    K. 查詢身份證號最后一位是X的員工信息

    select * from emp where idcard like '%X'; select * from emp where idcard like '_________________X';

    DDL-聚合函數

    1.介紹

    將一列數據作為一個整體,進行縱向計算 。

    2.常見的聚合函數

    ?3.語法

    SELECT 聚合函數(字段列表) FROM 表名 ;

    (案例)

    統計該企業員工數量 select count(*) from emp; -- 統計的是總記錄數select count(idcard) from emp; -- 統計的是idcard字段不為null的記錄數 統計該企業員工的平均年齡 select avg(age) from emp; 統計該企業員工的最大年齡 select max(age) from emp; 統計西安地區員工的年齡之和 select sum(age) from emp where workaddress = '西安';

    DQL-分組查詢


    1.語法

    SELECT 字段列表 FROM 表名 [ WHERE 條件 ] GROUP BY 分組字段名 [ HAVING 分組 后過濾條件 ]; 2. where與having區別 執行時機不同:where是分組之前進行過濾,不滿足where條件,不參與分組;而having是分組 之后對結果進行過濾。 判斷條件不同:where不能對聚合函數進行判斷,而having可以。 注: ? 分組之后,查詢的字段一般為聚合函數和分組字段,查詢其他字段無任何意義。 ? 執行順序: where > 聚合函數 > having 。 ? 支持多字段分組, 具體語法為 : group by columnA,columnB 案例: 根據性別分組 , 統計男性員工 和 女性員工的數量 select gender, count(*) from emp group by gender ; 根據性別分組 , 統計男性員工 和 女性員工的平均年齡 select gender, avg(age) from emp group by gender ; 查詢年齡小于45的員工 , 并根據工作地址分組 , 獲取員工數量大于等于3的工作地址 select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3; 統計各個工作地址上班的男性及女性員工的數量 select workaddress, gender, count(*) '數量' from emp group by gender , workaddress ;

    注:

    執行順序:where 》 聚合函數 》 having

    分組之后,查詢的字段一般為聚合函數和分組字段,查詢其他字段無任何意義。


    DQL-排序查詢

    排序在日常開發中是非常常見的一個操作,有升序排序,也有降序排序。 1.語法 SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;

    2.排序方式

    ASC:升序(默認)

    DESC:(降序)

    注意事項: ? 如果是升序, 可以不指定排序方式ASC ; ? 如果是多字段排序,當第一個字段值相同時,才會根據第二個字段進行排序 ; (案例) 根據年齡對公司的員工進行升序排序 select * from emp order by age asc;select * from emp order by age; 根據入職時間, 對員工進行降序排序 select * from emp order by entrydate desc; 根據年齡對公司的員工進行升序排序 , 年齡相同 , 再按照入職時間進行降序排序 select * from emp order by age asc , entrydate desc;

    DQL-分頁查詢

    分頁操作在業務系統開發時,也是非常常見的一個功能,我們在網站中看到的各種各樣的分頁條,后臺 都需要借助于數據庫的分頁操作。 1.語法 SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查詢記錄數 ; 注意事項: ? 起始索引從0開始,起始索引 = (查詢頁碼 - 1)* 每頁顯示記錄數。 ? 分頁查詢是數據庫的方言,不同的數據庫有不同的實現,MySQL中是LIMIT。 ? 如果查詢的是第一頁數據,起始索引可以省略,直接簡寫為 limit 10。 (案例) 查詢第1頁員工數據, 每頁展示10條記錄 select * from emp limit 0,10; select * from emp limit 10; 查詢第2頁員工數據, 每頁展示10條記錄 --------> (頁碼-1)*頁展示記錄數 select * from emp limit 10,10;

    ?案例

    查詢年齡為20,21,22,23歲的員工信息。 select * from emp where gender = '男' and ( age between 20 and 40 ) and name like '___'; 統計員工表中, 年齡小于60歲的 , 男性員工和女性員工的人數。 select gender, count(*) from emp where age < 60 group by gender; 查詢所有年齡小于等于35歲員工的姓名和年齡,并對查詢結果按年齡升序排序,如果年齡相同按 入職時間降序排序。 select name , age from emp where age <= 35 order by age asc , entrydate desc; 查詢性別為男,且年齡在20-40 歲(含)以內的前5個員工信息,對查詢的結果按年齡升序排序, 年齡相同按入職時間升序排序。 select * from emp where gender = '男' and age between 20 and 40 order by age asc , entrydate asc limit 5 ;

    DQL-執行順序

    ????????在講解DQL語句的具體語法之前,我們已經講解了DQL語句的完整語法,及編寫順序,接下來,我們要 來說明的是DQL語句在執行時的執行順序,也就是先執行那一部分,后執行那一部分。

    ?

    驗證:

    查詢年齡大于15的員工姓名、年齡,并根據年齡進行升序排序。 在查詢時,我們給emp表起一個別名 e,然后在select 及 where中使用該別名。 select e.name , e.age from emp e where e.age > 15 order by age asc; 執行上述SQL語句后,我們看到依然可以正常的查詢到結果,此時就說明: from 先執行, 然后 where 和 select 執行。那 where 和 select 到底哪個先執行呢? 此時,此時我們可以給select后面的字段起別名,然后在 where 中使用這個別名,然后看看是否可 以執行成功。 select e.name ename , e.age eage from emp e where eage > 15 order by age asc;

    ?由此我們可以得出結論: from 先執行,然后執行 where , 再執行select 。

    接下來,我們再執行如下SQL語句,查看執行效果:

    select e.name ename , e.age eage from emp e where e.age > 15 order by eage asc; 結果執行成功。 那么也就驗證了: order by 是在select 語句之后執行的。 綜上所述,我們可以看到DQL語句的執行順序為: from ... where ... group by ... having ... select ... order by ... limit ...

    DQL-小結

    ????????


    DCL-介紹

    DCL英文全稱是Data Control Language(數據控制語言),用來管理數據庫用戶、控制數據庫的訪 問權限。

    DCL- 管理用戶

    1.查詢用戶

    select * from mysql.user;

    ?其中 Host代表當前用戶訪問的主機, 如果為localhost, 僅代表只能夠在當前本機訪問,是不可以

    遠程訪問的。 User代表的是訪問該數據庫的用戶名。在MySQL中需要通過HostUser來唯一標識 一 個用戶。

    2.創建用戶

    CREATE USER '用戶名'@'主機名' IDENTIFIED BY '密碼';

    3.修改用戶密碼

    ALTER USER '用戶名'@'主機名' IDENTIFIED WITH mysql_native_password BY '新密碼' ;

    4.刪除用戶

    DROP USER '用戶名'@'主機名' ;

    案例:

    創建用戶itcast, 只能夠在當前主機localhost訪問, 密碼123456; create user 'itcast'@'localhost' identified by '123456'; 創建用戶heima, 可以在任意主機訪問該數據庫, 密碼123456; create user 'heima'@'%' identified by '123456'; 修改用戶heima的訪問密碼為1234; alter user 'heima'@'%' identified with mysql_native_password by '1234'; 刪除 itcast@localhost 用戶 drop user 'itcast'@'localhost'; 注意事項:

    ? 在MySQL中需要通過用戶名@主機名的方式,來唯一標識一個用戶。

    ? 主機名可以使用 % 通配。 ? 這類SQL開發人員操作的比較少,主要是DBA( Database Administrator 數據庫管理員)使用。

    DCL-權限控制

    ?1.查詢權限

    SHOW GRANTS FOR '用戶名'@'主機名' ;

    2.授予權限

    GRANT 權限列表 ON 數據庫名.表名 TO '用戶名'@'主機名';

    3.撤銷權限

    REVOKE 權限列表 ON 數據庫名.表名 FROM '用戶名'@'主機名';

    (案例)

    查詢 'heima'@'%' 用戶的權限 show grants for 'heima'@'%'; 授予 'heima'@'%' 用戶itcast數據庫所有表的所有操作權限 grant all on itcast.* to 'heima'@'%'; 撤銷 'heima'@'%' 用戶的itcast數據庫的所有權限 revoke all on itcast.* from 'heima'@'%'; 注意事項: ? 多個權限之間,使用逗號分隔 ? 授權時, 數據庫名和表名可以使用 * 進行通配,代表所有。

    DCL-小結

    ?

    總結

    以上是生活随笔為你收集整理的数据库自学-SQL-四大SQL语句DDL、DML、DQL、DCL的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。