比特派最新下载链接安装|dml
SQL语言:DDL、DML、DQL、DCL详解 - 知乎
SQL语言:DDL、DML、DQL、DCL详解 - 知乎首发于1024笔记切换模式写文章登录/注册SQL语言:DDL、DML、DQL、DCL详解苏格拉没有底上海理工大学 计算机技术硕士作者:江夏| 知乎:www.zhihu.com/people/1024…| GitHub:github.com/JiangXia-10…| CSDN:blog.csdn.net/qq_4115394…| 掘金:juejin.cn/user/651387…| 公众号:1024笔记前言SQL程序语言有四种类型,对数据库的基本操作都属于这四类,它们分别为;数据定义语言(DDL)、数据查询语言(DQL)、数据操纵语言(DML)、数据控制语言(DCL)数据定义语言(DDL)DDL全称是Data Definition Language,即数据定义语言,定义语言就是定义关系模式、删除关系、修改关系模式以及创建数据库中的各种对象,比如表、聚簇、索引、视图、函数、存储过程和触发器等等。数据定义语言是由SQL语言集中负责数据结构定义与数据库对象定义的语言,并且由CREATE、ALTER、DROP和TRUNCATE四个语法组成。比如: --创建一个student表
create table student(
id int identity(1,1) not null,
name varchar(20) null,
course varchar(20) null,
grade numeric null
)--student表增加一个年龄字段
alter table student add age int NULL --student表删除年龄字段,删除的字段前面需要加column,不然会报错,而添加字段不需要加column
alter table student drop Column age
--删除student表
drop table student --删除表的数据和表的结构
truncate table student -- 只是清空表的数据,,但并不删除表的结构,student表还在只是数据为空数据操纵语言(DML)数据操纵语言全程是Data Manipulation Language,主要是进行插入元组、删除元组、修改元组的操作。主要有insert、update、delete语法组成。 --向student表中插入数据
--数据库插入数据 一次性插入多行多列 格式为INSERT INTO table (字段1, 字段2,字段3) VALUES (值1,值2,值3),(值1,值2,值3),...;
INSERT INTO student (name, course,grade) VALUES ('张飞','语文',90),('刘备','数学',70),('关羽','历史',25),('张云','英语',13);
--更新关羽的成绩
update student set grade='18' where name='关羽'
--关羽因为历史成绩太低,要退学,所以删除关羽这个学生
delete from student where name='关羽'
数据查询语言(DQL)数据查询语言全称是Data Query Language,所以是用来进行数据库中数据的查询的,即最常用的select语句 --从student表中查询所有的数据
select * from student
--从student表中查询姓名为张飞的学生
select * from student where name='张飞'
数据控制语言(DCL)数据控制语言:Data Control Language。用来授权或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,能够对数据库进行监视。比如常见的授权、取消授权、回滚、提交等等操作。1、创建用户语法结构:CREATE USER 用户名@地址 IDENTIFIED BY '密码';
--创建一个testuser用户,密码111111
create user testuser@localhost identified by '111111';
复制代码2、给用户授权 语法结构: GRANT 权限1, … , 权限n ON 数据库.对象 TO 用户名;
--将test数据库中所有对象(表、视图、存储过程,触发器等。*表示所有对象)的create,alter,drop,insert,update,delete,select赋给testuser用户
grant create,alter,drop,insert,update,delete,select on test.* to testuser@localhost;
3、撤销授权语法结构:REVOKE权限1, … , 权限n ON 数据库.对象 FORM 用户名;
--将test数据库中所有对象的create,alter,drop权限撤销
revoke create,alter,drop on test.* to testuser@localhost;
复制代码4、查看用户权限语法结构: SHOW GRANTS FOR 用户名;
--查看testuser的用户权限
show grants for testuser@localhost;
复制代码5、删除用户语法结构:DROP USER 用户名;
--删除testuser用户
drop user testuser@localhost;
复制代码6、修改用户密码语法结构:USE mysql;
UPDATE USER SET PASSWORD=PASSWORD(‘密码’) WHERE User=’用户名’ and Host=’IP’;
FLUSH PRIVILEGES;
--将testuser的密码改为123456
update user set password=password('123456') where user='testuser' and host=’localhost’;
FLUSH PRIVILEGES;
复制代码结尾本文对SQL程序语言有四种操作语言做了一个简单的介绍和概括,对数据库的基本操作都属于这四类,它们分别为;数据定义语言(DDL)、数据查询语言(DQL)、数据操纵语言(DML)、数据控制语言(DCL) 。最后欢迎关注公众号,免费获取海量学习资源(涵盖视频、源码、文档): 历史推荐:Spring注解(三):@scope设置组件作用域Spring常用注解大全,值得你的收藏!!!Spring注解(七):使用@Value对Bean进行属性赋值Spring注解(五):容器注册组件的四种方式Spring注解(六):Bean的生命周期中自定义初始化和销毁方法的四种方式发布于 2021-07-20 20:27数据库SQL赞同 806 条评论分享喜欢收藏申请转载文章被以下专栏收录1024笔记微信搜索【1024笔记】,免费获取海量学
聊聊SQL语句中 DDL 、DML 、DQL 、DCL 分别是什么_ddl dml dcl dql语句-CSDN博客
>聊聊SQL语句中 DDL 、DML 、DQL 、DCL 分别是什么_ddl dml dcl dql语句-CSDN博客
聊聊SQL语句中 DDL 、DML 、DQL 、DCL 分别是什么
最新推荐文章于 2024-03-04 09:21:39 发布
苜苜的烂笔头
最新推荐文章于 2024-03-04 09:21:39 发布
阅读量8.5w
收藏
1.1k
点赞数
385
分类专栏:
MySQL
文章标签:
sql
mysql
数据库
概念
区别
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45069279/article/details/115270096
版权
MySQL
专栏收录该内容
2 篇文章
37 订阅
订阅专栏
数据库的核心语言就是SQL语言,那 DDL、DML、DQL、DCL 分别是什么?下面谈谈这四者的概念。
一、 DDL 语句二、 DML 语句三、 DQL 语句四、 DCL 语句
一、 DDL 语句
DDL(Data Definition Language)语句: 数据定义语言,主要是进行定义/改变表的结构、数据类型、表之间的链接等操作。常用的语句关键字有 CREATE、DROP、ALTER 等。
模板如下:
CREATE TABLE 表名(
列名1 数据类型,
列名2 数据类型,
列名3 数据类型,
...
)
ALTER TABLE 表名;
eg:ALTER TABLE 表名 ADD 列名 数据类型;(添加一个列)
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;(修改列名)
ALTER TABLE 表名 DROP 列名;
DROP TABLE 表名;
DROP DATABASE 数据库名;
二、 DML 语句
DML(Data Manipulation Language)语句: 数据操纵语言,主要是对数据进行增加、删除、修改操作。常用的语句关键字有 INSERT、UPDATE、DELETE 等。
DDL 语句与DML 语句的主要区别:
DDLDML名称数据定义语言数据操纵语言区别对数据库内部的对象进行创建、删除、修改操作只是对表内部数据进行操作 (不涉及到表的定义、结构的修改,也不涉及到其他对象)
模板如下:
INSERT INTO 表名 (字段1,字段2,...) values (某值,某值,...),(某值,某值,...);
UPDATE 表名 SET 列名=新值 WHERE 限定条件;
DELETE FROM 表名 WHERE 限定条件;
三、 DQL 语句
DQL(Data Query Language)语句:数据查询语言,主要是对数据进行查询操作。常用关键字有 SELECT、FROM、WHERE 等。
模板如下:
SELECT 列名 FROM 表名 WHERE 限定条件;
四、 DCL 语句
DCL(Data Control Language)语句: 数据控制语言,主要是用来设置/更改数据库用户权限。常用关键字有 GRANT、REVOKE 等。 一般人员很少用到DCL语句。
模板如下:
GRANT (授权)
REVOKE (取消权限)
如果文章对您有帮助,请点个赞,留给评论支持一下,若有疑问可以私信留言。如果能给个三连(点赞、收藏、关注 )就最好啦。
优惠劵
苜苜的烂笔头
关注
关注
385
点赞
踩
1171
收藏
觉得还不错?
一键收藏
打赏
知道了
51
评论
聊聊SQL语句中 DDL 、DML 、DQL 、DCL 分别是什么
分别介绍数据库中 DDL、 DML、 DQL、 DCL 这四者的概念/区别。
复制链接
扫一扫
专栏目录
MySQL数据库-概括以及DDL、DML、DQL、DCL的详解
12-20
mysql数据库基础知识,从介绍数据库的含义到创建数据表,对数据增删改查的知识,很是详细,一看就懂。
数据库的DDL、DML、DQL、DCL名词详解
12-14
简言之:
1,DDL(DataDefinitionLanguage):数据定义语言,用来定义数据库对象:库、表、列等;
2,DML(DataManipulationLanguage):数据操作语言,用来定义数据库记录(数据);
3,DQL(DataQueryLanguage):数据查询语言,用来查询记录(数据);
4,DCL(DataControlLanguage):数据控制语言,用来定义访问权限和安全级别。
举例说明
1,DDL
用来定义数据库对象:库、表、列等;
适用范围:对数据库中的某些对象(例如,database,table)进行管理,如Create,Alter和Drop.
注意:
51 条评论
您还未登录,请先
登录
后发表或查看评论
MySQL一 | SQL语句
名不显时心不朽,再挑灯火看文章
12-05
664
SQL语句
SQL语法 DDL、DML、DQL、DCL
coderge's CSDN Blog.
03-22
456
SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。
DDL Data Definition Language 数据定义语言,用来定义数据库对象(数据库,表,字段)
DML Data Manipulation Language 数据操作语言,用来对数据库表中的数据进行增删改
DQL Data Query Language 数据查询语言,用来查询数据库中表的记录
DCL Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的访问权限
关于数据库中的DDL,DML,DCL,DQL之间的区别
qq_63945982的博客
03-30
718
所有的 DDL 语句都会导致事务隐式提交,换句话说,当你在执行 DDL 语句前,事务就已经提交了。2.DML (Data Manipulation Language)是用来操作数据库中的数据的语言,如插入、更新、删除数据等,在DML中支持事务的提交和回滚操作。4.DQL (Data Query Language)是用来查询数据库中的数据的语言,如 SELECT 语句。除了 GRANT 和 REVOKE 之外,其他的创建、更新或者删除用户的操作也会导致事务隐式提交。
mysql入门:ddl,dml,dql,dcl语句基本操作介绍
awofe的博客
05-15
951
数据库相关概念介绍什么是数据库sql语句简介sql语句分类:ddl语句:ddl:数据库 库的创建查找:ddl:数据库查询数据库创建ddl:数据库删除ddl:数据库 表 的操作ddl表操作:查询ddl 表操作——创建mysql数据类型ddl表——修改dml语句dml介绍:insert 给表中添加数据updata 修改数据delete 删除数据dql语句:dql介绍查询关键字:基本查询分类:设置别名去除重复记录dql之条件查询dql之聚合函数聚合函数练习dcl语句:dcl管理用户:1.查询用户dcl权限控制
浅谈DQL、DML、DDL、DCL区别!
dianxu0933的博客
12-07
7328
一、DQL
DQL(data Query Language) 数据查询语言
就是我们最经常用到的 SELECT(查)语句。主要用来对数据库中的数据进行查询操作。
二、DML
DML(data manipulation language)数据操纵语言:
就是我们最经常用到的 INSERT(增)、DELETE(删)、UPDATE(改)。主要用来对数据库重表的数...
数据库中DML、DDL、DCL、DQL都有什么区别
weixin_62160144的博客
02-11
1315
数据库中DML、DDL、DCL、DQL的定义以及相关命令
4、DDL语句(数据定义语言)
fruity_wine的博客
01-15
5162
DDL语句(数据定义语言)
SQL中有关DQL、DML、DDL、DCL的概念与区别
阳阳的博客
06-21
1433
SQL(Structure Query Language)结构化查询语言是数据库的核心语言,是高级的非过程化编程语言。它功能强大,效率高,简单易学易维护。SQL语言基本上独立于数据库本身、使用的机器、网络、操作系统,基于SQL的DBMS产品可以运行在从个人机、工作站到基于局域网、小型机和大型机的各种计算机系统上,具有良好的可移植性。
SQL结构化查询语言包含6个部分
1.数据查询语言(DQL: Data Query Language)
数据检索语句,用于从表中获取数据。通常最常用的为保留字SELECT
MySQL-SQL语言
qq_46096136的博客
09-14
7387
通过这条指令,主要是用来查看建表语句的,而有部分参数我们在创建表的时候,并未指定也会查询 到,因为这部分是数据库的默认值,如:存储引擎、字符集等。要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的。G.查询性别为男,且年龄在20-40 岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序, 年龄相同按入职时间升序排序。分页操作在业务系统开发时,也是非常常见的一个功能,我们在网站中看到的各种各样的分页条,后台 都需要借助于数据库的分页操作。
java学习笔记之sql常用语句
12-14
DDL(Data Definition Language):数据库定义语句;
DML(Data Manipulation Language):用于增删改查数据库中数据;
DCL(Data Control Language)用来向用户赋予/取消对数据对象的控制权限;
TCL(Transaction Control Language):用来对事务进行管理
数据库登录:
win+R运行cmd,输入 双引号里面的内容:"mysql -uroot -proot"回车,root为用户名和密码。
注意:执行win命令,后不需要加“;”,但执行mysql语句则需要加“;”
Oracle数据操作和控制语言详解
03-05
北京 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。其中用于定义数据的结构,比如创建、修改或者删除数据库;DCL用于定义数据库用户的权限;在这篇文章中我将详细讲述这两种语言在Oracle中的使用方法。 DML语言 DML是SQL的一个子集,主要用于修改数据,下表列出了ORACLE支持的DML语句。语句用途INSERT向表中添加行UPDATE更新存储在表中的数据DELETE删除行SELECTFORUPDATE禁止其他用户访问DML语句正在处理的行。LOCKTABLE禁止其他用户在表中使用DML语句 插入数据
mysql基本语法,增删改查大全总结,以及常用的sql语句总结
09-01
mysql语法大全总结,内含DDL,DML,DQL,DCL等语句,可作为工作学习的小字典,随时查看学习,查询所有数据库、查询当前数据库、创建数据库、删除数据库、切换数据库、查询当前数据库的所有表、查看指定表结构、查询指定表的建表语句、创建表结构、修改字段名和字段类型、给指定字段添加数据(insert)、给所有字段添加数据(insert)、批量添加数据(insert)、修改数据的语法、删除数据的具体语法 、- 基本查询(无条件)
- 条件查询(where)
- 聚合函数(count,max,min,avg,sum)
- 分组查询(group by)
- 排序查询(order by)
- 分页查询(limit)
DCL对话框自学教程
04-21
课程主要介绍 AutoLISP 程式的编写,配合使用 DCL(Dialog Control Language)
语言,作对话方框的开发及应用.本课程只适合对 AutoLISP 程式设计有相当认识
之人仕.全课共分为 12 篇,
详解SQL四种语言:DDL DML DCL TCL
09-10
本文详细介绍了sql的四种语言,包括数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)和事物控制语言(TCL)。在这几种语言中有疑惑的可以来看看这篇文章。
SQL系列之DDL/DCL语言
02-24
SQL语言主要分为以下四类:数据定义语言(DDL):用于下定义和管理数据对象(库,表,索引,视图),包括数据库,数据表等,例如:CREATEDROPALTER等语句。数据操作语言(DML):用于操作数据库对象中包含的数据,...
sql server 数据库like 实现参数化的思路
最新发布
cjh16606260986的博客
03-04
383
CHAEINDEX示例:CHARINDEX('张三',all_path_name),若 > 0表示存在,否则不存在。expressionToFind :目标字符串,就是想要找到的字符串,最大长度为8000。CHARINDEX原理:通过能够找到对应的字符串,则返回该字符串位置,否则返回0。start_location:开始查找的位置,为空时默认从第一位开始查找。1.使用CHARINDEX涵数返回非-1值表是有值,否则没有查询数据。expressionToSearch :用于被查找的字符串。
PostgreSQL开发与实战(4)查询性能Top SQL
03-01
625
pg_stat_statements可跟踪服务器执行的所有SQL语句的计划信息和执行统计信息,详见官方文档说明:[http://postgres.cn/docs/13/pgstatstatements.html](http://postgres.cn/docs/13/pgstatstatements.html)
ddl dml dql dcl
06-07
DDL(数据定义语言):这类语句用于定义或删除数据库对象,例如表、视图和索引。常见的 DDL 命令包括 CREATE、ALTER、DROP 和 TRUNCATE。
DML(数据操纵语言):这类语句用于操纵数据库中的数据,例如插入、更新和删除。常见的 DML 命令包括 INSERT、UPDATE 和 DELETE。
DQL(数据查询语言):这类语句用于从数据库中查询数据。常见的 DQL 命令包括 SELECT。
DCL(数据控制语言):这类语句用于控制数据库中的用户访问,例如授予或撤销数据库访问权限。常见的 DCL 命令包括 GRANT 和 REVOKE。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
苜苜的烂笔头
CSDN认证博客专家
CSDN认证企业博客
码龄5年
暂无认证
62
原创
2万+
周排名
60万+
总排名
606万+
访问
等级
2万+
积分
1865
粉丝
7692
获赞
6725
评论
1万+
收藏
私信
关注
热门文章
Navicat使用快速入门教程
311391
idea配置连接数据库的操作方法
164552
不会码云Gitee怎样实战使用?看完它你就知道了
161658
码云gitee使用操作之快速入门
151640
万字详解,Hadoop大数据技术简介及 伪分布式集群搭建快速入门教程
150760
分类专栏
嗡嗡嗡
Linux
5篇
虚拟机
6篇
Git
4篇
Python
10篇
Java
22篇
Hadoop
8篇
HBase
Kafka
Spark
工具/技巧
3篇
计算机网络
数据库管理工具
1篇
MySQL
2篇
MongoDB
1篇
Redis
最新评论
程序运行报错:AttributeError: module 'pandas' has no attribute 'tslib' 的解决方法
寻找你在的方向:
谢谢
解决IDEA中 XML文件屎黄色背景 的方法
辞寒oo:
不戳不戳,困扰了好久的问题
Navicat使用快速入门教程
苜苜的烂笔头:
我这两个表没有太多数据,只是用来演示,你可以新建一个再随意输入或者插入数据,作为测试/学习的数据源
启动Hadoop后 没有DataNode进程 的解决方法
空城3:
在data文件下
启动Hadoop后 没有DataNode进程 的解决方法
空城3:
在data文件下
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
还不会怎样同时打开多个微信?一次性打包带走吧
一文了解,如何在VMware指定磁盘分区 扩容
实战,idea创建web项目及tomcat部署
2021年11篇
2020年51篇
目录
目录
分类专栏
嗡嗡嗡
Linux
5篇
虚拟机
6篇
Git
4篇
Python
10篇
Java
22篇
Hadoop
8篇
HBase
Kafka
Spark
工具/技巧
3篇
计算机网络
数据库管理工具
1篇
MySQL
2篇
MongoDB
1篇
Redis
目录
评论 51
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
苜苜的烂笔头
你的鼓励将是我创作的最大动力
¥1
¥2
¥4
¥6
¥10
¥20
扫码支付:¥1
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
一文带你玩转SQL中的DML(数据操作)语言:从概念到常见操作大解析!数据操作不再难! - 知乎
一文带你玩转SQL中的DML(数据操作)语言:从概念到常见操作大解析!数据操作不再难! - 知乎切换模式写文章登录/注册一文带你玩转SQL中的DML(数据操作)语言:从概念到常见操作大解析!数据操作不再难!云端源想IT培训已认证账号“这里是云端源想IT,帮你轻松学IT”嗨~ 今天的你过得还好吗?人生就是走自己的路看自己的风景 - 2023.11.08 -前面我们介绍了SQL语句中数据定义语言(DDL)的概念以及它的常用语句,那么DML又是什么呢?二者有什么区别呢?本篇文章将为你讲述。一、DML简介DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新。它创建的模式(表)使用数据操作语言来填充。DDL填充表的行,每行称为Tuple。使用DML,您可以插入,修改,删除和检索表中的信息。DML命令有助于管理存储在数据库中的数据。但是,DML命令不会自动提交,因此变化不是永久性的。所以,可以回滚操作。一些DML命令包括insert,update,delete和select。insert命令有助于将新记录或行存储到表中;update命令有助于修改表中的现有记录;delete命令允许从表中删除某个记录或一组记录;select命令允许从一个或多个表中检索特定记录。关键字:插入 insert删除 delete更新 update二、DDL 语句与DML 语句的主要区别DDL 语句与DML 语句是SQL语言中的两种主要语句类别,它们在数据库操作中起到了不同的作用。具体来说,DDL有助于更改数据库的结构。它主要用于定义或修改数据库的架构,包括创建、删除和修改表、数据类型、索引等。常用的DDL语句关键字包括CREATE、DROP和ALTER等。例如,可以使用CREATE TABLE语句来创建一个新表,使用ALTER TABLE语句来修改现有表的结构。相反,DML有助于管理数据库中的数据。它涵盖了SQL中处理数据的基本操作,包括查询、插入、更新和删除数据。DML语句通常用于从数据库中提取信息、修改现有数据或添加新数据。一些常用的DML语句关键字包括SELECT、INSERT、UPDATE和DELETE等。通过这些语句,用户可以对数据库中的数据进行各种操作,以满足其需求。编程学习,从云端源想开始,课程视频、在线书籍、在线编程、一对一咨询……你想要的全部学习资源这里都有,重点是统统免费!点这里即可查看总之,DDL和DML分别代表了在数据库操作中的结构定义和管理数据的两个关键方面,它们共同构成了SQL语言的核心功能,使用户能够有效地创建和管理数据库。三、DML 常见操作前面我们已经了解了DML的概念和与DDL 语句的主要区别,下面我们来看看DML 常用语法有哪些。首先,准备一张表:1. 插入数据(INSERT)1.1 语法:INSERT INTO 表名[(字段1,字段2,...)] VALUES(字段的1值,字段2的值,...)注:在语法定义上"[]"中的内容表示可写可不写。例:注:数据库中字符串的字面量是使用单引号’'表达的VALUES中指定的值要与指定的字段名个数,顺序,以及类型完全一致查看表中数据SELECT * FROM person1.2 插入默认值当插入数据时不指定某个字段,那么该字段插入默认值。若创建表时字段没有显示的指定默认值时,默认值插入NULL。例:注意事项:age字段没有指定,因此插入默认值NULL;数据库中任何字段任何类型默认值都是NULL,当然可以在创建表时使用DEFAULT指定。1.3 全列插入当我们插入数据是不指定任何字段名时,就是全列插入。此时VALUES子句中需要为每个字段指定值。并且要求(个数,顺序,类型必须与表完全一致)例:2. 修改数据(UPDATE)2.1 语法UPDATE 表名 SET 字段1=新值1[,字段2=新值2,...][WHERE 过滤条件]例:注意:UPDATE语句通常都要添加WHERE子句,用于添加要修改记录的条件,否则全表修改!2.2 修改指定记录(添加WHERE子句)例:WHERE子句中常用的条件=, <, <= ,> ,>= ,<>(不等于使用<>。!=不是所有数据库都支持)2.3 将一个计算表达式的结果作为值使用2.4 同时修改多个字段3. 删除语句(DELETE)3.1 语法:DELETE FROM 表名 [WHERE 过滤条件]注:DELETE语句通常都要添加WHERE子句,否则是清空表操作例:3.2 清空表操作DELETE FROM person练习:四、总结DML是一种用于操作数据库中数据的语言。它提供了对数据的增、删、改、查等基本操作,是进行数据库编程的重要工具之一。在DML中,我们可以使用SELECT语句来查询数据库中的数据,使用INSERT语句来插入新的数据,使用UPDATE语句来更新已有的数据,以及使用DELETE语句来删除数据。这些操作可以通过简单的语法来实现,使得开发者能够更方便地对数据库中的数据进行处理。除了基本操作外,DML还支持事务处理机制。事务可以确保一系列操作的完整性和一致性,如果其中任何一个步骤失败,则所有步骤都会被回滚,否则它们将被提交到数据库中。这种机制对于需要保证数据一致性的应用程序非常重要。总的来说,DML是进行数据库编程不可或缺的一部分。通过熟练掌握DML的基本操作和事务处理机制,我们可以更高效地管理和操作数据库中的数据。同时,在实际应用中需要注意一些技巧和安全问题,如避免SQL注入攻击、优化查询语句等。我们下期再见!END文案编辑|云端学长文案配图|云端学长内容由:云端源想分享发布于 2023-11-08 16:41・IP 属地陕西SQL互联网数据分析数据赞同 1添加评论分享喜欢收藏申请
数据操纵语言_百度百科
语言_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心数据操纵语言播报讨论上传视频数据领域术语收藏查看我的收藏0有用+10数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句,通常是数据库专用编程语言之中的一个子集,例如在信息软件产业通行标准的SQL语言中,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入(意指新增或创建)、更新(修改)与删除(销毁)。在使用数据库的系统开发过程中,其中应用程序必然会使用的指令;而加上 SQL的SELECT语句,欧美地区的开发人员把这四种指令,以“CRUD”(分别为 Create, Read, Update, Delete英文四前缀字母缩略的术语)来称呼;而亚洲地区使用汉语的开发人员,或可能以四个汉字:增 查 改 删 来略称。中文名数据操纵语言外文名Data Manipulation Language插操作把数据插入到数据库中删操作删除数据库中不必再继改操作修改记录或数据库模式目录1简介2语法结构▪SELECT▪INSERT▪UPDATE▪DELETE3用户界面的增查改删功能简介播报编辑数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句,通常是数据库专用编程语言之中的一个子集,例如在信息软件产业通行标准的SQL语言中,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入(意指新增或创建)、更新(修改)与删除(销毁)。在使用数据库的系统开发过程中,其中应用程序必然会使用的指令;而加上 SQL的SELECT语句,欧美地区的开发人员把这四种指令,以“CRUD”(分别为 Create, Read, Update, Delete英文四前缀字母缩略的术语)来称呼;而亚洲地区使用汉语的开发人员,或可能以四个汉字:增 查 改 删来略称。 [1]语法结构播报编辑DML 的主要功能即是访问数据,因此其语法都是以读取与写入数据库为主,除了INSERT以外,其他指令都可能需搭配WHERE指令来过滤数据范围,或是不加WHERE指令来访问全部的数据。 [1]SELECT主条目:SELECTSELECT是SQL数据操纵语言(DML)中用于查询表格内字段数据的指令,可搭配条件限制的子句(如where)或排列顺序的子句(如order)来获取查询结果。INSERT主条目:INSERTINSERT 是将数据插入到数据库对象中的指令,可以插入数据的数据库对象有数据表以及可更新查看表两种。UPDATE主条目:UPDATEUPDATE 指令是依给定条件,将匹配条件的数据表中的数据更新为新的数值。DELETE主条目:DELETEDELETE 指令为自数据库对象中删除数据的指令。 [1]用户界面的增查改删功能播报编辑CRUD在多数用户界面的应用程序,也是与系统相关的重要功能。 例如在通讯录软件中,基本存储单元是单个联系人条目。一个通讯录软件最基本的功能,必须允许用户可以操作:添加或创建新的联系人条目读取,检索,搜索或查看现有条目更新或编辑现有条目删除现有条目如果没有这四个操作,该软件或许不是完整的版本。由于这些操作很重要,它们通常在一个大的功能标题下记录和描述,例如“联系人管理”,“内容管理”或“联系人维护”(或“文档管理”),具体取决于基本存储单元 特定的应用程序)。 [1]新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000什么是DML?其含义及其常用命令解析-CSDN博客
>什么是DML?其含义及其常用命令解析-CSDN博客
什么是DML?其含义及其常用命令解析
最新推荐文章于 2024-03-03 07:04:12 发布
是JF啊
最新推荐文章于 2024-03-03 07:04:12 发布
阅读量2.1w
收藏
36
点赞数
4
文章标签:
mysql
数据库
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44894962/article/details/105951324
版权
写在前面:本文为本人的学习记录,若有错误欢迎指出,看到立马改正. DDL、DQL、DML、DCL会分为四部分写,本篇写DML。
文章目录
什么是DML?查询表中所有数据插入数据更新数据删除数据
什么是DML?
DML:数据库操作语言,用来操作数据库表中的记录,如增删改查等。
查询表中所有数据
SELECT *FROM 表名;
SELECT *FROM student;
DML、DCL、DQL
插入数据
INSERT INTO 表名(列名1,列名2…) VALUE (列值1,列值2…);
INSERT INTO student(id,stu_name,stu_age) VALUE (3,'ww',20);
若要同时插入多条数据,将VALUE改为VALUES,后面再加括号即可
INSERT INTO student(id,stu_name,stu_age) VALUES (3,'ww',20),(4,'aa',20);
值得注意的是还有一种写法
INSERT INTO student VALUE (3,'ww',20);
直接表名后面加VALUE,使用这种写法后面的列值就要全部写出来,否则则会报错。使用第一种写法的话可以不插入全部数据。
更新数据
为了方便认识我们先加一个分数列
ALTER TABLE student ADD stu_score FLOAT;
1、将所有学生分数改为80
UPDATE student SET stu_score =80;
2、把姓名为zs的分数改为90
UPDATE student SET stu_score = 60 WHERE stu_name = 'zs';
3、把姓名为ls的年龄改为15,分数改为70
UPDATE student SET stu_age =15,stu_score=70 WHERE stu_name='ls';
4、在ww原有年龄基础上将其年龄再加一岁
UPDATE student SET stu_age =stu_age +1 WHERE stu_name='ww';
删除数据
删除表里所有数据 TRUNCATE TABLE 表名;
TRUNCATE TABLE student;
这种无法指定条件,只能删除整张表数据,如果用以下写法,则可以指定删除哪条数据 DELETE FROM 表名 where 列名 = xx;
DELETE FROM student where id =1;
DELECT 与 TRUNCATE 的区别:DELECT是删除表中数据,表结构还在,TRUNCATE 是直接把表DROP掉,然后再创建一个同样的新表,执行速度比DELECT快。
关注博主即可阅读全文
优惠劵
是JF啊
关注
关注
4
点赞
踩
36
收藏
觉得还不错?
一键收藏
知道了
3
评论
什么是DML?其含义及其常用命令解析
写在前面:本文为本人的学习记录,若有错误欢迎指出,看到立马改正.DDL、DQL、DML、DCL会分为四部分写,本篇写DML。什么是DML?DML:数据库操作语言,用来操作数据库表中的记录,如增删改查等。查询表中所有数据SELECT *FROM 表名;SELECT *FROM student;DML、DCL、DQL插入数据INSERT INTO 表名(列名1,列名2…) VALU...
复制链接
扫一扫
【MySQL基础4】DML详解
qq_61971608的博客
10-24
2878
DML
MySQL数据库基础操作—DML
qq_53060585的博客
01-13
1462
文章目录DML的基本介绍1.1数据插入1.2数据修改1.3 数据删除注意
DML的基本介绍
DML是指数据库操作语言,全称是Data Manipulate Language,作用是对数据库中表的数据记录进行更新。
关键字:
插入insert
更新update
删除delete
1.1数据插入
语法格式:
格式1:(向表中插入某些列)
insert into tableName(column1,column2,column3...)
values(values1,values2,values3...);
3 条评论
您还未登录,请先
登录
后发表或查看评论
数据库中DQL、DML、DDL、DCL、TCL
tiantiantbtb的博客
04-22
949
DDL(Data Definition Language)数据定义语言,用于定义和管理数据库中的所有对象的语言,对数据库中的某些对象(例如database,table)进行管理。DCL(Data Control Language )数据控制语句,操作对象是数据库的权限,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。Delete语句:删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是,它的操作对象仍是记录。Drop语句:可以删除数据表、索引、触发程序、条件约束以及数据表的权限等。
【MySQL基础】数据库操作语言DML相关操作有那些?
四季轮换叶,一路招摇胜
12-09
4183
DML是指数据操作语言, 用来对数据库中表的数据记录进行更新。基本操作关键字有:插入insert、删除delete、更新update。DML对数据的操作只包含增删改,不包括查询
常用的DML语句
十五十六
02-04
8308
DML
数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句,通常是数据库专用编程语言之中的一个子集,例如在信息软件产业通行标准的SQL语言中,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入(意指新增或创建)、更新(修改)与删除(销毁)。在使用数据库的系统开发过程中,其中应用程序必然会...
MySql基础汇总-DDL DML DQL DCL,存储过程,事务,触发器,函数等
脑壳疼
09-10
1743
use testdb;
-- /**********************************************一:数据库操作语言**********************************************/
-- DDL: 数据库定义语言:create drop alter
-- DML: 数据库管理语言:insert update delete
-- DQL: ...
SQL中的DML、DDL以及DCL是什么?
a657281084的博客
04-04
1394
而企业版则是收费的,不能在线下载,相应地,它提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。对于已经创建好的表,尤其是已经有大量数据的表,如果需要对表做一些结构上的改变,我们可以先将表删除(drop),然后再按照新的表定义重建表。这样做没有问题,但是必然要做一些额外的工作,比如数据的重新加载。DML 操作是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select),是开发人员日常使用最频繁的操作。
数据库----------DML
要银河 不要迎合
03-15
3790
DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新。插入 insert删除 delete更新 update。
【MySQL数据库 | 第八篇】DML操作
fckbb的博客
06-04
1071
DML(Data Manipulation Language)是一种用于对数据库中的数据进行操作的语言。DML语言主要用于插入、更新、删除和查询数据库中的数据。DML语言包含了以下几种主要的语法:1.SELECT:用于查询数据库中的数据。2.INSERT:用于向表中插入新数据。3.UPDATE:用于更新表中的数据。4.DELETE:用于删除表中的数据。DML语言主要用于对数据库中的数据进行操作,包括数据的增删改查等。
MySQL基础(二)----DML学习
qq_74259765的博客
06-04
878
接着上次内容,继续学习DML相关知识
PostgreSQL 常用命令速查表.pdf
09-30
PostgreSQL 常用命令和语句查询表,包括 psql 客户端工具使用、数据库和模式管理、用户和权限管理、表管理、表空间管理、索引、查询语句、DML 语句、事务控制、视图、存储过程/触发器、备份恢复等。
MySQL 常用命令速查表.pdf
09-25
MySQL 常用命令和语句查询表,包括 mysql 客户端工具使用、数据库管理、用户和权限管理、表管理、索引、查询语句、DML 语句、事务控制、视图、存储过程/触发器、备份恢复等。
DB2基本命令 实例管理和常用dml
07-15
12.整理表 db2 connect to o_yd user db2 using pwd db2 reorg table ydd db2 runstats on table ydd with distribution and indexes all 13.导出表数据 db2 export to c:\dftz.txt of del select * from dftz...
shell 调度的常用命令
01-20
目的是让他们知道再 DML 语句开发出来之后,如何写调度程序。 面向的人群:有一定的 sql 基础,尤其是 query 语句。 我们面向的平台是大数据平台,例如,hive 了解 shell 脚本 单个任务下,常见的几个问题 日期处理 ...
MySQL DML语句整理汇总
09-09
主要介绍了MySQL DML语句整理汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
MySQL——索引
m0_66510521的博客
03-02
911
MySQL——索引的数据结构、分类、失效情况、使用场景。
Redis、Elasticsearch(ES)、RocketMQ和MYSql 持久化对比
最新发布
qq_33665793的博客
03-03
945
本文将针对 Redis、Elasticsearch(ES)、 RocketMQ和MYSql 这四种常见的数据存储和消息队列系统进行持久化方面的对比分析,帮助读者更好地了解它们各自的特点和适用场景。综上所述,Redis、ES 、RocketMQ和 MySQL在数据持久化方面各有其特点和优势,适用于不同的应用场景。- 消息持久化:RocketMQ支持将消息持久化到磁盘,保证消息的可靠性和持久化存储。- 持久化方式:支持RDB快照和AOF日志两种持久化方式,可以实现数据的持久化保存。
springboot+vue+mysql项目使用的常用注解
来都来了
03-01
1035
Data 是一个 Lombok 提供的注解,使用 @Data 注解可以简化代码,使代码更加简洁易读。
MySQL运维实战之备份和恢复(8.4)xtrabackup恢复全量备份
03-01
1011
作者:俊达恢复全量备份大致可以分成以下几步:解压备份文件、prepare备份文件、将数据copy到目标实例相关目录、启动数据库实例。
dml 语句
06-01
DML(Data Manipulation Language)是 SQL 中的一个子集,用于在关系数据库中添加、修改和删除数据。常见的 DML 语句包括:
1. SELECT:从一个或多个表中检索数据。
2. INSERT:向表中插入新的行。
3. UPDATE:更新表中现有的行。
4. DELETE:从表中删除行。
下面是这些语句的使用示例:
1. SELECT 语句:
```
SELECT * FROM users;
```
这个语句将从名为 "users" 的表中检索所有列的所有行。
2. INSERT 语句:
```
INSERT INTO users (name, age, email) VALUES ('Alice', 25, 'alice@example.com');
```
这个语句将向名为 "users" 的表中插入一行数据,包括 name、age 和 email 列的值。
3. UPDATE 语句:
```
UPDATE users SET age = 26 WHERE name = 'Alice';
```
这个语句将更新名为 "users" 的表中 name 为 "Alice" 的行的 age 列的值为 26。
4. DELETE 语句:
```
DELETE FROM users WHERE name = 'Alice';
```
这个语句将从名为 "users" 的表中删除 name 为 "Alice" 的行。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
是JF啊
CSDN认证博客专家
CSDN认证企业博客
码龄5年
暂无认证
94
原创
5210
周排名
123万+
总排名
38万+
访问
等级
2543
积分
1万+
粉丝
265
获赞
69
评论
700
收藏
私信
关注
热门文章
Error creating bean with name ‘sqlSessionFactory‘ defined in class path reso
106812
this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load clas
36418
最新版idea申请学生免费使用方法
27410
什么是DML?其含义及其常用命令解析
21686
ORACLE游标详解
14989
分类专栏
笔记
23篇
数据结构与算法基础
2篇
软考
18篇
Mybatis
数据库
6篇
Java开发后端系列框架
4篇
spring
1篇
BUG
7篇
C++
2篇
习题答案
2篇
最新评论
一文搞懂《原码、反码、补码、移码》
天蓝蓝的本我:
0的表示吗?
一文搞懂《原码、反码、补码、移码》
m0_38052929:
其实就是(+1)+(-1),就是把前两列的值加起来
一文搞懂《原码、反码、补码、移码》
天蓝蓝的本我:
请问表中1-1是什么意思呢
./src/main.js Module not found: Error: Can‘t resolve ‘./utils/api.js‘ in ‘G:\jfhr\src‘
是JF啊:
单引号双引号
最新版idea申请学生免费使用方法
风间竹言:
2023.7,哈工大不能用邮箱申请。
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Mybatis框架(四)终结Mybatis之Mybatis动态SQL与一对多多对一
Mybatis框架(三)深入Mybatis之Mybatis注解开发与分页的实现
Mybatis框架(二)再遇Mybatis之Mybatis配置文件与映射文件
2023年3篇
2022年7篇
2021年32篇
2020年55篇
目录
目录
分类专栏
笔记
23篇
数据结构与算法基础
2篇
软考
18篇
Mybatis
数据库
6篇
Java开发后端系列框架
4篇
spring
1篇
BUG
7篇
C++
2篇
习题答案
2篇
目录
评论 3
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
MySQL中的DML、DDL、DCL到底是什么呢? - 知乎
MySQL中的DML、DDL、DCL到底是什么呢? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册学习数据库MySQLMySQL中的DML、DDL、DCL到底是什么呢?关注者11被浏览1,025关注问题写回答邀请回答好问题添加评论分享10 个回答默认排序民工哥 关注正好,我前段时间总结过 MySQL数据库打怪升级进阶成神之路(2023年最新版)这个专栏中有的文章专门提到这些概念,下面分享给你。带大家一起来学习一下 MySQL 数据库的 DDL、DML、DQL、DCL 这几种语言的理论知识与实践。如有帮助,请点赞支持一波!!!DDL(数据库定义语言)数据(结构)定义语言 DDL(Data Definition Language),用于创建和修改数据库表结构的语言。常用的语句:create(创建)、alter(修改)、drop(删除)、rename(重命名)创建数据库:CREATE DATABASE 数据库名;
CREATE DATABASE IF NOT EXISTS 数据库名;
# IF NOT EXISTS 意为如果不存在就创建这个数据库,若存在就不创建
CREATE DATABASE IF NOT EXISTS 数据库名 CHARSET utf8;
# CHARSET utf8 给数据库设置一个编码
删除数据库:DROP DATABASE 数据库名;
修改字符集ALTER DATABASE 数据库名 CHARSET utf8;
mysql中是不能修改数据库名的。数据库中的表数据库存储数据的特点是将数据放到表中,再将表放到数据库当中。一个数据库中是由多张表的,每个表都拥有一个名字,用来标识自己。且表名是具有唯一性的。表具有一定的特性,这些特性定义了数据在表中如何的存储,类似Java中的“类”的设计。数据库表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列都类似java中的“属性”。表中的数据时按行存储的,每一行就类似于java中的“对象”。数据表中的基本概念数据表表(table)是数据存储的最常见和最简单的形式,是构成关系数据库的基本元素。表的最简单形式是由行和列组成,分别都包含着数据。每个表都有一个表头和表体组成。表头定义表名和列名。表中的行被看作是文件中的记录,表中的列被看作是这些记录的字段。记录记录也被称为一行数据,是表里的一行。在关系型数据库的表里,一行数据时指一条完整的记录。字段字段是表里的一列,用于保存每条记录的特定信息。如顾客订单表的字段包括“订单ID”、“姓名”、“客户ID”、“职务”、“上级”、“地区”、“运货商”、“国家”等等。数据表的一列包含了特定字段的全部信息。在我们需要设计一个表的时候。在创建之初,就应该先确定要设计表的以下特征:表面(表星系)、表中的字段、字段中的数据类型和长度、都有哪些约束(添加数据的一些限制)主键: 在一张表中代表唯一的一条记录,不能为空,不呢重复约束:PRIWARY KEY :设置主键约束(主键约束包含了不能为空和唯一性的约束)NOT BULL :设置不能为空的约束(一个表中可以有多个这种的约束)UNIQUE :设置唯一性约束(一个表中可以有多个这种的约束)检查约束 :这个需要条件判断的约束(不是所有的数据库都可以设置这个约束)外键约束 :出现在多表关联时使用。主键自动增长: AUTO_INCREMENT默认值: DEFAULT default——value字段注释: COMMENT ‘注释’数据表的基本数据类型:char(n)长度为n的定长字符串,即使只存入一个字符,它也要站n长的内存varchar(n) 最大长度为n的可变长字符串,实际存储几个就占几个字符的内存(在n长之下)date 日期,包含年月日datetime 年月日 时分秒(时间)在我们应用这些数据类型的时候,就需要注意这些浮点型的小数点位数的控制。数据类型(M,D)
M:精度,数据的总长度
D:标度,小数点后的长度
Float(6,2)
Double(6,2)
===》例如:3245.12 四位整数,两位小数总长为6位
BLOB和TEXT类型BLOB是一个二进制的大对象,可以容纳可变数量的数据,用于存储图片视频信息。有4中BLOB的具体类型:TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB。它们只是可容纳值的最大长度不同。TEXT列字符字符串有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT。它们两个的长度都是可变的长度。建表语句建立一个基本表,不涉及任何约束CREATE TABLE t_student{
`num` INT,
`number` VARCHAR(4),
`sex` CHAR(1),
`birthday` DATE,
`height` FLOAT(4,1),
`phone` CHAR(11),
`register_time` DATETIME
}
加上约束来对数据库表进行创建[ ]表示可以没有,也能创建出表。CREATE TABLE t_user (
id INT [ PRIMARY KEY NOT NULL AUTO_INCREMENT ],
number INT (5) [ NOT NULL ],
`name` VARCHAR (10) [ NOT NULL ],
sex CHAR (1) [ DEFAULT '男' ] COMMENT '性别,默认为男。comment意为注释说明',
age INT (3) [ CHECK (age > 18) ],
phone CHAR (11) [ NOT NULL UNIQUE ],
birthday DATE,
weight DOUBLE,
oper_time DATETIME,
)
删除表语句DROP TABLE [IF EXISTS] 表名;
修改表名语句RENAME TABLE 旧表名 TO 新表名;
复制表(对某张表操作时,备份数据)语句CREATE TABLE 新表名 LIKE 被复制表名;
修改表结构语句添加/删除表的主键约束#给表中的某一列添加主键且一张表中只能有一个主键,
#但是可以多个表字段联合作为表的主键
ALTER TABLE 表名 ADD PRIMARY KEY(列名)
#删除表中的主键
ALTER TABLE 表名 DROP PRIMARY KEY
设置表中的自动增长#添加列为自增(设置自增的列必须为整数型的数据类型)
ALTER TABLE 表名 MODIFY 列名 数据类型 AUTO_INCREMENT;
#删除列的自增
ALTER TABLE 表名 MODIFY 列名 数据类型;
设置不能为空#添加一个列不能为空的约束
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
#取消一个列不能为空的约束
ALTER TABLE 表名 MODIFY 列名 类型 NULL;
设置唯一约束#添加表中某一列不能为空的约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);
#删除表中某一列不能为空的约束
ALTER TABLE 表名 DROP INDEX 约束名;
设置检查约束#添加约束名
ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (条件);
#删除约束名
ALTER TABLE 表名 DROP CHECK 约束名;
添加列#添加一个数据表中的列,默认是在最后一列进行添加
ALTER TABLE 表名 ADD 列名 数据类型;
#指定给第一列前进行一个添加列的操作
ALTER TABLE 表名 ADD 列名 数据类型 FIRST;
#指定给列名1之后添加一列
ALTER TABLE 表名 ADD 列名 数据类型 AFTER 列名1;
删除列ALTER TABLE 表名 DROP 列名;
修改列名ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型;
修改列的数据类型ALTER TABLE 表名 MODIFY 列名 新数据类型;
DML(数据库操纵语言)DML 数据操纵语言(Data Manipulation Language)常用语句:INSERT(插入数据)、DELETE(删除数据)、UPDATE(修改数据)数据库中NOW()表示的是获得当前所在系统的时间插入数据:方式1:INSERT INTO 表名(列1,列2...,列n) VALUES(值1,值2...,值n);
-- 例如:
INSERT INTO t_student (
NAME,
sex,
birthday,
height,
mobile,
reg_time
)
VALUES
(
'张三',
'男',
'2000-1-1',
170.1,
'13333333333',
NOW()
);
方式2:INSERT INTO 表名 set 列名1=值1,..列名n=值n;
-- 例如:
INSERT INTO t_student SET NAME = '李四',
sex = '女',
birthday = '2001-1-1',
height = 170.1,
mobile = '135555555',
reg_time = NOW();
方式3:(一次添加多条数据)INSERT INTO 表名(列1,列2...,列n) VALUES(值1,值2...,值n),(值1,值2..., 值n),...;
-- 例如:
INSERT INTO t_student (
NAME,
sex,
birthday,
height,
mobile,
reg_time
)
VALUES
(
'张三1',
'男',
'2000-1-1',
170.1,
'13333333333',
NOW()
),
(
'李四1',
'男',
'2000-1-1',
170.1,
'135555555',
NOW()
);
方式4:将一个表的数据复制到另一个表的操作(相当于数据备份)就是它得到值来自于另外的一个查询语句。INSERT INTO 表名(列1,列2……,列n) 查询语句(查询的列数与插入列数匹配)
-- 例子:将t_student表中的数据插入到stu这个表当中去。
INSERT INTO stu (
NAME,
sex,
birthday,
height,
mobile,
reg_time
)
SELECT
NAME,
sex,
birthday,
height,
mobile,
reg_time
FROM
t_student;
修改数据UPDATE 表名 SET 列名 = '新值' WHERE 条件;
-- 例子:修改在t_student表中的num为1的数据中name为张三 sex为女的操作
UPDATE
t_student
SET
NAME = '张三',
sex = '女'
WHERE num = 1;
修改当中也是可以不用添加条件的,不添加条件的话,就会将每条数据对应的列都做修改。所以修改的时候一定要注意条件。删除语句#删除与修改同样,也是可以不用添加条件的,不添加条件的话就会删除当前表中的所有数据。
DELETE FROM 表名 WHERE 条件;
-- 例子:
DELETE
FROM
t_student
WHERE num = 1
#指定在t_student表中的num为1的这一行数据进行删除。
在要删除一张表的时候,也可以使用下面这条查询语句:TRUNCATE TABLE 表名;
-- 清空整张表
DQL(数据库查询语言)DQL(Data Query Language)数据查询语言数据查询语句是使用频率最高的一个操作,是可以从一个表中查询数据,也可以从多张表中进行关联查询数据。基础语法:SELECT 查询列表 FROM 表名 [WHERE 条件];
特点:查询列表可以是:表中的字段、常量、表达式、函数查询的结果是一个虚拟出的表格。查询结果的处理1.查询常量值(了解一下就行了,没啥用)SELECT 100;
2.查询表达式在SQL中可用的表达式有:+、-、*、/SELECT 100*2
SELECT 列+5 FROM 表;
--例如:
SELECT height+5 FROM t_student;
--给查出的每一列数据都加上一个5
3.查询函数SELECT 函数;
-- 例如:
SELECT VERSION();
-- 查看当前SQL的版本是多少
4.特定列查询SELECT 列名1,列名2,... FROM 表名;
5.全部列查询SELECT * FROM 表名;
6.去除重复行查询将查询出来的重复数据去掉,针对查询出来的结果,要求是查询出的所有列数据都要一样,才会去掉。SELECT DISTINCT 列名1,列名2,... FROM 表名;
使用函数对查询结果的处理函数:类似于Java中的方法,将一组逻辑语句事先在数据库中定义好,在需要使用的时候直接调用就好了,想调用now()函数一样。优点:1.隐藏了实现的细节2.提高了代码的重用性调用方式:SELECT 函数名(实参列表)[from 表];
分类:单行函数:如concat、lengthifnull等。就是查询出来的结果是多少行,这个函数就会对每一行的数据都进行处理操作。分组函数:做统计使用,又称为统计函数、集合函数、组函数。也叫聚合函数;多行转为一行。单行函数字符函数● length():获取参数值的字节个数。一个中文3个字节。-- 获得当前列名的字节各处
SELECT LENGTH(列名),列名 FROM 表名;
● char_length():获取参数值的字符个数。-- 获取当前列名的字符个数。
SELECT CHAR_LENGTH(列名),列名 FROM 表名;
● concat(str1,str2,…):拼接字符串。它可以将两个字符接在一起,以一个列进行发送。SELECT CONCAT(str1,str2...) FROM 表名;
-- 例如:
-- 将两个列,通过字符的连接,以一个列进行了发送。
SELECT CONCAT(列名1,':', 列名2)AS name FROM 表名;
-- AS name 是对定义了一个别名(AS也是可以省略的)
● upper():将字符串变成大写。SELECT UPPER(列名) FROM 表名;
● lower():将字符串变为小写。SELECE LOWER(列名) FROM 表名;
● substring(str,pos,length):截取字符串,从位置pos位置开始。SELECT SUBSTRING(列名,开始截取位置(从1开始),截取长度) FROM 表名;
● instr(str,指定字符):返回子串第一次出现的索引,如果找不到就返回0类似于java中的indexof();SELECT INSTR(列名,指定的字符) FROM 表名;
-- 例子:
SELECT INSTR('abcd','a');
● trim(str):去掉字符串前后的空格或子串。trim(指定子串from字符串)-- 去掉字符前后的空格。
SELECT TRIM(列名) FROM 表名;
-- 去掉子串
SELECT TRIM(指定的子串 FROM 列名) FROM 表名;
-- 列子
SELECT TRIM('d' FROM 'abcd');
子串和空格一样,只能去掉字符串前后的子串,中间的不行。● lpad(str,length,填充字符):用指定的字符实现左填充将str填充为指定长度。SELECT LPAD(列名,指定总长度,填充字符) FROM 表名;
-- 例子:
SELECT LPAD('wasd',6,'a') ;
指定的总长就是最后结果的总长,若需要填充的字符串长度就高于指定总长度,就会截取这么长的字符串。SELECT LPAD('wasd',3,'a') ;
● rpad(str,length,填充字符):用指定的字符实现右填充将str填充为指定长度。SELECT RPAD(列名,指定总长度,填充字符) FROM 表名;
● replace(str,old,new):替换,替换所有的子串。没有的就不操作了。SELECT REPLACE(列名,指定旧字符,新字符) FROM 表名;
-- 例子:
SELECT REPLACE('wwaa','a','w');
逻辑函数case when 条件 then 结果1 else 结果2 end;(可以有多个when),当条件满足的时候就是结果1,当条件不满足的时候就是结果2。SELECT
(CASE WHEN 列名 条件 THEN 结果1 ELSE 结果2 END)
FROM
表名;
-- 例子:使用多个when来生成结果。
SELECT
(CASE WHEN 140>=180 THEN '偏胖'
WHEN 140>100 AND 140<180 THEN '正常'
ELSE '偏瘦' END)weight;
2.IFNULL(被检测的值,自己设置的默认值)ifnull函数就是检测当前字符是否为null;如果为null,就返回自己设置的默认值;若不是,则正常返回原本的值这里要注意一下,在数据库表中:左边的不为null,表示的是空字符串(它是有值的),右边的才为null。SELECT IFNULL(列名,自己定义的默认值) FROM 表名;
举例:SELECT IFNULL('','当前没有值') ;
不错输出的,它是一个空字符串,而不是为null;再举一例:(当前表名为student)SELECT IFNULL(address,'当前没有值') FROM student WHERE id = 1
3.IF函数:像java中的if…else…的效果。if(条件,结果1,结果2)条件成立走结果1,不成立的话就结果2;SELECT IF(条件,结果1,结果2) FROM 表名;
-- 举例:
SELECT IF(5>1,'true','false');
数学函数1.round(数值):对传入的数值进行四舍五入(四舍五入的时候只看小数点之后的第一位)2.ceil(数值):对数值进行向上取整,返回>=该参数的最小整数3.floor(数值):对数值进行向下取整,返回<=该参数的最大整数4.truncate(数值,保留的小数位数):截断,小数点后截断到几位;SELECT ROUND(3.4),ROUND(3.5),CEIL(3.5),FLOOR(3.5),TRUNCATE(3.12345,2);
5.mod(被除始,除数):取余,被除数为正,则结果为正;被除数为否,则为否;与除数是无关的SELECT MOD(6,4),MOD(-6,4),MOD(6,-4),MOD(-6,-4);
6.rand():获取随机数,返回0-1之间的小数。SELECT RAND();
日期函数NOW():返回当前系统的日期+时间;CURDATE():返回当前系统日期;(不包含时间)CURTIME():返回当前时间,不包含日期;SELECT NOW(),CURDATE(),CURTIME();
也可以获取指定时间里面的具体哪一个部分,有:年,月,日,时,分,秒。YEAR():年
MONTH():月
DAY():日
HOUR():时
MINUTE():分
SECOND():秒
SELECT
NOW(),YEAR(NOW()),MONTH(NOW()),DAY(NOW()),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
● STR_TO_DATE():将日期的字符串型转换为指定格式的日期;● DATE_FORMAT():将数据库中日期格式转换为字符串形式;● DATEDIFF(big,small):返回两个日期相差的天数;SELECT
STR_TO_DATE('2022-1-1','%Y-%m-%d'),DATE_FORMAT(NOW(),'%Y/%m/%d'),DATEDIFF(NOW(),'2022-1-1');
将三者结合而出一个比较准确的数据库语言SELECT DATEDIFF(DATE_FORMAT(NOW(),'%Y-%m-%d'),STR_TO_DATE('2022-1-1','%Y-%m-%d'))
分组函数功能:用于统计使用,又称为聚合函数或统计函数或组函数。分类SUM()求和、AVG()平均值、MAX()最大值、MIN()最小值、COUNT()计数1.sum、avg一般用于处理数值型;max、min、count是可以处理任何类型的。2.这些分组函数都是可以忽略null值的。3.count函数的一般使用count(*) 来用作统计行数(括号里也可以写主键/指定列)。4.和分组函数一同查询的字段要求必须在group by后的字段。(GROUP BY就是要求分组是按什么进行分组)sql5.0版之前不需要加。因为是分组函数,所以我在这先建立一个student的表:后面的演示都采用这张表进行代码演示:SELECT
SUM(height),AVG(height),MAX(height),MIN(height),COUNT(*)
FROM student;
按性别对表数据进行一个分组:SELECT
sex,SUM(height),AVG(height),MAX(height),MIN(height),COUNT(*)
FROM student
GROUP BY sex;
条件查询使用WHERE子句,将不满足条件的行过滤掉,WHERE子句在书写的时候是紧随FROM子句。语法:SELECT <结果> FROM <表名> WHERE <条件>
比较符:[=、!=或<>、>、<、>=、<=]
逻辑符:and(与)、or(或)、not(非)
举例:SELECT * FROM student WHERE sex = '男';
SELECT * FROM student WHERE sex <> '男';
加逻辑符:SELECT * FROM student WHERE sex = '男' AND height>180;
SELECT * FROM student WHERE NOT sex = '男' AND NOT weight>100;
其他的都一样,就不一 一演示了。模糊查询LIKE:是否匹配于一个模式,一般情况下是和统配符搭配一起使用的,可以判断字符型或者数值型。统配符:% 表示前或后可以有任意多个(包含0个字符);
_ 前或后只能表示一个,单个字符;(有几个下划线就只能有几个字符,多了少了都不行)
BETWEEN 条件1 AND 条件2:表示两者之间,包含临界值;(相当于条件查询中的 >= 条件1 AND <= 条件2);
IN:判断某字段的值是否值属于IN列表中的某一项
(列名 IN (条件1,条件2…) <===> 列名 = 条件1 OR 列名 = 条件2);
IS NULL(为空)或IS NOT NULL(不为空)
表示当数据表中的数据为空(注意区分空和空字符的两者区别。空字符意为它是有值的,空意为没有任何数据。空字符可以理解它为只输入了一个空格);
举例:SELECT * FROM student WHERE weight LIKE '%1%'
SELECT
* FROM student WHERE weight LIKE '_2___'; #这里前有1个下划线,后有3个
between…and…SELECT * FROM student WHERE height BETWEEN 178.6 AND 185;
IN(类似or)SELECT * FROM student WHERE NAME IN('张三','zhangsan');
SELECT * FROM student WHERE NAME NOT IN('张三','zhangsan');
IS NULL给student表中再加一条数据使用IS NULL进行查询:SELECT * FROM student WHERE weight IS NULL;
SELECT * FROM student WHERE weight IS NOT NULL;
UNION 和UNION ALL语法UNION语法就是将两个表中的数据合二为一,并且会将结果中的重复数据进行删除。[查询语句1] UNION [查询语句2]
UNION ALL语法也是将两个表中的数据合二为一,但不会再对这些数据做任何的操作。也可以看出UNION ALL的效率是高于UNION的效率的。[查询语句1] UNION ALL [查询语句2]
在使用的时候要注意两条查询到返回的数据类型和个数必须完全一样。举例:SELECT * FROM student WHERE sex = '女'
UNION
SELECT * FROM student WHERE weight > 100;
SELECT * FROM student WHERE sex = '女'
UNION ALL
SELECT * FROM student WHERE weight > 100;
对查出的数据进行排序和数量限制1.排序就是对结果进行排序,使用ORDER BY对子句进行排序。语法:ORDER BY 列名 ASC/DESCASC代表的是升序,DESC表示降序,如果不写,默认的是进行升序。ORDER BY子句中可以支持单个字段、多个字段、表达式、函数、别名。举例:SELECT * FROM student WHERE weight > 100 ORDER BY height ASC;
SELECT * FROM student WHERE weight > 100 ORDER BY height DESC;
当一个列排序的时候,应为重复性不能做出明确排序,可以再加一个字段进行排序:(就是先用第一个排,当第一个遇到相同的时候,再用第二个排)SELECT
*
FROM student WHERE weight > 100
ORDER BY height DESC,weight DESC;
函数同理;数量限制limit子句:可以理解为就是对查询出来的数据进行一个行数限制(书写在SQL语句的最末尾位置)。语法:SELECT * FROM 表名 LIMIT 初始位置,几行数据初始位置默认最初为0举例:查询身高最高的两名同学:这条语句正常数据是由三条,使用了limit 设置语句,表示它从头开始,查出两行数据。SELECT
*
FROM
student
WHERE weight > 100
ORDER BY height DESC
LIMIT 0, 2;
分组查询语法:SELECT 分组函数,列名(所要分组的要求列) FROM 表名 [WHERE 分组前的筛选条件] GROUP BY 分组的列名 [HAVING 分组后的筛选]
查询条件 WHERE和HAVING的区别:举例:-- 意为将数据在student表内按sex进行分组,然后对没一组进行就数据量、数据求和、最大值。
SELECT sex,COUNT(*),SUM(height),MAX(height) FROM student GROUP BY sex;
SELECT
sex,
COUNT(*)
FROM
student
WHERE height IS NOT NULL #分组前将height为空的信息去除
GROUP BY sex #按照sex对数据进行分组
HAVING sex = '男' #分组后只要sex为‘男’的数据
ORDER BY COUNT(*) #对数据进行一个排序 默认为升序
LIMIT 0,1 #对查出的数据进行数量限制
子查询含义:出现在其他语句中的SELECT语句,称为子查询或内查询;外部的查询语句,称为主查询或外查询。分类:按子查询出现的位置:1.SELECT后面:仅仅支持标量子查询;2.FROM后面:支持表子查询;3.WHERE或HAVING后面:支持标量子查询,列子查询,行子查询;在修改、删除表中数据的语句中使用子查询,注意的是,子查询中不能使用当前正在操作的表。按功能、结果集的行列数不同:1.标量子查询(结果集只有一行一列)2.列子查询(结果集只有一列多行)3.行子查询(结果集有一行多列)4.表子查询(结果集一般为多行多列)子查询在SELECT语句内部可以出现SELECT语句。语句结果可以作为外部语句中条件子句的一部分,也可以作为外部查询时的临时表。在一条SQL语句中,如果出现2个以上的表名时,我们可以为这个表名定义别名举例:SELECT后面SELECT
st.sex,
(SELECT s.name FROM student s WHERE s.`name` = st.name)
FROM
student st
在FROM后面:SELECT
*
FROM (SELECT sex,NAME FROM student)s
WHERE s.sex = '男'
在WHERE或HAVING之后:-- 标量子查询
SELECT
*
FROM
student
WHERE height =(SELECT MAX(height) FROM student);
-- 列子查询
SELECT
*
FROM
student
WHERE height IN (SELECT height FROM student WHERE height > 170);
-- 行子查询
SELECT
*
FROM
student
WHERE (height, weight) =(SELECT MAX(height),MAX(weight) FROM student);
多表关联在设计表的时候,我们有时候是需要多表关联的,主要为了减少数据的冗余,对表进行拆分。数据库设计范式:为了建立冗余较少,结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则称为范式。范式是符合某一种设计要求的总结。目前关系数据库有5种范式:第一范式(1NF)第二范式(2NF)就可以第三范式(3NF)第四范式(4NF)第五范式(5NF)又称器完美范式满足最低要求的范式就是第一范式。在第一范式的基础上进一步满足更多规范要求的称为第二范式,其余范式依次类推,一般来说,数据库只要到达第三范式就可以了。第一范式(确保每列都保持原子性)第一范式是对基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。2.第二范式(包含了主键,要求其他字段都要依赖于主键)没有主键就没有唯一性,没有唯一性在集合中就定位不到这行数据记录,所以就要有主键。其他字段为什么要依赖于主键?因为不依赖于主键,就找不到他们。更重要的是,其他字段组成的这行记录和主键表示的是同一个东西,而主键是唯一的,它们值需要依赖于主键,也就成了唯一的。3.第三范式就是要消除传递依赖,方便理解,可以看作是“消除冗余”。外键就是“引用”另外一个数据表的某条记录。外键类类型必须和主键列类型保持一致。数据表之间的关联/引用关系是依靠具体的主键(PRIMARY KEY)和外键(FOREIGN KEY)建立起来的。建表时就增加外键:CREATE TABLE 表名(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
sid INT,
CONSTRAINT 约束名 FOREIGN KEY(sid) REFERENCES 关联表(主键)
);
添加外键约束名ALTER TABLE 表名 ADD [CONSTRAINT 约束名] FOREIGN KEY(外键列) REFERENCES 关联表(主键);
删除外键约束:ALTER TABLE 表名 DROP FOREIGH KEY 外键约束名;
举例:先建两张表像这种有关系但没有关联的关系我们也叫做弱关联。没有实际之间的约束。有外键的也就叫做强关联。(添加外键约束)ALTER TABLE student
ADD CONSTRAINT fk_gradeId FOREIGN KEY (gId) REFERENCES grade(id);
意为将student表中的gId列与grade表中的id列进行关联。进行关联后,表头也就有了一些的变化。删除外键:ALTER TABLE student DROP FOREIGN KEY fk_gradeId;
注意:1.当主表中没有对应的记录时,是不能将记录添加到从表中的。2.不能更改主表中的值而导致从表中的记录孤立。3.表存在与主表对应的记录,不能从主表中删除该行。4.删除主表前,先删从表中的数据。关联查询含义:又称为多表查询,当查询的字段来自与多个表时,就会用到连接查询(一对多、多对一、一对一、多对多)笛卡尔乘积现象:表1有m行,表2有n行,结果 = m*n;发生原因:没有有效的连接条件如何避免:添加有效的连接条件代码演示:SELECT * FROM student,grade ;
解决办法:添加条件,多表时,为表定义别名,通过别名去调用表中的列,这样就不会重复了。SELECT
*
FROM
student s,
grade g
WHERE s.gId = g.id -- 先合并表,后筛选
按功能分类:1.内连接:等值连接、非等值连接、自连接2.外连接: 左外连接、右外连接内连接(INNER JOIN)主要通过设置连接条件的方式,来移除查询结果中某些数据行的交叉连接。说人话就是:是利用条件表达式来消除交叉连接的某些数据行。格式:SELECT 列名 FROM 表1 INNER JOIN 表2 [ON子句]
等值连接:使用等于号(=)比较被连接列的列值,在查询结果中列出被连接表中的所有列,包括其中的重复列。SELECT
*
FROM
student s
INNER JOIN grade g
ON s.gId = g.id
不等连接:在连接条件中,可以使用其他比较运算符,比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!< 和 <>。SELECT
*
FROM
student s
INNER JOIN grade g
ON s.height BETWEEN 170
AND 180
自关联所谓自关联是指,一个数据表中的某个字段关联了该数据表中的另外一个字段。就是自己关联自己在这我们再创建一个表来说明这个问题:CREATE TABLE t_area(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
pid INT
)
加入数据:SELECT
ta.name,
tp.name pname
FROM
t_area ta
INNER JOIN t_area tp
ON ta.pid = tp.id
WHERE ta.id = 5
外连接左外连接(LEFT JOIN)无论关联条件是否成立,都会将左边表的数据全部查询出来。语法:SELECT 列名 FROM 表名1 LEFT JOIN 表名2 ON 表1.column1 = 表2.column
右外连接(RIGHT JOIN)无论关联条件是否成立,都会将右边表的数据全部查询出来。语法:SELECT 列名 FROM 表名1 RIGHT JOIN 表名2 ON 表1.column1 = 表2.column
举例:将内关联,右关联,左关联放在一起举例:student表数据做了一些修改(先看表数据):grade表:内连接SQL语句:SELECT
*
FROM
student s
INNER JOIN grade g
ON s.gId = g.id;
左连接SQL语句:SELECT
*
FROM
student s
LEFT JOIN grade g
ON s.gId = g.id;
右连接SQL语句:SELECT
*
FROM
student s
RIGHT JOIN grade g
ON s. gId = g.id;
DCL(数据库控制语言)DCL 数据控制语言 (Data Control Language ) 。在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、存储程序、用户自定义函数等数据库对象的控制权,由 GRANT 和 REVOKE 两个指令组成。DCL 语句主要是 DBA 用来管理系统中的对象权限时所使用,一般的开发人员很少使用。DCL中主要包括创建用户、给用户授权、对用户撤销授权、查询用户授权和删除用户等操作。用户创建用户create user '用户名'@'IP地址' identified WITH mysql_native_password by '密码';
flush privileges;
比如:CREATE USER 'alian'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
MySQL8开始使用 caching_sha2_password ,如果你使用sqlyog工具无法连接,有两种方式处理:升级sqlyog到 SQLyog-13.1.6-0.x64 以上修改mysql默认身份验证插件为 mysql_native_password修改用户名rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
修改密码#切换到mysql库
use mysql;
#更新密码
UPDATE user SET password=password('新密码') WHERE user='用户名' AND host='IP地址';
#刷新权限
FLUSH PRIVILEGES;
或者ALTER USER '用户名'@'IP地址' IDENTIFIED WITH mysql_native_password BY '新密码';
flush privileges;
或者#普通用户登录后
SET PASSWORD=password('新密码');
FLUSH PRIVILEGES;
删除用户#注意这里的IP地址,一个用户可能会有多个
drop user '用户名'@'IP地址';
#比如
drop user 'Alian'@'192.168.0.100';
权限管理授权基本语法如下:grant 权限1, 权限2, 权限3,… ,权限n on 数据库名.表名 to 用户名@地址;
常用的权限ALL, ALL PRIVILEGES #所有权限
SELECT #查询数据
INSERT #插入数据
UPDATE #修改数据
DELETE #删除数据
ALTER #修改表
DROP #删除数据库/表/视图
CREATE #创建数据库/表
关于 数据库名.表名 的说明:*.* #表示任意库的任意表(不建议)
mysql.* #表示mysql库的任意表
mysql.user #表示mysql库的user表
关于 用户名@地址 的说明(这里都是英文的单引号):’alian’@'localhost’:#表示只允许本机登录
’alian’@’%':#表示任意地址登录
’alian’@'192.168.0.100’:#表示只允许ip为192.168.0.100的地址登录
’alian’@'192.168.*.*':#表示只允许ip为192.168网段的地址登录
把数据库的所有库的所有权限都给alian,并且可以指定ip地址#把数据库的所有库的所有权限都给alian,并且是任意ip地址都可以操作
grant all privileges on *.* to 'alian'@'%';
flush privileges;
把mysql数据库的所有权限都给alian#把mysql数据库的所有权限都给alian,并且是任意ip地址都可以操作
grant all privileges on mysql.* to 'alian'@'%';
flush privileges;
把mysql数据库的user表的所有权限都给alian,并且是任意ip地址都可以操作#把mysql数据库的user表的所有权限都给alian,并且是只能通过192.138.0.10才可以操作
grant all privileges on mysql.user to 'alian'@'192.138.0.10';
flush privileges;
把mysql数据库的user表的(查询,插入,更新,删除)的权限都给alian,并且是任意ip地址都可以操作#把mysql数据库的user表的(查询,插入,更新,删除)的权限都给alian,并且是任意ip地址都可以操作
grant SELECT, INSERT, UPDATE, DELETE on mysql.user to 'alian'@'%';
flush privileges;
查看权限show grants for 'alian'@'%';
回收权限基本语法如下:revoke 权限1, 权限2…权限n on 数据库名.表名 from 用户名@地址;
比如把用户alian对mysql(默认的库)库的更新和删除权限收回#回收用户的更新和删除mysql(默认的库)数据库的权限
revoke update,delete on mysql.user from 'alian'@'%';
容器中中文显示#交互模式设置语言并进入mysql容器(419413b9d276 是mysql的容器id)
docker exec -it 419413b9d276 env LANG=C.UTF-8 /bin/bash来源:死磕数据库系列(二十):MySQL 数据库 DDL、DML、DQL、DCL 语言理论与实践(sql 8.0 版)—特色专栏—MySQL|PostgreSQL|Redis|MongoDB|ToolsElasticSearch|Kubernetes|Docker|HadoopKafka|RabbitMQ|Zookeeper|OpenStack企业监控平台|应用与服务|DevOps|集群管理今天的分享就到这里了,如有帮助,欢迎一键三连(点赞、评论、转发)支持一下!读者专属群:诚邀你加入技术交流群,一起卷!如有错误或其它问题,捐迎小伙伴留言评论、指正。如有帮助,欢迎点赞+转发分享。更多相关开源技术文章,请持续关注!资源分享(小编为你精心准备了2048G的各类学习资料。包括系统运维、数据库、redis、MogoDB、电子书、Java基础课程、Java实战项目、架构师综合教程、架构师实战项目、大数据、Docker容器、ELK Stack、机器学习、BAT面试精讲视频等。)发布于 2024-01-18 14:43赞同 5添加评论分享收藏喜欢收起不剪发的Tony老师《SQL编程思想》作者,PostgreSQL ACE。 关注SQL 代表结构化查询语言(Structured Query Language),它是管理和访问关系数据库的标准语言。通过 SQL 可以执行数据的增加(Create)、删除(Delete)、修改(Update)以及查询(Retrieve),同时还可以执行许多数据库的管理操作。SQL 语句可以按照它们的作用分为以下几类:DDL(Data Definition Language)- 数据定义语义,用于管理数据库中的对象,例如创建(CREATE)、修改(ALTER)以及删除(DROP)。DML(Data Manipulation Language)- 数据操作语言,用于查询和操作数据。主要包括SELECT、INSERT、UPDATE、DELETE 和 MERGE 等语句。DCL(Data Control Language)- 数据控制语言,用于管理数据库对象的访问权限。主要包括权限的授予(GRANT)和撤销(REVOKE)。TCL(Transaction Control Language)- 事务控制语言,用于控制数据库的事务。主要包括提交(COMMIT)、回滚(ROLLBACK)、保存点(SAVEPOINT)以及事务设置(SET TRANSACTION)。发布于 2024-01-10 11:03赞同添加评论分享收藏喜欢
深入理解SQL的数据操作语言(DML)-阿里云开发者社区
深入理解SQL的数据操作语言(DML)-阿里云开发者社区
产品解决方案文档与社区权益中心定价云市场合作伙伴支持与服务了解阿里云售前咨询 95187-1 在线服务售后咨询 4008013260 在线服务其他服务 我要建议 我要投诉更多联系方式备案控制台开发者社区首页探索云世界探索云世界云上快速入门,热门云上应用快速查找了解更多问产品动手实践考认证TIANCHI大赛活动广场活动广场丰富的线上&线下活动,深入探索云世界任务中心做任务,得社区积分和周边高校计划让每位学生受益于普惠算力训练营资深技术专家手把手带教话题畅聊无限,分享你的技术见解开发者评测最真实的开发者用云体验乘风者计划让创作激发创新阿里云MVP遇见技术追梦人直播技术交流,直击现场下载下载海量开发者使用工具、手册,免费下载镜像站极速、全面、稳定、安全的开源镜像技术资料开发手册、白皮书、案例集等实战精华插件为开发者定制的Chrome浏览器插件探索云世界新手上云云上应用构建云上数据管理云上探索人工智能云计算弹性计算无影存储网络倚天云原生容器serverless中间件微服务可观测消息队列数据库关系型数据库NoSQL数据库数据仓库数据管理工具PolarDB开源向量数据库热门Modelscope模型即服务弹性计算云原生数据库物联网云效DevOps龙蜥操作系统平头哥钉钉开放平台大数据大数据计算实时数仓Hologres实时计算FlinkE-MapReduceDataWorksElasticsearch机器学习平台PAI智能搜索推荐人工智能机器学习平台PAI视觉智能开放平台智能语音交互自然语言处理多模态模型pythonsdk通用模型开发与运维云效DevOps钉钉宜搭支持服务镜像站码上公益
开发者社区
数据库
文章
正文
深入理解SQL的数据操作语言(DML)
2023-10-13
105
版权
版权声明:
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《
阿里云开发者社区用户服务协议》和
《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写
侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
简介:
SQL(Structured Query Language)是一种用于管理和操作关系数据库的强大语言。SQL语言被分为多个子语言,其中之一是DML(Data Manipulation Language),用于执行与数据的操作和管理相关的任务。在本文中,我们将深入探讨DML的各个方面,从基础操作到高级技巧,以帮助初学者更好地理解和使用SQL的DML。
繁依Fanyi
目录
热门文章
最新文章
为什么选择阿里云什么是云计算全球基础设施技术领先稳定可靠安全合规分析师报告产品和定价全部产品免费试用产品动态产品定价价格计算器云上成本管理解决方案技术解决方案文档与社区文档开发者社区天池大赛培训与认证权益中心免费试用高校计划企业扶持计划推荐返现计划支持与服务基础服务企业增值服务迁云服务官网公告健康看板信任中心关注阿里云关注阿里云公众号或下载阿里云APP,关注云资讯,随时随地运维管控云服务售前咨询:95187-1售后服务:400-80-13260法律声明及隐私权政策Cookies政策廉正举报安全举报联系我们加入我们阿里巴巴集团淘宝网天猫全球速卖通阿里巴巴国际交易市场1688阿里妈妈飞猪阿里云计算AliOS万网高德UC友盟优酷钉钉支付宝达摩院淘宝海外阿里云盘饿了么© 2009-2024 Aliyun.com 版权所有 增值电信业务经营许可证: 浙B2-20080101 域名注册服务机构许可: 浙D3-20210002 京D3-20220015浙公网安备 33010602009975号浙B2-20080101-4
MySQL基础篇(DDL,DML,DQL,DCL详细讲解) - 知乎
MySQL基础篇(DDL,DML,DQL,DCL详细讲解) - 知乎切换模式写文章登录/注册MySQL基础篇(DDL,DML,DQL,DCL详细讲解)邓澎波JAVA分享官一、常用开发工具1. NavicateNavicat是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。 http://www.navicat.com.cn/ pojie方式:https://www.jb51.net/database/710931.html再手动激活搞定,就可以使用了2. SQLyogMySQL可能是世界上最流行的开源数据库引擎,但是使用基于文本的工具和配置文件可能很难进行管理。SQLyog提供了完整的图形界面,即使初学者也可以轻松使用MySQL的强大功能。其拥有广泛的预定义工具和查询、友好的视觉界面、类似 Excel 的查询结果编辑界面等优点。 https://www.webyog.com/product/sqlyog 3. 使用客户端工具 1:创建一个数据库;选择编码为utf-8 2: 创建数据表 3: 往数据表里面存储数据 二、SQL语句基础 结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存放数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。 1.SQL分类1.1 数据定义语言(DDL) 数据定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,由CREATE、ALTER与DROP三个语法所组成,最早是由 Codasyl (Conference on Data Systems Languages) 数据模型开始,现在被纳入 SQL 指令中作为其中一个子集。1.2 数据操纵语言(DML) 数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。1.3 数据查询语言(DQL) 数据查询语言(Data Query Language, DQL)是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有FROM,WHERE,GROUP BY,HAVING和ORDER BY。这些DQL保留字常与其他类型的SQL语句一起使用。1.4 数据控制语言(DCL) 数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。由 GRANT 和 REVOKE 两个指令组成。DCL以控制用户的访问权限为主,GRANT为授权语句,对应的REVOKE是撤销授权语句。2.DDL 数据定义语言 (Data Definition Language, DDL) ,它主要包括三个关键字:create ,alter , drop(数据库关键字不分大小写 ),主要操作对象 有数据库、表、索引、视图等.2.1 操作数据库创建数据库create databases 数据库名称;
使用这个数据库use 数据库名称;
删除这个数据库drop database 数据库名称;
注意:执行的SQL语句不区分大小写,一个SQL语句末尾要加上;2.2 操作表结构 表【TABLE】是数据库中存储数据的载体。2.2.1 语法结构 然后我们来看下DDL是如何来操作表【TABLE】的。CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
创建一张用户表CREATE TABLE T_USER(
id int(3) ,
user_name varchar(30)
)
2.2.2 添加注释 为了让别人能清楚我们定义的字段的含义,我们需要给我们创建的字段添加对应的注释来说明。CREATE TABLE T_USER(
id int(3) ,
user_name varchar(30) COMMENT '用户名'
)COMMENT='用户表'
或者在建表后添加ALTER TABLE t_user
MODIFY COLUMN user_name varchar(20) COMMENT 'aaa' ;
2.2.3 删除表 删除表通过DROP关键字来实现DROP TABLE T_USER;
2.2.4 修改表添加字段ALTER TABLE T_USER ADD address VARCHAR(2);
修改字段类型ALTER TABLE T_USER MODIFY address VARCHAR(50);
修改字段名称ALTER TABLE T_USER RENAME COLUMN address TO address666;
删除字段ALTER TABLE T_USER DROP COLUMN address666;
2.2.5 表结构的约束非空约束ALTER TABLE T_USER
CHANGE id id INT NOT NULL COMMENT '主键';
或者在建表的时候指定# 删除表
DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) NOT NULL COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(2) COMMENT '年龄' DEFAULT 18
)COMMENT='用户表' ;
默认值DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) NOT NULL COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(2) COMMENT '年龄' DEFAULT 18
)COMMENT='用户表' ;
唯一约束 该字段中不能出现相同的值,null除外DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) UNIQUE COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(2) COMMENT '年龄' DEFAULT 18
)COMMENT='用户表' ;
建表后设置字段的唯一约束条件ALTER TABLE t_user add CONSTRAINT unique_name UNIQUE(user_name);
alter table t_user add unique (user_name);
主键 能唯一标识一条记录的字段,不能为空,唯一约束,只能有一个主键。DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) PRIMARY KEY COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(2) COMMENT '年龄' DEFAULT 18
)COMMENT='用户表' ;
联合主键:多个字段组合的信息是不能出现重复的ALTER TABLE t_user
ADD PRIMARY KEY (id, user_name);
外键 外键就是在主表中可以重复出现,但是它的值是另一个表的主键,外键使两个表相关,外键可约束表的数据的更新,外键和主键表联系,数据类型要统一,长度(存储大小)要统一,在更新数据的时候会保持一致性# 删除表
DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) PRIMARY KEY COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(2) COMMENT '年龄' DEFAULT 18,
deptid INT(30) ,
CONSTRAINT FK_DEPT_ID FOREIGN KEY(deptid) REFERENCES T_DEPT(dept_id)
)COMMENT='用户表' ;
ALTER TABLE T_USER ADD
CONSTRAINT FK_DEPT_ID FOREIGN KEY(deptid) REFERENCES T_DEPT(dept_id)
注意:外键字段的级联关系,如果我们要删除外键对应的主键记录,那么必须要先删除该注解对应的所有的外键记录,否则删除不成功,实际开发中我们对主键的使用比较少。check 粒度更细的约束。DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) PRIMARY KEY COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(3) COMMENT '年龄' ,
CHECK (age > 0 AND age < 40)
)COMMENT='用户表' ;
between and in not in or 2.2.6 字段类型MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。数值类型日期和时间类型字符串类型char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换3.DML 数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。3.1 INSERT插入单行记录INSERT into 列名(列名,。。)values(,)
插入多行记录复制表结构和数据 create table t_student_beifen as select * from t_student
复制表结构 create table t_student_beifen as select * from t_student where 1 <> 1
把其他表结构中的数据插入到表中: insert into t_student(id,stuname) select id,stuname from t_student01
可以在单行插入的后面添加多个插入的信息列。# 插入语句后面可以跟多个插入的信息
insert into t_user (user_name,age)values('烤鱼1',22),('烤鱼2',22),('烤鱼3',22);
3.2 UPDATE语法结构update 表名 set 字段名=值,字段名=值。。 where 。。。
案例:创建一张学生表CREATE TABLE t_student
(
id int(3) primary key,
stuname varchar(30) not null,
sex char(3) ,
birthday date
)
把学生表中的性别全部改成女update t_student set sex = '女' ;
把'张三'的性别改成'男'update t_student set sex = '男' where stuname = '张三';
把出生日期改成当前时间now()# select now()
update t_student set birthday = now()
把性别为女的 所有的出生日期改成2022-01-18# 直接把一个字符串复制给了一个 date 类型的数据
# str_to_date 把字符串转换为日期类型
update t_student set birthday = str_to_date('2022-01-18','%Y-%m-%d') where sex = '女';
从别的表把值设置到本表中create table t_student_1 as select * from t_student;
update t_student_1 t1,t_student t2 set t1.stuname = t2.stuname where t1.id = t2.id;
3.3 DELETEdelete删除:delete from t_student where id = 1;
# 如果不带where 条件 那么表示删除该表中的所有的记录 慎用!!! 删表跑路
delete from t_student ;
# delete insert update 语句都会走事务处理,也就是我们需要显示的commit和rollback;
truncate删除:# truncate 直接清空表结构中的所有的数据,效率高,但是不能回滚。
TRUNCATE TABLE t_user_1 # where 1 = 1;
4.DQL 数据查询语言(Data Query Language, DQL)是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有FROM,WHERE,GROUP BY,HAVING和ORDER BY。这些DQL保留字常与其他类型的SQL语句一起使用。4.1 单表查询查询语句的语法规则SELECT <字段列表>
FROM <表名>
[WHERE <查询条件>]
[ORDER BY <排序字段>]
[GROUP BY <分组字段>]
# select NOW()
为查询准备的表结构CREATE TABLE t_student (
id int(3) primary key auto_increment ,
stuname varchar(30) not null ,
age int(3) ,
sex varchar(3) ,
birthday date ,
address varchar(50),
class_id int(3)
);
CREATE TABLE t_class(
class_id varchar(30) PRIMARY KEY ,
class_name varchar(30) UNIQUE ,
class_desc varchar(50)
);
单表查询不带条件的查询# 1.查询出所有的学生信息 所有的学生的所有字段的信息
select * from t_student ;
# 2.查询出所有的学生的姓名和性别
select stuname,sex from t_student;
# 3.对查询的表和列设置对应的别名
select stuname as '姓名' ,sex as "性别" from t_student;
# 别名简写可以省略 as 和 单引号
select stuname 名称 ,sex 性别 from t_student;
# 表也可以取别名
select t_student.stuname ,t_student.sex from t_student;
select t1.stuname,t1.sex from t_student as t1;
select t1.stuname,t1.sex from t_student t1;
# 自己增加查询的字段
select stuname,sex,18 常量 from t_student;
# 4.查询出所有的学生信息,并且显示的形式是【张三】18【岁】
select stuname,age,concat('【',stuname,'】',age,'【岁】') from t_student;
单表查询带条件的# 5.查询出学生表中张三的所有的信息
select * from t_student where stuname = '张三';
# 6.查询出学生表中年龄在18到22之间的学生的所有信息
select * from t_student where age >=18 and age <= 22;
select * from t_student where age BETWEEN 18 and 22 ;
# 7.查询出学生表中编号为1和3的学生信息
select *
from t_student
where id = 1 or id = 3;
select * from t_student where id in (1,3)
# 8.查询出学生表中地址信息为空的学生信息
# 不行 #
# select * from t_student where address = '';
# select * from t_student where address = null;
select * from t_student where address is null;
# 不为空的情况
select * from t_student where address is not null;
# 9.查询出所有姓张的学生的所有信息 -- 模糊查询 like
select * from t_student where stuname like '张%' ;
# 如果不加% 其实和=差不多
select * from t_student where stuname like '张三';
select * from t_student where stuname like '%三%';
# 10.查询出学生表中年龄大于20的男同学的所有信息
select * from t_student where age > 20 and sex = '男'
# 11 查询出学生表中年龄大于20或者住址在长沙的同学的所有信息
select * from t_student where age > 20 or address like '%长沙%'
# 12 查询出所有的学生信息,根据id降序 desc 降序 asc 升序【默认就是升序,也就是 asc可以省略】
select *
from t_student
order by id desc;
select *
from t_student
order by id asc;
select *
from t_student
order by id ;
# 排序我们可以根据多个字段来排列,前面的字段优先排序
# 先根据age降序排列,如果age有相同的信息,那么再根据id升序排序
select * from t_student order by age desc ,id asc;
select * from t_student order by age desc ,id desc;
4.2 聚合函数聚合函数一般用于统计# 聚合函数 -- 一般用于统计
# 1.统计学员的总数 count 统计某列中非空的数据的条数
select count(*) from t_student ;
select count(id) from t_student ;
select count(address) from t_student;
select count(birthday) from t_student;
## 在实际开发中我们使用 count(1) 来统计,效率会更高
select 1,id from t_student ;
select count(1) from t_student ;
# 2.统计班级中学生最大的年龄
select max(age) from t_student ;
# 3.统计班级中学习最小的年龄
select min(age) from t_student ;
# 4.统计班级中的学员的平均年龄
select avg(age) from t_student ;
# 5.统计班级中学员的年龄总和
select sum(age) from t_student ;
4.3 分组查询语法规则SELECT <字段列表>
FROM <表名>
[WHERE <查询条件>]
[ORDER BY <排序字段>]
[GROUP BY <分组字段>]
[HAVING <分组后的查询条件>]
分组查询通常用于统计,一般和聚合函数配合使用注:分组查询有一个原则,就是 select 后面的所有列中没有使用聚合函数的列,必须出现在group by后面4.4 常用函数4.4.1 数字函数函数说明案例# 数字函数
# abs函数 取绝对值
select abs(-100) ;
# avg() 取平均值
select avg(age) from t_student;
# CEIL(x)/CEILING(x)
select ceil(2.5) ;
select ceil(avg(age) ) from t_student;
select ceiling(3) ;
select ceil(3) ;
# floor
select floor(2.5) ;
# exp e的3次方
select exp(3) ;
# GREATEST(expr1, expr2, expr3, …) 返回列表中的最大值
select GREATEST(1,4,5,3,9,2) ;
# LEAST(value1,value2,...) 返回列表中的最小值
select LEAST(1,4,5,3,9,2) ;
# LN 自然对数
select ln(2) ;
# LOG(x)
select log(20) ;
# POW(x,y) 返回x的y次方
select POW(2,3) ;
# RAND() 返回0~1的随机值
select RAND() ;
# ROUND(x) 返回离x最近的整数
select round(5.12) ;
# SIGN(x) 判断x的符号 大于0 等于0 小于0 1 0 -1
select sign(99),sign(0),sign(-199);
# SQRT(x) x的平方根
select SQRT(9);
# TRUNCATE(x,y)
select TRUNCATE(3.15926,3),TRUNCATE(3.15926,2) ;
4.4.2 字符串函数函数说明# 字符串函数
# ASCII 查看第一个字符的ASCII值
select ascii('ABC'),ascii('BC');
# length 返回字符串的长度 字符个数
select length('abcd1234'),CHAR_LENGTH('abcd1234');
# CONCAT(s1,s2…sn) 字符串拼接
select id,stuname ,age,concat('【',id,'】',stuname) from t_student
# FIND_IN_SET(s1,s2) 返回在字符串s2中与s1匹配的字符串的位置
select FIND_IN_SET("c","a,b,c,d,e,f,g");
select FIND_IN_SET('c','a,b,c,d,e,f,g');
# FORMAT(x,n) 函数可以将数字 x 进行格式化 “#,###.##”, 将 x 保留到小数点后 n 位,最后一位四舍五入
select FORMAT(19999999999.5678,2);
# INSERT(s1,x,len,s2) 字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串
select INSERT("www.baidu.com",5,5,"sinax") ;
# LOCATE(s1,s) 从字符串 s 中获取 s1 的开始位置
select LOCATE("a","bcdaefg");
# LCASE(s)/LOWER(s) 转换为小写
# UCASE(s)/UPPER(s) 转换为大写
select lcase('ABCedfgDDDddd'),LOWER('ABCedfgDDDddd'),UCASE('ABCedfgDDDddd'),UPPER('ABCedfgDDDddd') ;
# TRIM(s) 去掉字符串 s 开始和结尾处的空格
# LTRIM(s) 去掉字符串 s 开始空格
# RTRIM(s) 去掉字符串 s 结尾处的空格
select TRIM(' abc def '),LTRIM(' abc def '),RTRIM(' abc def ');
# SUBSTR(s, start, length) SUBSTRING 从字符串 s 的 start 位置截取长度为 length 的子字符串
select substr("abcdefg1234566",4,5) ;
# POSITION(s1 IN s) 从字符串 s 中获取 s1 的开始位置
select POSITION("123" in "abcdefg1235")
# REPEAT(s,n) 将字符串 s 重复 n 次
select REPEAT("hello-",5);
# REVERSE(s) 将字符串s的顺序反过来
select REVERSE("abcdefg") ;
# STRCMP(s1,s2) 比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1 select STRCMP("abc","abc") ,STRCMP("a1","a2"),STRCMP("a2","a1") ; 4.4.3 日期函数函数说明# 日期时间函数 select now(); # CURDATE()/CURRENT_DATE() 返回当前日期 select CURDATE(),CURRENT_DATE() ; # CURRENT_TIME()/CURTIME() 返回当前时间 select CURTIME() , CURRENT_TIME() ; # now() CURRENT_TIMESTAMP() 返回当前日期和时间 select now(),CURRENT_TIMESTAMP() ; # ADDDATE(d,n) 计算起始日期 d 加上 n 天的日期 select ADDDATE("2022-01-26",6) ,ADDDATE(now(),10) ; # ADDTIME(t,n) 时间 t 加上 n 秒的时间 select ADDTIME('2022-01-02 11:11:11',59),ADDTIME(now(),60*60) # DATE() 从日期或日期时间表达式中提取日期值 select date('2022-01-02 11:11:11') ,date(now()); # DAY(d) 返回日期值 d 的日期部分 select day('2022-01-02 11:11:11'),day(now()) ; # DATEDIFF(d1,d2) 计算日期 d1->d2 之间相隔的天数 select DATEDIFF("2021-12-23","2022-01-01") ,DATEDIFF("2022-01-01","2021-12-23"); # DATE_FORMAT(f) 按表达式 f的要求显示日期 d select DATE_FORMAT(now(),"%Y-%m-%d %r") ,DATE_FORMAT(now(),"%Y-%m-%d %H:%I:%S"); # DAYNAME(d) 返回日期 d 是星期几,如 Monday,Tuesday select DAYNAME(now()),DAYNAME("2022-02-14") # DAYOFMONTH(d) 计算日期 d 是本月的第几天 select DAYOFMONTH(now()),DAYOFMONTH("2022-02-14"); # DAYOFWEEK(d) 日期 d 今天是星期几,1 星期日,2 星期一,以此类推 select DAYOFWEEK(now()) ,DAYOFWEEK("2022-02-14"); # EXTRACT(type FROM d) 从日期 d 中获取指定的值,type 指定返回的值 select EXTRACT(DAY from now()) ,EXTRACT(WEEK from now()) ,EXTRACT(HOUR from now()) ,EXTRACT(SECOND from now()) ,EXTRACT(MINUTE from now()) # UNIX_TIMESTAMP() 获取时间戳 select UNIX_TIMESTAMP('2022-01-01') # FROM_UNIXTIME() 根据时间戳转换为日志 select FROM_UNIXTIME(1640966400) ; 4.4.4 高级函数CASE函数,类似于Java中Switch语句语法: CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END; # 高级函数 # case函数 select * from t_student ; select id,stuname,age ,case when age < 18 then '[0-18]' when age BETWEEN 18 and 20 then '[18-20]' when age BETWEEN 20 and 30 then '[20-30]' else '[30以上]' end from t_student IF函数IF()函数在条件为TRUE时返回一个值,如果条件为FALSE则返回另一个值。语法:IF(condition, value_if_true, value_if_false)# IF语句 select t.* ,if(age >=18,'成年人','青少年'),if(sex='男',1,0) from t_student t IFNULL函数如果表达式为NULL,则IFNULL()函数返回指定的值。如果表达式为NOT NULL,则此函数返回表达式。语法:IFNULL(expression, alt_value)# IFNULL 函数 select t.* ,ifnull(address,"中国") from t_student t ISNULL函数ISNULL()函数返回1或0,具体取决于表达式是否为NULL。如果expression为NULL,则此函数返回1.否则,返回0。语法:ISNULL(expression)# ISNULL() 函数 select t.* ,ISNULL(address) from t_student t; NULLIF函数NULLIF()函数比较两个表达式,如果它们相等则返回NULL。 否则,返回第一个表达式。语法:NULLIF(expr1, expr2)# NULLIF函数 如果两个表达式相同就返回null,否则返回第一个表达式 select NULLIF('a','b'),NULLIF('a1','a1') ; CAST函数CAST()函数将(任何类型的)值转换为指定的数据类型。语法:CAST(value AS datatype)# CAST函数 select CAST('2022-02-13' as DATE) ; select CAST('2022-02-13 12:12:24' as TIME) ; select CAST(97 as CHAR) ; select CAST(5-20 as SIGNED) ; select CAST(12.666 as DECIMAL); select CAST('66' as BINARY); 4.5 多表查询4.5.1 交叉连接交叉连接是不带WHERE 子句的多表查询,它返回被连接的两个表所有数据行的笛卡尔积SELECT * FROM T_A , T_B 案例# 交叉连接 select t1.* ,t2.* from t_student t1,t_class t2; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HOXXadOP-1644764461096)(img\image-20220213150351624.png)]4.5.2 内连接在交叉连接的基础上增加连接的条件,不需要连接无效的记录SELECT * FROM T_A INNER JOIN T_B ON T_A.SID = T_B.SID # 等价于 SELECT * FROM T_A,T_B WHERE T_A.SID = T_B.SID 案例# 内连接 : 在交叉连接的基础上增加连接的条件,不需要连接无效的记录 select t1.*,t2.* from t_student t1 INNER JOIN t_class t2 on t1.class_id = t2.class_id # on 关键字后面的是连接的条件 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gkVMeXwE-1644764461096)(img\image-20220213150913627.png)]4.5.3 外连接左连接select t1.*, t2.* from t_student t1 left outer join t_class t2 on t1.classid=t2.id 右连接select t1.*, t2.* from t_student t1 right join t_class t2 on t1.classid=t2.id 全连接select t1.*, t2.* from t_student t1 full join t_class t2 on t1.classid=t2.id 案例# 外连接: 找到学生表中的所有的学生信息及对应的班级信息 # 内连接只会保留满足连接条件的记录 # 左外连接: 在内连接的基础上保留了左侧表结构中不满足连接条件的记录 select t1.*,t2.* from t_student t1 LEFT JOIN t_class t2 on t1.class_id = t2.class_id # 右外连接:在内连接的基础上保留了右侧表结构中不满足连接条件的记录 select t1.*,t2.* from t_Class t1 RIGHT JOIN t_student t2 on t1.class_id = t2.class_id select t1.*,t2.* from t_class t1 LEFT JOIN t_student t2 on t1.class_id = t2.class_id # 全连接 # 全连接的作用是 在内连接的基础上保留的左右两边不满足条件的记录,但是在MySQL中已经移除了全连接,但是在Oracle或者其他的数据库中是存在的。 select t1.*,t2.* from t_student t1 LEFT JOIN t_class t2 on t1.class_id = t2.class_id; # 对应的全连接操作 select t1.*,t2.* from t_student t1 FULL JOIN t_class t2 on t1.class_id = t2.class_id; select t1.*,t2.* from t_class t1 LEFT JOIN t_student t2 on t1.class_id = t2.class_id; select t1.*,t2.* from t_class t1 FULL JOIN t_student t2 on t1.class_id = t2.class_id; 等价于 : union 与union all区别select t1.*, t2.* from t_student t1 left outer join t_class t2 on t1.classid=t2.id union select t1.*, t2.* from t_student t1 right join t_class t2 on t1.classid=t2.id select t1.*, t2.* from t_student t1 left outer join t_class t2 on t1.classid=t2.id union all select t1.*, t2.* from t_student t1 right join t_class t2 on t1.classid=t2.id union和union all都能实现结果集的合并union合并结果集后会取出重复的记录union all 合并结果集后不会移除重复的记录4.5.4 子查询# 子查询 嵌套查询 # 查询出班级为 java1班 的所有的学员信息 select t1.* from t_student t1 where class_id in ( select t_class.class_id from t_class where t_class.class_name = 'java1班' or t_class.class_name = 'java2班' ) # 如果在子查询中只有一条记录那么我们可以用=来替代in select t1.* from t_student t1 where class_id = ( select t_class.class_id from t_class where t_class.class_name = 'java1班' or t_class.class_name = 'java2班' ) select t1.* from t_student t1 where EXISTS # exists 存在于的含义 外表中的记录存在于子表中 就满足条件 否则就过滤掉 ( select t_class.class_id from t_class where t_class.class_name = 'java1班' and t1.class_id = t_class.class_id ) 4.6 综合案例drop table student; create table student ( id int(3) PRIMARY KEY , name varchar(20) not null, sex varchar(4), birth int(4), department varchar(20), address varchar(50)); # 创建score表。SQL代码如下: drop table score; create table score( id int(3) PRIMARY KEY , stu_id int(3) not null, c_name varchar(20) , grade int(3) ) -- 向student表插入记录的INSERT语句如下: insert into student values(901,'张老大','男',1985,'计算机系','北京市海淀区'); insert into student values(902,'张老二','男',1986,'中文系','北京市昌平区'); insert into student values(903,'张三','女',1990,'中文系','湖南省永州市'); insert into student values(904,'李四','男',1990,'英语系','辽宁省阜新市'); insert into student values(905,'王五','女',1991,'英语系','福建省厦门市'); insert into student values(906,'王六','男',1988,'计算机系','湖南省衡阳市'); -- 向score表插入记录的INSERT语句如下: insert into score values(1,901,'计算机',98); insert into score values(2,901,'英语',80); insert into score values(3,902,'计算机',65); insert into score values(4,902,'中文',88); insert into score values(5,903,'中文',95); insert into score values(6,904,'计算机',70); insert into score values(7,904,'英语',92); insert into score values(8,905,'英语',94); insert into score values(9,906,'计算机',90); insert into score values(10,906,'英语',85); SELECT * from student; select * from score; 1、查询student表的第2条到4条记录 select * from student LIMIT 1,3; 2、从student表查询所有学生的学号(id)、 姓名(name)和院系(department)的信息 select id '学号' ,name as '姓名' ,department 院系 from student t 3、从student表中查询计算机系和英语系的学生的信息 select * from student t where t.department = '计算机系' or t.department='英语系' select * from student t where t.department in ('计算机系','英语系') 4、从student表中查询年龄25~30岁的学生信息 select *,EXTRACT(year from now()) ,EXTRACT(year from now())-birth age from student where (EXTRACT(year from now()) - birth) BETWEEN 30 and 40; 5、从student表中查询每个院系有多少人 select t.department,count(1) from student t group by t.department 6、从score表中查询每个科目的最高分 select s.c_name,max(grade) from score s group by s.c_name 7、查询李四的考试科目(c_name)和考试成绩(grade) 注意: '=' 只有在确定结果是一个的情况下使用,不确定的使用用 'in' select c_name,grade from score where stu_id in ( select id from student where name = '李四' ) # 通过exists select c_name ,grade from score s where EXISTS ( select id from student where name = '李四' and student.id = s.stu_id ) # 通过左连接来实现 select t1.* from score t1 RIGHT join ( select * from student where name = '李四') t2 on t1.stu_id = t2.id ; select t1.*,t2.* from score t1 RIGHT join student t2 on t1.stu_id = t2.id where t2.name = '李四' 8、用内连接的方式查询所有学生的信息和考试信息 select t1.*,t2.* from student t1 INNER JOIN score t2 on t1.id = t2.stu_id 9、计算每个学生的总成绩 select stu_id,sum(grade) from score group by stu_id select stu_id,(select name from student where id = stu_id) 姓名,sum(grade) from score group by stu_id select t1.name,sum(t2.grade) from student t1 INNER JOIN score t2 on t1.id = t2.stu_id group by t1.name 10、计算每个考试科目的平均成绩 select c_name,TRUNCATE(avg(grade),2) 平均分 from score group by c_name 11、查询计算机成绩低于95的学生信息 select * from student where id in ( select stu_id from score where c_name = '计算机' and grade < 95 ) select * from student where EXISTS ( select stu_id from score where c_name = '计算机' and grade < 95 and student.id = stu_id ) 12、查询同时参加计算机和英语考试的学生的信息 select * from score; # 首先查询出 参加计算机的学员 select * from score where c_name = '计算机' select * from score where c_name = '英语' select * from student where id in ( select stu_id from score where stu_id in ( select stu_id from score where c_name = '计算机' ) and c_name = '英语' ) 13、将计算机考试成绩按从高到低进行排序 select * from score where c_name = '计算机' order by grade desc 14、从student表和score表中查询出学生的学号, 然后合并查询结果 UNION与union all select id from student union select stu_id from score select id from student union all select stu_id from score 15、查询姓张或者姓王的同学的姓名、院系和考试科目及成绩 select name 姓名, department 院系, c_name 考试科目 ,grade 成绩 from student t1 left join score t2 on t1.id = t2.stu_id where t1.name like '张%' or t1.name like '王%' select name 姓名, department 院系, c_name 考试科目 ,grade 成绩 from (select * from student where name like '张%' or name like '王%') t1 left join score t2 on t1.id = t2.stu_id 16、查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩 select name 姓名, (EXTRACT(year from now()) - birth) 年龄, department 院系, c_name 考试科目 ,grade 成绩 from student t1 left join score t2 on t1.id = t2.stu_id where address like '湖南%' 5.DCL 数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括grant、revoke 等。 DCL 语句主要是DBA 用来管理系统中的对象权限时所使用,一般的开发人员很少使用。下面 通过一个例子来简单说明一下.mysql> grant select,insert on plf.* to 'plf'@'%' identified by '123456'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> revoke insert on plf.* from 'plf'@'%'; Query OK, 0 rows affected (0.00 sec)发布于 2022-02-13 23:12MysqliMySQLMySQL 入门赞同 122 条评论分享喜欢收藏申请 DML 触发器 - SQL Server | Microsoft Learn 跳转至主内容 此浏览器不再受支持。 请升级到 Microsoft Edge 以使用最新的功能、安全更新和技术支持。
下载 Microsoft Edge
有关 Internet Explorer 和 Microsoft Edge 的详细信息
目录 退出焦点模式 使用英语阅读 保存 目录 使用英语阅读 保存 打印 Twitter LinkedIn Facebook 电子邮件 目录 DML 触发器
项目 05/23/2023
6 个参与者
反馈 本文内容 适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例 DML 触发器为特殊类型的存储过程,可在发生数据操作语言 (DML) 事件时自动生效,以便影响触发器中定义的表或视图。 DML 事件包括 INSERT、UPDATE 或 DELETE 语句。 DML 触发器可用于强制业务规则和数据完整性、查询其他表并包括复杂的 Transact-SQL 语句。 将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。 如果检测到错误(例如,磁盘空间不足),则整个事务即自动回滚。 DML 触发器的优点 DML 触发器类似于约束,因为可以强制实体完整性或域完整性。 一般情况下,实体完整性总应在最低级别上通过索引进行强制,这些索引应是 PRIMARY KEY 和 UNIQUE 约束的一部分,或者是独立于约束而创建的。 域完整性应通过 CHECK 约束进行强制,而引用完整性 (RI) 则应通过 FOREIGN KEY 约束进行强制。 当约束支持的功能无法满足应用程序的功能要求时,DML 触发器非常有用。 下面的列表比较 DML 触发器和约束,并在 DML 触发器优于约束时进行标识。 DML 触发器可以将更改通过级联方式传播给数据库中的相关表;不过,使用级联引用完整性约束可以更有效地执行这些更改。 除非 REFERENCES 子句定义了级联引用操作,否则 FOREIGN KEY 约束只能用与另一列中的值完全匹配的值来验证列值。 DML 触发器可以防止恶意或错误的 INSERT、UPDATE 以及 DELETE 操作,并强制执行比 CHECK 约束定义的限制更为复杂的其他限制。 与 CHECK 约束不同,DML 触发器可以引用其他表中的列。 例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其他操作,如修改数据或显示用户定义错误信息。 DML 触发器可以评估数据修改前后表的状态,并根据该差异采取措施。 一个表中的多个同类 DML 触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的操作来响应同一个修改语句。 约束只能通过标准化的系统错误消息来传递错误消息。 如果应用程序需要(或能受益于)使用自定义消息和较为复杂的错误处理,则必须使用触发器。 DML 触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改。 当更改外键且新值与其主键不匹配时,这样的触发器将生效。 但是,FOREIGN KEY 约束通常用于此目的。 如果触发器表上存在约束,则在 INSTEAD OF 触发器执行后但在 AFTER 触发器执行前检查这些约束。 如果违反了约束,则回滚 INSTEAD OF 触发器操作并且不执行 AFTER 触发器。 DML 触发器的类型 AFTER 触发器 在执行 INSERT、UPDATE、MERGE 或 DELETE 语句的操作之后执行 AFTER 触发器。 如果违反了约束,则永远不会执行 AFTER 触发器;因此,这些触发器不能用于任何可能防止违反约束的处理。 对于在 MERGE 语句中指定的每个 INSERT、UPDATE 或 DELETE 操作,将为每个 DML 操作触发相应的触发器。 INSTEAD OF 触发器 INSTEAD OF 触发器替代下列触发语句的标准操作。 因此,触发器可用于对一个或多个列执行错误或值检查,然后在插入、更新或删除行之前执行其他操作。 例如,当在工资表中小时工资列的更新值超过指定值时,可以将触发器定义为产生错误消息并回滚该事务,或在将记录插入工资表中之前将新记录插入到审核记录。 INSTEAD OF 触发器的主要优点是可以使不能更新的视图支持更新。 例如,基于多个基表的视图必须使用 INSTEAD OF 触发器来支持引用多个表中数据的插入、更新和删除操作。 INSTEAD OF 触发器的另一个优点是使你得以编写这样的逻辑代码:在允许批处理的其他部分成功的同时拒绝批处理中的某些部分。 下表对 AFTER 触发器和 INSTEAD OF 触发器的功能进行了比较。 函数 AFTER 触发器 INSTEAD OF 触发器 适用性 表 表和视图 每个表或视图包含触发器的数量 每个触发操作(UPDATE、DELETE 和 INSERT)包含多个触发器 每个触发操作(UPDATE、DELETE 和 INSERT)包含一个触发器 级联引用 无任何限制条件 不允许在作为级联引用完整性约束目标的表上使用 INSTEAD OF UPDATE 和 DELETE 触发器。 执行 之后: 约束处理 声明性引用操作 创建插入的 和 删除的 表 触发操作 之前:约束处理 代替:触发操作 之后:创建 插入的 和 删除的 表 执行顺序 可指定第一个和最后一个执行 不适用 插入的和 删除的表中的 varchar(max) 、 nvarchar(max) 和 varbinary(max) 列引用 允许 允许 插入的和 删除的表中的 text 、 ntext 和 image 列引用。 不允许 允许 CLR 触发器 CLR 触发器可以是 AFTER 触发器或 INSTEAD OF 触发器。 CLR 触发器还可以是 DDL 触发器。 CLR 触发器将执行在托管代码(在 .NET Framework 中创建并在 SQL Server 中上载的程序集的成员)中编写的一个或多个方法,而不用执行 Transact-SQL 存储过程。 Related Tasks 任务 主题 说明如何创建 DML 触发器。 创建 DML 触发器 说明如何创建 CLR 触发器。 创建 CLR 触发器 说明如何创建 DML 触发器,以处理单行和多行数据修改。 创建 DML 触发器以处理多行数据 说明如何嵌套触发器。 创建嵌套触发器 说明如何指定激发 AFTER 触发器的顺序。 指定第一个和最后一个触发器 说明如何在触发器代码中使用特殊的插入和删除表。 使用插入的和删除的表 说明如何修改或重命名 DML 触发器。 修改或重命名 DML 触发器 说明如何查看有关 DML 触发器的信息。 获取有关 DML 触发器的信息 说明如何删除或禁用 DML 触发器。 删除或禁用 DML 触发器 说明如何管理触发器安全性。 管理触发器安全性 另请参阅 CREATE TRIGGER (Transact-SQL) ALTER TRIGGER (Transact-SQL) DROP TRIGGER (Transact-SQL) DISABLE TRIGGER (Transact-SQL) 触发器函数 (Transact-SQL) 反馈 此页面是否有帮助? 是 否 提供产品反馈 | 在 Microsoft Q&A 获取帮助 反馈 Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see: https://aka.ms/ContentUserFeedback. 提交和查看相关反馈 此产品 此页面 查看所有页面反馈 其他资源 加州消费者隐私法案 (CCPA) 禁用图标 你的隐私选择 主题
亮
暗
高对比度 早期版本 博客 参与 隐私 使用条款 商标 © Microsoft 2024 其他资源 本文内容 加州消费者隐私法案 (CCPA) 禁用图标 你的隐私选择 主题
亮
暗
高对比度 早期版本 博客 参与 隐私 使用条款 商标 © Microsoft 2024DML 触发器 - SQL Server | Microsoft Learn