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

歡迎訪問 生活随笔!

生活随笔

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

数据库

数据库SQL语言分类(DDL/DML/DQL/TCL/DCL)

發布時間:2023/12/3 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库SQL语言分类(DDL/DML/DQL/TCL/DCL) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 一、數據定義語言 DDL
      • (一)create 數據庫對象的創建
      • (二)alter 修改數據庫對象
      • (三)drop 刪除數據庫對象
      • (四)truncate 清空表數據
    • 二、數據操縱語言 DML
      • (一)insert 插入操作
      • (二)update 更新操作
      • (三)delete 刪除操作
    • 三、數據查詢語言 DQL
      • (一)select 查詢操作語言
    • 四、事務控制語言 TCL
      • (一)什么是事務
      • (二)事務的開始和終止(事務邊界)
      • (三)事務的總結
      • (四)事務控制語言
        • 1. commit 提交數據
        • 2. rollback 數據回滾
        • 3. savepoint 保存點
    • 五、數據控制語言 DCL
      • (一)grant授權
      • (二)revoke收權

一、數據定義語言 DDL

數據定義語言DDL( Data Definition Language ) , 是 SQL 語言集中負責數據結構定義與數據庫對象定義的語言 , 主要有 create、alter、drop 和 truncate 四種常用語句。DDL 對數據結構起作用。

(一)create 數據庫對象的創建

創建表:

CREATE TABLE t_employee (id bigint(20) unsigned DEFAULT NULL,project_name varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '項目名稱',start_date date DEFAULT NULL COMMENT '項目開始時間',end_date date DEFAULT NULL COMMENT '項目結束時間' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;CREATE TABLE `commodity` (`commodityId` bigint(20) unsigned zerofill NOT NULL AUTO_INCREMENT COMMENT '商品ID',`commodityCode` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品編碼',`title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '標題',`subtitle` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '副標題',`marketPrice` decimal(11,2) DEFAULT NULL COMMENT '市場價',`currentSellingPrice` decimal(11,2) NOT NULL COMMENT '現售價',`attributes` decimal(11,2) NOT NULL COMMENT '商品屬性',`description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '商品描述',`categoryId` smallint(5) unsigned zerofill NOT NULL COMMENT '所屬類目ID',PRIMARY KEY (`commodityId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商品表';

創建數據庫:

create database if not exists db1 character set GBK; -- 若不存在數據庫db1,則創建該數據庫

(二)alter 修改數據庫對象

# 給字段添加外鍵約束 alter table student_ning4 add constraint stu_n4_mid_fk foreign key (majorid) references major_ning(id) on delete set null;# on delete set null 的作用:一旦主表數據被刪除 , 從表關聯數據置為 null# 給字段添加外鍵約束 alter table student_ning4 add constraint stu_n4_mid_fk foreign key (majorid) references major_ning(id) on delete cascade;# on delete cascade 的作用:級聯刪除( 主表數據刪除 , 從表相關聯數據統統刪除 )# 刪除約束條件 alter table student_ning4 drop constraint stu_n4_mid_fk;# 增加字段 alter table mytemp_xxx add(name char(10));# 增加字段,并且指定字段的位置 alter table emp add column nickname varchar(50) default null after name; -- after后面不能出現column alter table emp add nickname varchar(50) default null after name; alter table emp add nickname varchar(50) after name; -- 字段長度不可以省略# Oracle修改字段名 alter table mytemp_xxx rename column password to pwd;# MySQL修改字段名、類型、長度 alter table emp_yyy change job jobs varchar(50); alter table emp_yyy change column job jobs varchar(50);# Oracle修改字段類型 alter table mytemp_xxx modify (pwd char(8)); alter table t_pf_dep modify (depcode varchar2(100)); # MySQL修改字段類型、長度 alter table emp_yyy modify job char(25); alter table emp_yyy modify column job char(25);# 刪除字段 alter table mytemp_xxx drop column pwd; alter table mytemp_xxx drop pwd;# 修改字段注釋 alter table test modify column sex enum('M','F') comment '性別';# 修改表名的注釋 alter table test comment '測試表';# 修改數據庫的字符編碼 alter database db1 character set GBK;# 修改表名 alter table table_name rename to new_table_name;# 修改字段允許為空 alter table user modify real_name varchar(30) null;# 修改字段不許為空 alter table user modify real_name varchar(30) not null;# 給字段添加唯一約束 ALTER TABLE user ADD unique(account_name);# 給多個字段添加唯一約束 ALTER TABLE user ADD unique(account_name,nickname);

(三)drop 刪除數據庫對象

# 刪除表 drop table if exists t_employee;# 如果存在表t_employee,則刪除表結構和表數據# 刪除數據庫 drop database if exists db1;

(四)truncate 清空表數據

  • truncate 保留表結構 , 刪除表中所有數據
  • truncate 操作不需提交( commit ) , 沒有回退( rollback )的機會
  • 語法結構: truncate table 表名 ;
  • truncate和delete 的區別:
    • truncate 在功能上等同于:delete + commit
    • delete 操作將刪除數據存儲到臨時空間中 , 不直接刪除 , 可以回退
    • truncate 操作直接刪除 , 不占用臨時空間 , 不能回退
    truncate table t_employee;

    二、數據操縱語言 DML

    數據操縱語言DML( Data Manipulation Language ) , 用戶通過它可以實現對數據表的基本操作 ,即對表中數據的增、刪、改。DML 對數據起作用。

    (一)insert 插入操作

    insert into user values (1001,'1234','liaowenxiong','18750197788','liaowenxiong@sina.com'); insert into t_employee (empno,ename,hiredate) values (1011,'liaowenxiong','2011-01-01');

    (二)update 更新操作

    update emp_xxx set salary = 3000 where ename = 'amy' ;

    (三)delete 刪除操作

    delete from t_employee; # Oracle數據庫中,from可以省略 delete emp_bak1 where deptno = 10 ;

    三、數據查詢語言 DQL

    數據查詢語言 DQL( Data Query Language ) , 用戶主要通過它實現對數據的查詢操作。

    (一)select 查詢操作語言

    select ename , hiredate from emp_xxx where ename='amy';

    四、事務控制語言 TCL

    (一)什么是事務

  • 事務是一組 DML 操作的邏輯單元 , 用來保證數據的一致性。
  • 在一個事務內 , 組成事務的這組 DML 操作 , 或者一起成功提交 , 或者一起被撤銷。
  • 事務控制語言 TCL( Transaction Control Language )
    • commit 事務提交 將所有的數據改動提交
    • rollback 事務回滾 回退到事務之初 , 數據的狀態和事務開始之前完全一
    • savepoint 事務保存點( 較不常用 )

    (二)事務的開始和終止(事務邊界)

  • 事務開始
    事務開始于上一個事務的終止或者第一條 DML 語句

  • 事務終止

    • 事務終止于 commit/rollback 顯式操作( 即控制臺輸入 commit/rollback ) - 如果連接關閉 , 事務( Transaction )將隱式提交
    • DDL 操作( 比如 create ) , 事務將隱式提交
    • 如果出現異常 , 事務將隱式回滾。

    (三)事務的總結

  • 事務內部的數據改變只有在自己的會話中能夠看到
  • 事務會對操作的數據加鎖 , 不允許其它事務操作
  • 如果提交( commit )后 , 數據的改變被確認 , 則
    • 所有的會話都能看到被改變的結果 ;
    • 數據上的鎖被釋放 ;
    • 保存數據的臨時空間被釋放
  • 如果回滾( rollback ) , 則
    • 數據的改變被取消 ;
    • 數據上的鎖被釋放 ;
    • 臨時空間被釋放

    (四)事務控制語言

    事務控制語言TCL(Transaction Control Language),用來對 DML 操作進行確認的。

    1. commit 提交數據

    update t_employee set ename = 'liudehua' where empno = 001; commit;

    2. rollback 數據回滾

    update t_employee set ename = 'liudehua' where empno = 001; rollback;

    3. savepoint 保存點

    設置保存點 , 可以回滾( rollback )到指定的保存點。

    create table mytemp_xxx( id number(4) ) ; --事務起點 insert into mytemp_xxx values(3) ; savepoint A ; -- 設置保存點 , 名為 A insert into mytemp_xxx values(4) ; savepoint B; -- 設置保存點 , 名為 B insert into mytemp_xxx values(5) ; rollback to A ; -- 回滾到保存點 A , 注意:A 之后的保存點全部被取消 select * from mytemp_xxx ; --3 被插入數據庫 , 4、5 沒有被插入

    五、數據控制語言 DCL

    數據控制語言DCL(Data Control Language),用來對數據的權限進行控制。

    (一)grant授權

    grant select on emp to openlab; # 假設現在的用戶是ninglj,ninglj 將查看emp表的權限賦予openlab, openlab只能看不能改

    (二)revoke收權

    revoke select on emp from openlab; # ninglj 用戶將 select 權限回收

    總結

    以上是生活随笔為你收集整理的数据库SQL语言分类(DDL/DML/DQL/TCL/DCL)的全部內容,希望文章能夠幫你解決所遇到的問題。

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