数据库SQL语言分类(DDL/DML/DQL/TCL/DCL)
文章目錄
- 一、數(shù)據(jù)定義語言 DDL
- (一)create 數(shù)據(jù)庫對(duì)象的創(chuàng)建
- (二)alter 修改數(shù)據(jù)庫對(duì)象
- (三)drop 刪除數(shù)據(jù)庫對(duì)象
- (四)truncate 清空表數(shù)據(jù)
- 二、數(shù)據(jù)操縱語言 DML
- (一)insert 插入操作
- (二)update 更新操作
- (三)delete 刪除操作
- 三、數(shù)據(jù)查詢語言 DQL
- (一)select 查詢操作語言
- 四、事務(wù)控制語言 TCL
- (一)什么是事務(wù)
- (二)事務(wù)的開始和終止(事務(wù)邊界)
- (三)事務(wù)的總結(jié)
- (四)事務(wù)控制語言
- 1. commit 提交數(shù)據(jù)
- 2. rollback 數(shù)據(jù)回滾
- 3. savepoint 保存點(diǎn)
- 五、數(shù)據(jù)控制語言 DCL
- (一)grant授權(quán)
- (二)revoke收權(quán)
一、數(shù)據(jù)定義語言 DDL
數(shù)據(jù)定義語言DDL( Data Definition Language ) , 是 SQL 語言集中負(fù)責(zé)數(shù)據(jù)結(jié)構(gòu)定義與數(shù)據(jù)庫對(duì)象定義的語言 , 主要有 create、alter、drop 和 truncate 四種常用語句。DDL 對(duì)數(shù)據(jù)結(jié)構(gòu)起作用。
(一)create 數(shù)據(jù)庫對(duì)象的創(chuàng)建
創(chuàng)建表:
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 '項(xiàng)目名稱',start_date date DEFAULT NULL COMMENT '項(xiàng)目開始時(shí)間',end_date date DEFAULT NULL COMMENT '項(xiàng)目結(jié)束時(shí)間' ) 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 '標(biāo)題',`subtitle` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '副標(biāo)題',`marketPrice` decimal(11,2) DEFAULT NULL COMMENT '市場價(jià)',`currentSellingPrice` decimal(11,2) NOT NULL COMMENT '現(xiàn)售價(jià)',`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='商品表';創(chuàng)建數(shù)據(jù)庫:
create database if not exists db1 character set GBK; -- 若不存在數(shù)據(jù)庫db1,則創(chuàng)建該數(shù)據(jù)庫(二)alter 修改數(shù)據(jù)庫對(duì)象
# 給字段添加外鍵約束 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 的作用:一旦主表數(shù)據(jù)被刪除 , 從表關(guān)聯(lián)數(shù)據(jù)置為 null# 給字段添加外鍵約束 alter table student_ning4 add constraint stu_n4_mid_fk foreign key (majorid) references major_ning(id) on delete cascade;# on delete cascade 的作用:級(jí)聯(lián)刪除( 主表數(shù)據(jù)刪除 , 從表相關(guān)聯(lián)數(shù)據(jù)統(tǒng)統(tǒng)刪除 )# 刪除約束條件 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后面不能出現(xiàn)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 '測(cè)試表';# 修改數(shù)據(jù)庫的字符編碼 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);# 給多個(gè)字段添加唯一約束 ALTER TABLE user ADD unique(account_name,nickname);(三)drop 刪除數(shù)據(jù)庫對(duì)象
# 刪除表 drop table if exists t_employee;# 如果存在表t_employee,則刪除表結(jié)構(gòu)和表數(shù)據(jù)# 刪除數(shù)據(jù)庫 drop database if exists db1;(四)truncate 清空表數(shù)據(jù)
- truncate 在功能上等同于:delete + commit
- delete 操作將刪除數(shù)據(jù)存儲(chǔ)到臨時(shí)空間中 , 不直接刪除 , 可以回退
- truncate 操作直接刪除 , 不占用臨時(shí)空間 , 不能回退
二、數(shù)據(jù)操縱語言 DML
數(shù)據(jù)操縱語言DML( Data Manipulation Language ) , 用戶通過它可以實(shí)現(xiàn)對(duì)數(shù)據(jù)表的基本操作 ,即對(duì)表中數(shù)據(jù)的增、刪、改。DML 對(duì)數(shù)據(jù)起作用。
(一)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數(shù)據(jù)庫中,from可以省略 delete emp_bak1 where deptno = 10 ;三、數(shù)據(jù)查詢語言 DQL
數(shù)據(jù)查詢語言 DQL( Data Query Language ) , 用戶主要通過它實(shí)現(xiàn)對(duì)數(shù)據(jù)的查詢操作。
(一)select 查詢操作語言
select ename , hiredate from emp_xxx where ename='amy';四、事務(wù)控制語言 TCL
(一)什么是事務(wù)
- commit 事務(wù)提交 將所有的數(shù)據(jù)改動(dòng)提交
- rollback 事務(wù)回滾 回退到事務(wù)之初 , 數(shù)據(jù)的狀態(tài)和事務(wù)開始之前完全一
致 - savepoint 事務(wù)保存點(diǎn)( 較不常用 )
(二)事務(wù)的開始和終止(事務(wù)邊界)
事務(wù)開始
事務(wù)開始于上一個(gè)事務(wù)的終止或者第一條 DML 語句
事務(wù)終止
- 事務(wù)終止于 commit/rollback 顯式操作( 即控制臺(tái)輸入 commit/rollback ) - 如果連接關(guān)閉 , 事務(wù)( Transaction )將隱式提交
- DDL 操作( 比如 create ) , 事務(wù)將隱式提交
- 如果出現(xiàn)異常 , 事務(wù)將隱式回滾。
(三)事務(wù)的總結(jié)
- 所有的會(huì)話都能看到被改變的結(jié)果 ;
- 數(shù)據(jù)上的鎖被釋放 ;
- 保存數(shù)據(jù)的臨時(shí)空間被釋放
- 數(shù)據(jù)的改變被取消 ;
- 數(shù)據(jù)上的鎖被釋放 ;
- 臨時(shí)空間被釋放
(四)事務(wù)控制語言
事務(wù)控制語言TCL(Transaction Control Language),用來對(duì) DML 操作進(jìn)行確認(rèn)的。
1. commit 提交數(shù)據(jù)
update t_employee set ename = 'liudehua' where empno = 001; commit;2. rollback 數(shù)據(jù)回滾
update t_employee set ename = 'liudehua' where empno = 001; rollback;3. savepoint 保存點(diǎn)
設(shè)置保存點(diǎn) , 可以回滾( rollback )到指定的保存點(diǎn)。
create table mytemp_xxx( id number(4) ) ; --事務(wù)起點(diǎn) insert into mytemp_xxx values(3) ; savepoint A ; -- 設(shè)置保存點(diǎn) , 名為 A insert into mytemp_xxx values(4) ; savepoint B; -- 設(shè)置保存點(diǎn) , 名為 B insert into mytemp_xxx values(5) ; rollback to A ; -- 回滾到保存點(diǎn) A , 注意:A 之后的保存點(diǎn)全部被取消 select * from mytemp_xxx ; --3 被插入數(shù)據(jù)庫 , 4、5 沒有被插入五、數(shù)據(jù)控制語言 DCL
數(shù)據(jù)控制語言DCL(Data Control Language),用來對(duì)數(shù)據(jù)的權(quán)限進(jìn)行控制。
(一)grant授權(quán)
grant select on emp to openlab; # 假設(shè)現(xiàn)在的用戶是ninglj,ninglj 將查看emp表的權(quán)限賦予openlab, openlab只能看不能改(二)revoke收權(quán)
revoke select on emp from openlab; # ninglj 用戶將 select 權(quán)限回收總結(jié)
以上是生活随笔為你收集整理的数据库SQL语言分类(DDL/DML/DQL/TCL/DCL)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 太原市是哪个省(有几个区几个县)
- 下一篇: MySQL之命令mysql -- MyS