DML:数据操作语言

用于添加、更新、删除和查询数据库中的语言

添加——insert语句

向数据表中插入新的行(记录)可多行可一行

语法:insert  [into]  表名  [(column1,.....)]  values(value1,value2......)【添加一行[]可省略】

【添加多行】

一、insert  [into]  表名  [(column1,.....)]

select  value1,vaule2,...union

....

select  value1,vaule2,...

eg:insert  into  Employee (Name,Gender,Age,Rank)

select  'joy','男',23,'201'  union

select  'moy','女',23,'201'

二、insert  into  Employee values(值列表)

eg:insert  into  Employee values('joy','男',23,'201' ),('moy','女',23,'201' )

更新——update语句

更新表中数据

更新表中全部数据

根据指定条件更新部分数据

语法:

update  表名

set  字段=值,...   --需要更改的字段及值

[where  条件] --更新的条件,若省略则更新该表中指定字段的所有值

or:表示条件任意成立

and:表示条件要同时成立

执行update出现如下报错:jData truncation: Truncated incorrect DOUBLE value: 'zhangsan'

原因set语句后多条件不能使用and隔开,只能使用逗号隔开

原SQL:

update student s set s.username='zhangsan' and s.userpassword='123' where s.stuname='张三'

更改后:

update student s set s.username='zhangsan' , s.userpassword='123' where s.stuname='张三'

删除——delete语句

删除表中数据

删除表中全部数据

删除表中指定条件的部分数据

语法

delete  [from]  表名

[where 条件]--省略时则删除表中的所有内容

注意:delete后只会删除表中的内容,对表结构无影响,有条件的删除语句针对整行数据

truncate table 表名 --清除表内容

查询——select语句

select  *  from  表名    --查询表中所有数据

select  字段  from 表名    --查询某一个或多个字段的数据,多字段之间用逗号隔开

select 字段  as 别名  from  表名   --为字段添加表名

select  *  into  备份后的表名 from  原始表名   --备份数据表

select  distinct  字段  from  表名  --过滤某字段中的重复行,distinct关键字:用于过滤重复行

运算符

算术运算符:+、-、*、/、%

比较运算符:=、<、>、<>或!=(不等于)、>=、<=、is null(判断是否为空)、is not null(判断是否不为空)

逻辑运算符

  in:判断是否在指定集合内

  between...and...介于两者之间可以时数组,字符,日期

  like:模糊运算符

  •     %:匹配0至多个任意字符
  •     _:任意一个字符
  •     []:指定一个字符的集合,指定一个字符或范围中的任意一个
  •     [^]:取^后以外的范围([]中的字符不是通配符)

——排序

order by  字段  排序方式(asc:升序,默认;desc:降序;多列——从左至右)

top  n:返回查询集合前的n行数据

eg:select  top  5 *  from  表名  --返回前5行数据

——分组查询

group  by  子句

将数据划分到不同的组中,实现记录分组查询

作用:通过一定的队则将一个数据集划分为若干嘞,然后经过若干个小区域进行统计汇总

eg:select  字段  count(*) from  表名  group  by  字段

注意:1.group by子句通常和聚合函数一起使用;2.查询列一般时分组列或聚合函数列;3.select子句中的非聚合函数列一定要出现在group  by子句的分组字段列表中

多字段分组和having子句

优先级:从左至右

having子句:指定分组后的筛选条件,放在group  by子句后,常包含聚合函数

with rullup:用于在分组之后加一条汇总语句

having子句和where子句的区别

where:对结果集进行筛选

having:对分组的结果进行筛选

——连接查询

连接类型有:交叉连接、内连接、简单多表连接、自连接

作用:将多表做为一张表出现,当检索数据时通过连接查询可检索出源于不用表的信息,提高用户的灵活性

交叉连接(cross join)

语法:select * from 表1  cross join 表2  [where 表1.pk=表2.pk]

若省略where语句则成笛卡尔积,返回的行数为两表行数的乘积,列数为两表列数之和

内连接(inner join)

前提条件:两表有存在公共列

返回结果:仅返回匹配的数据

语法:select 字段 from 表1 [inner] join  表2 on 连接条件  [where 条件]   --where可用and代替

连接条件:eg:表1.字段=表2.字段;通常一个主键一个外键,如果有别名则用”别名.字段“

简单多表查询(两两相连)

语法:select 字段 from 表1 join  表2 on 表1.字段=表2.字段  join 表3  on  表2.字段=表3.字段  [where 条件]

自连接

物理上为同一张表,逻辑上为两张表

语法:select * from 表1  别名1,表1  别名2  where  别名1.关系字段=别名2.关系字段

——子查询

查询中嵌套查询

单行单列:作为条件值,使用=、!=、<、>等进行条件判断

SELECT 字段列表 FROM 表名 WHERE 字段名=(子查询)

多行单列:使用in等关键字进行条件判断

SELECT 字段列表 FROM 表名 WHERE 字段名 IN (子查询)

多行多列:作为虚拟表
SELECT 字段列表 FROM (子查询) WHERE 条件

2023.02.22

多表查询:从多张表查询数据

内连接:查询A,B交集的数据

左外连接:相当于查询A表左右数据和交集部分数据

右外连接:相当于查询B表所有数据和交集部分数据

事务

是一种机制,一个操作序列。包含了一组组数据库操作指令

事务把所有的命令作为一个整体想系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败

事务是一个不可分割的工作逻辑单位

--开启事务

START TRANSACTION

BEGIN;

--提交事务

COMMIT;

--回滚事务

ROLLBACK;

事务四大特征

原子性:事务是不可分割的最小操作单位,要么同时成功,要么同时失败。

一致性:事务完成时,必须使所有的数据都保持一种状态。

隔离性:多个事务之间,操作的可见性。

持久性:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

MySQL事务默认自动提交。

Oracle事务默认是手动提交的。

--查看事务的默认提交方式:1:自动提交  0:手动提交

SELECT @@autocommit;

--修改事务提交方式

SET @@autocommit=0;

SQL servr——基础篇之DML增删改查的更多相关文章

  1. Sql Server xml 类型字段的增删改查

    1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...

  2. sql server连接oracle并实现增删改查

    需要一个软件ODAC112040Xcopy_64bit 我连接的oracle是11g r2  sqlserver 是 2016 软件下载 https://pan.baidu.com/s/1OpYmpR ...

  3. sql库连sql中间库连orcle库增删改查方案

    ---中间库建立存储过程create procedure Proc_exec@SQL nvarchar(MAX)ASexec(@SQL) GO---web服务器执行语句 --查 select * fr ...

  4. python基础之字典以及增删改查

    字典:字典是python中唯一的一个映射类型,主要形式为 dic = {key1:value,key2:value2,....} 字典中key的值是唯一的,主要关系到HASH算法,并且key的值必须是 ...

  5. 【django基础之ORM,增删改查】

    一.定义 1.什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候, ...

  6. SQL server数据库的链接以及增删改查的操作

    1.添加引用using System.Data;using System.Data.SqlData;2.建立于数据库的连接,建议将它做成一个方法,方便多次利用.string sqlconnection ...

  7. 使用sql对数据库进行简单的增删改查

    1.创建表 create table 表名( 列名  列的类型, 列名  列的类型, 列名  列的类型 (注意自后一列不能加‘ ,’) ); 2.修改表 修改表名--> rename 旧表名 t ...

  8. iOS开发——数据持久化OC篇&plist文件增删改查操作

    Plist文件增删查改   主要操作: 1.//获得plist路径    -(NSString*)getPlistPath: 2.//判断沙盒中名为plistname的文件是否存在    -(BOOL ...

  9. python 基础_ 数组的 增删改查3

    数组是运用在多个数据存在一个变量中的,而在调用的时候可以调用所需要的数组. 创建数组 a = ['a','b','c','d','f'] #创建一个数组a其中有5个元素分别是abcdf 1.查询.所谓 ...

  10. python 基础知识 列表的 增删改查 以及迭代取值

    """ python 列表 通用方法 元组.数组.字典 取值方法 [] 列表中可以存储不同类型的数据 函数 封装了独立的功能可以直接调用 函数名(参数) 方法 和函数类似 ...

随机推荐

  1. Smartbi 日志监控工具

    用户日志-开始监控

  2. SAP适合医疗器械行业的公司、工厂吗?

    医疗器械行业在我国国民经济中发展情况良好,未来发展前景也很看好.但竞争力不强,在GMP要求下消耗大量的人力.物力是我国医疗器械企业需要面对的巨大压力,在这种情况下,企业如何充分利用网络经济和信息手段加 ...

  3. syntax_lead_x.txt

    select lead( t1.field_date-1, 1, null ) over(partition by t1.field_str order by t1.field_str),*from ...

  4. H5网页CAD中webpack使用详细说明

    前言 webpack是用于现代 JavaScript 应用程序的静态模块打包工具,用以构建一个前端工程化项目,如vue-cli create-react-app等脚手架工具都是基于webpack的构建 ...

  5. 学习- vue 中 API $attr 用法

    2.4.0新增 定义:包含了父作用域不作为 prop 被识别(且获取)的 attribute 绑定( class 和 style 除外).当一个组件没有声明任何 prop 时,这里会包含所有父作用域的 ...

  6. django限制表单上传图片的大小

    django的ImageField没有提供控制上传图片的内置方法,我们可以在表单验证的过程中用clean函数来控制,搬运博客园 python小童鞋 ,可以通过重写ImageField的方法来控制上传图 ...

  7. js常用代码整理2

    引用js <script type="text/javascript" src="js/jquery-1.11.2.min.js"></scr ...

  8. OSPF配置知识总结2(单区域)

    OSPF配置知识总结2 静态路由有静态路由的好处,但也有弊端,牵一发动全身,在一个路由路径上,只要变一个,其他所有的路由器上的静态路由都要跟着改变. 用动态路由OSPF很简单就能解决这个问题.如下: ...

  9. SpringBoot(十五)单个以及多个跨域的配置方法

    同源策略是浏览器的一个安全限制,要求域名.协议.端口相同,如果不同则没办法进行数据交互.而跨域配置,则是为了解除这方面的限制.前后端分离的情况下,因为需要分开部署,后台开发基本都需要进行跨域配置了.( ...

  10. Jupyter Notebook安装代码提示功能

    默认Jupyter Notebook没有安装代码提示功能,但是我们可以可通过如下命令安装和配置使得Jupyter Notebook具备代码提供功能. (确保Anaconda在环境变量里)1.电脑上搜索 ...