SQL servr——基础篇之DML增删改查
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增删改查的更多相关文章
- Sql Server xml 类型字段的增删改查
1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...
- sql server连接oracle并实现增删改查
需要一个软件ODAC112040Xcopy_64bit 我连接的oracle是11g r2 sqlserver 是 2016 软件下载 https://pan.baidu.com/s/1OpYmpR ...
- sql库连sql中间库连orcle库增删改查方案
---中间库建立存储过程create procedure Proc_exec@SQL nvarchar(MAX)ASexec(@SQL) GO---web服务器执行语句 --查 select * fr ...
- python基础之字典以及增删改查
字典:字典是python中唯一的一个映射类型,主要形式为 dic = {key1:value,key2:value2,....} 字典中key的值是唯一的,主要关系到HASH算法,并且key的值必须是 ...
- 【django基础之ORM,增删改查】
一.定义 1.什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候, ...
- SQL server数据库的链接以及增删改查的操作
1.添加引用using System.Data;using System.Data.SqlData;2.建立于数据库的连接,建议将它做成一个方法,方便多次利用.string sqlconnection ...
- 使用sql对数据库进行简单的增删改查
1.创建表 create table 表名( 列名 列的类型, 列名 列的类型, 列名 列的类型 (注意自后一列不能加‘ ,’) ); 2.修改表 修改表名--> rename 旧表名 t ...
- iOS开发——数据持久化OC篇&plist文件增删改查操作
Plist文件增删查改 主要操作: 1.//获得plist路径 -(NSString*)getPlistPath: 2.//判断沙盒中名为plistname的文件是否存在 -(BOOL ...
- python 基础_ 数组的 增删改查3
数组是运用在多个数据存在一个变量中的,而在调用的时候可以调用所需要的数组. 创建数组 a = ['a','b','c','d','f'] #创建一个数组a其中有5个元素分别是abcdf 1.查询.所谓 ...
- python 基础知识 列表的 增删改查 以及迭代取值
""" python 列表 通用方法 元组.数组.字典 取值方法 [] 列表中可以存储不同类型的数据 函数 封装了独立的功能可以直接调用 函数名(参数) 方法 和函数类似 ...
随机推荐
- 剑指 Offer II 回溯法
086. 分割回文子字符串 用substr枚举 因为是连续的 不是放与不放的问题 class Solution { public: vector<vector<string>> ...
- websphere+IHS+plugin集群搭建
配置:wa1+was2 was1:Dmgr app01 oracle ihs was2:Dmgr app02 原理:通过Dmgr管理下面两个agent,再通过agent去间接控制运行在节点上的ser ...
- 《Makefile中变量的高级用法:变量的替换引用、变量的嵌套使用》
高级使用方法有两种:第一种是变量的替换引用,第二种是变量的嵌套引用. 第一种用法经常用到,第二种用法我们很少使用.我们应该尽量避免使用变量的嵌套引用,在必须使用时,嵌套的层数越少越好.因为这种方法表达 ...
- [部署日记]GO在Visual Studio Code初次运行时提示The "gopls" command is not available. Run "go get -v golang.org/x/tools/gopls" to install.
本以为VSC在商城装上插件后就能拎包入住,F5的时候我当场好家伙 于是无脑Install... Installing github.com/nsf/gocode FAILED Installing g ...
- 关键aspNetCore processPath 这一行,耗费了一天
<?xml version="1.0" encoding="UTF-8"?> <configuration> <locatio ...
- Kubernetes学习笔记(二)
[查看pod里container的logs] kubectl logs nginx --all-containers=true #Return snapshot lo ...
- jmeter取样器之KafkaProducerSampler(往kafka插入数据)
项目背景 性能测试场景中有一个业务场景的数据抽取策略是直接使用kafka队列,该场景需要准备的测试数据是kafka队列里的数据,故需要实现插入数据到kafka队列,且需要实现控制每分钟插入多少条数据. ...
- php 图片加水印插件
问题:背景透明的水印图片,在加到原图上后不显示,待解决 <?php /** * 图片加水印(适用于png/jpg/gif格式) * * @author flynetcn * * @param $ ...
- 使用supervisor 管理 laravel 框架中的进程
前言:在laravel中,经常要在项目根目录下执行 php artisan queue:work 来执行队列中的任务,由此,我们想到用supervisor来管理这个进程 Supervisor是用Py ...
- 【C++复习】第九章 模板与群体数据(2)
学习重点:容器类型内部的实现机制,顺便复习前面各章内容.容器类型的具体实现不需要特别关注(目前不需要会裸手写这么一个容器类型) 1.群体/线性群体 群体的概念 群体是指由多个数据元素组成的集合体.群体 ...