200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 数据库SQL语言分类(DDL/DML/DQL/TCL/DCL)

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

时间:2021-12-13 21:57:35

相关推荐

数据库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_ning4add constraint stu_n4_mid_fkforeign key (majorid) references major_ning(id) on delete set null;# on delete set null 的作用:一旦主表数据被删除 , 从表关联数据置为 null# 给字段添加外键约束alter table student_ning4add constraint stu_n4_mid_fkforeign key (majorid) references major_ning(id) on delete cascade;# on delete cascade 的作用:级联删除( 主表数据删除 , 从表相关联数据统统删除 )# 删除约束条件alter table student_ning4drop 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后面不能出现columnalter 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 + commitdelete 操作将删除数据存储到临时空间中 , 不直接删除 , 可以回退truncate 操作直接删除 , 不占用临时空间 , 不能回退

truncate table t_employee;

二、数据操纵语言 DML

数据操纵语言DML( Data Manipulation Language ) , 用户通过它可以实现对数据表的基本操作 ,即对表中数据的增、删、改。DML 对数据起作用。

(一)insert 插入操作

insert into user values (1001,'1234','liaowenxiong','18750197788','liaowenxiong@');

insert into t_employee (empno,ename,hiredate) values (1011,'liaowenxiong','-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; -- 设置保存点 , 名为 Binsert 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 权限回收

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。