数据库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 清空表数据

  1. truncate 保留表结构 , 删除表中所有数据
  2. truncate 操作不需提交( commit ) , 没有回退( rollback )的机会
  3. 语法结构: truncate table 表名 ;
  4. 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

(一)什么是事务

  1. 事务是一组 DML 操作的逻辑单元 , 用来保证数据的一致性。
  2. 在一个事务内 , 组成事务的这组 DML 操作 , 或者一起成功提交 , 或者一起被撤销。
  3. 事务控制语言 TCL( Transaction Control Language )
  • commit 事务提交 将所有的数据改动提交
  • rollback 事务回滚 回退到事务之初 , 数据的状态和事务开始之前完全一
  • savepoint 事务保存点( 较不常用 )

(二)事务的开始和终止(事务边界)

  1. 事务开始
    事务开始于上一个事务的终止或者第一条 DML 语句

  2. 事务终止

  • 事务终止于 commit/rollback 显式操作( 即控制台输入 commit/rollback ) - 如果连接关闭 , 事务( Transaction )将隐式提交
  • DDL 操作( 比如 create ) , 事务将隐式提交
  • 如果出现异常 , 事务将隐式回滚。

(三)事务的总结

  1. 事务内部的数据改变只有在自己的会话中能够看到
  2. 事务会对操作的数据加锁 , 不允许其它事务操作
  3. 如果提交( commit )后 , 数据的改变被确认 , 则
  • 所有的会话都能看到被改变的结果 ;
  • 数据上的锁被释放 ;
  • 保存数据的临时空间被释放
  1. 如果回滚( 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 权限回收

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【WebRTC---源码篇】(十三)WebRTC/Pacer

pacer作用 NextSendTime Timestamp PacingController::NextSendTime() const {Timestamp now = CurrentTime();if (paused_) {return last_send_time_ + kPausedProcessInterval;}// If probing is active, that always takes priority.if (prober_.IsProbing()) {Timest…

卡夫卡如何分区_通过分区在卡夫卡实现订单担保人

卡夫卡如何分区Kafka最重要的功能之一是实现消息的负载平衡,并保证分布式集群中的排序,否则在传统队列中是不可能的。 首先让我们尝试了解问题陈述 让我们假设我们有一个主题,其中发送消息,并且有一个消费者正在使用这些消息。 …

全景视觉空间直线检测_视觉SLAM深度解读

近年来,SLAM技术取得了惊人的发展,领先一步的激光SLAM已成熟的应用于各大场景中,视觉SLAM虽在落地应用上不及激光SLAM,但也是目前研究的一大热点,今天我们就来详细聊聊视觉SLAM的那些事儿。视觉SLAM是什么?…

HTTP网页请求响应的状态码/状态代码

文章目录1开头 询问客户端是否还有请求消息2开头 (请求成功)表示成功处理了请求的状态代码3开头 (请求被重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向4开头 (请求错误&…

某人想在h小时内钓到_为某人命名以重新连接到您的服务器

某人想在h小时内钓到在进行测试自动化时,通常需要知道当前计算机的名称,以提示另一台计算机连接到它,特别是在并行运行测试的情况下。 本周,我试图对服务器进行测试,以使其连接回在从属测试计算机上运行的WireMock服务…

对象必须实现 iconvertible。_java面向对象最全入门笔记(通俗易懂,适合初学者)...

前言:面向对象的三大特征封装 (Encapsulation)继承 (Inheritance)多态 (Polymorphism)编程思想:面向过程:做某件事情都需要自己亲历亲为,按照步骤去完成面向对象:做某件事情不需要自己亲历亲为,只需指定特定的对象去完…

C++ 【随想录】(一)模拟矩阵相乘

#include<iostream> using namespace std; const int N 105; int R1[N][N], R2[N][N], ans[N][N];int main() {int m, p, n;cin >> m >> p >> n;for (int i 0; i < m; i) {//录入第一个矩阵for (int j 0; j < p; j) {cin >> R1[i][j];}…

HH SaaS电商系统的结算系统设计

文章目录一、第三方卖家销售货款结算流程说明&#xff1a;销售货款结算逻辑流程图预期收入如何统计二、第三方卖家推广分销佣金结算佣金结算逻辑流程图逾期佣金收入如何统计三、采购货款结算租户采购货款结算流程说明商城采购货款结算流程说明店铺商家的采购货款结算流程说明四…

java8并行流_Java 8:CompletableFuture与并行流

java8并行流这篇文章展示了Java 8的CompletableFuture在执行异步计算时如何与并行流进行比较。 我们将使用以下类对长时间运行的任务进行建模&#xff1a; class MyTask {private final int duration;public MyTask(int duration) {this.duration duration;}public int calc…

postgresql删除索引_PostgreSQL 13 发布,索引和查找有重大改进

9月24日&#xff0c;PostgreSQL全球开发组宣布PostgreSQL 13正式发布&#xff0c;作为世界上使用最多的开源数据库之一&#xff0c;PostgresSQL 13是目前的最新版本。PostgreSQL 13 在索引和查找方面进行了重大改进&#xff0c;有利于大型数据库系统&#xff0c;改进包括索引的…

【WebRTC---源码篇】(十六)WebRTC/NetEQ

WebRTC【4096版本】 NetEQ的作用 进行抖动控制和丢包隐藏,通过该技术可以让音频更平滑 NetEQ插入packet数据 int NetEqImpl::InsertPacketInternal(const RTPHeader& rtp_header,rtc::ArrayView<const uint8_t> payload) {//如果有效荷载payload为空if (paylo…

HH SaaS电商系统的销售订单设计

文章目录订单销售类型订单优惠优惠方式子订单优惠金额订单拆单订单发货销售订单拆单逻辑图销售订单的信息结构相关实体订单运营类型&#xff08;作废&#xff09;售后截止时间订单状态状态机的设计不同属性组合下的订单状态组合1&#xff1a;实物线上非预售非定制非拼单快递组合…

kafka netty_惠而浦:使用Netty和Kafka的微服务

kafka netty介绍 在上一个博客中 &#xff0c;我介绍了Netty用作Web服务器。 该示例运行良好……只要需要广播服务器即可。 大多数情况下不是很有用。 更有可能的是&#xff0c;每个客户端仅接收针对其的数据&#xff0c;并保留了特殊情况下的广播&#xff0c;例如“服务器在1…

HH SaaS电商系统的拼团系统设计

文章目录拼团业务流程拼团单实体拼团单的状态拼团型订单的销售状态注意点拼团业务流程 创建活动 管理后台创建拼团活动&#xff0c;设置好活动有效期、成团人数、成团时效、限购数量、活动对象、添加活动商品&#xff0c;设置团长价和团员价&#xff0c;活动开始后活动对象在买…

统信uos系统考试题_离Windows更近一步!微信Linux原生版上线:国产统信UOS系统已适配...

就在本月11号&#xff0c;国产操作系统-统信 UOS发布了专业版 V20(1030)&#xff0c;功能更强大&#xff0c;同时性能和安全性均有所提升。而距离这个好消息过去没多久&#xff0c;统信软件官方再次发布了一个好消息&#xff1a;那就是微信桌面客户端(统信 UOS 版)研发完成&…

npm 引用子项目模块_Java / Web项目中的NPM模块Browser-Sync

npm 引用子项目模块Browser-Sync是一个方便的基于Node.js的NPM模块&#xff0c;可用于更快的Web开发。 浏览器同步可在许多设备之间同步文件更改和交互。 最重要的功能是实时重新加载。 我们也可以在Java / Web项目中使用Browser-Sync。 Cagatay Civici创造了一个伟大的 视频教…

电商系统的自提订单,提货流程如何设计

文章目录产生自提订单的场景非O2O模式平台的自提点和O2O模式平台的自提点区别提货核销二维码核销提货码核销产生自提订单的场景 自提订单通常在O2O场景下会涉及到&#xff0c;所以通常是在O2O店铺会产生这样的订单&#xff0c;当然B2C模式的平台也会产生自提订单&#xff0c;例…

xrd精修教程_XRD精修系列干货 | 带你领略晶体之美

1. XRD精修教程(一)——XRD精修基本原理与GSAS软件简介(附GSAS软件下载链接)点击上图即可查看全文X射线衍射分析(XRD)在研究材料的相结构、相成分等多个方面有广泛的应用&#xff0c;但最常用的多晶衍射法有个缺点&#xff1a;得到的谱峰重叠严重&#xff0c;从而造成大量材料结…

【WebRTC---源码篇】(十八)GoogREMB算法

GoogREMB是基于延时的接收端拥塞控制算法,主要包括以下四个部分: 1.RemoteBitrate Estimator ,是接收端延时拥塞控制算法的管理模块。一方面与外面模块打交道,从网络收/发模块获取RTP包的传输信息用于拥塞评估,或将内部评估的下一时刻的发送码率(大小)输出给网络收/发模…