数据库SQL语言分类(DDL/DML/DQL/TCL/DCL)
生活随笔
收集整理的這篇文章主要介紹了
数据库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 在功能上等同于:delete + commit
- delete 操作將刪除數據存儲到臨時空間中 , 不直接刪除 , 可以回退
- truncate 操作直接刪除 , 不占用臨時空間 , 不能回退
二、數據操縱語言 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
(一)什么是事務
- commit 事務提交 將所有的數據改動提交
- rollback 事務回滾 回退到事務之初 , 數據的狀態和事務開始之前完全一
致 - savepoint 事務保存點( 較不常用 )
(二)事務的開始和終止(事務邊界)
事務開始
事務開始于上一個事務的終止或者第一條 DML 語句
事務終止
- 事務終止于 commit/rollback 顯式操作( 即控制臺輸入 commit/rollback ) - 如果連接關閉 , 事務( Transaction )將隱式提交
- DDL 操作( 比如 create ) , 事務將隱式提交
- 如果出現異常 , 事務將隱式回滾。
(三)事務的總結
- 所有的會話都能看到被改變的結果 ;
- 數據上的鎖被釋放 ;
- 保存數據的臨時空間被釋放
- 數據的改變被取消 ;
- 數據上的鎖被釋放 ;
- 臨時空間被釋放
(四)事務控制語言
事務控制語言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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 太原市是哪个省(有几个区几个县)
- 下一篇: 电脑换系统有理如何给电脑换系统