SQL进阶(2)——SQL语句类型 增删改查CRUD 事务初步 表关联关系 视图 +索引

目录

  • 引出
  • SQL语句类型
    • 1.DML数据操纵语言(重点)
    • 2.DQL数据查询语言(重点)
    • 3.DDL(Data Definition Language了解)
    • 4.DCL(Data Control Language了解)
    • 5.TCL 事务控制语言
  • 运算符和其他函数
    • 1.运算符
    • 2.其它函数
    • 增删改查CRUD
  • 视图
  • 索引
  • 事务
    • 1.原子性
    • 2.一致性
    • 3.隔离性
    • 4.持久性
  • 数据库表的关联关系
    • 1.一对一:(学生—身份证)
    • 2.一对多:(辅导员—学生)
    • 3.多对多:(学生—社团)
  • 总结

引出

1.SQL语句的类型,数据操作语句,数据查询语句;
2.MySQL的运算符,常用函数,增删改查CRUD语法;
3.数据操作的事务:原子性,一致性,隔离性,持久性;
4.数据库表关联关系,一对一,一对多,多对多;
5.视图,索引;


SQL语句类型

SQL程序语言有四种类型,对数据库的基本操作都属于这四类,它们分别为;数据定义语言(DDL)、数据查询语言(DQL)、数据操纵语言(DML)、数据控制语言(DCL)

1.DML数据操纵语言(重点)

对数据库表中的记录进行改变的sql语句

数据操纵语言全程是Data Manipulation Language,主要是进行插入元组、删除元组、修改元组的操作。主要有insert、update、delete语法组成。

添加:insert into 表名 (字段名…,…) values(值…,)

删除:delete from 表名 where …

修改:update 表名 set 字段名=值,字段名=值 where …

2.DQL数据查询语言(重点)

对数据库表中的记录进行查询的sql语句

数据查询语言全称是Data Query Language,所以是用来进行数据库中数据的查询的,即最常用的select语句

查询:select 字段名…,… from 表名 where …

3.DDL(Data Definition Language了解)

修改数据库结构的语句

DDL全称是Data Definition Language,即数据定义语言,定义语言就是定义关系模式、删除关系、修改关系模式以及创建数据库中的各种对象,比如表、聚簇、索引、视图、函数、存储过程和触发器等等。

数据定义语言是由SQL语言集中负责数据结构定义与数据库对象定义的语言,并且由CREATE、ALTER、DROP和TRUNCATE四个语法组成。比如:

4.DCL(Data Control Language了解)

修改数据库用户信息或者授权

数据控制语言:Data Control Language。用来授权或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,能够对数据库进行监视。

比如常见的授权、取消授权、回滚、提交等等操作。

5.TCL 事务控制语言

事务处理语句

TCL,事务控制语言。通过一组逻辑操作单元(一组DML——sql语句),将数据从一种状态切换到另外一种状态,即要么全部成功,要么全部失败。

(ACID)

  • 原子性(atomicity):要么都执行,要么都回滚
  • 一致性(consistency):保证数据的状态操作前和操作后保持一致
  • 隔离性(lsolation):多个事务同时操作相同数据库的同一个数据时,一个事务的执行不受另外一个事务的干扰
  • 持久性(durability):一个事务一旦提交,则数据将持久化到本地,除非其他事务对其进行修改

运算符和其他函数

1.运算符

=、>、<、>=、<=、!=

like ‘%_’(重点)

between…and…

and

or

not

in(1,2,3)

is null

is not null

2.其它函数

去重:select distinct 字段 from 表名

select distinct job from emp

排序:select … from 表名 order by 字段(默认升序 asc,降序 desc)(重点)

select * from emp order by score desc,sal

取范围:select … from 表名 limit (传一个参数:取的记录数,从第一条记录开始取;传两个参数:开始的位置0,取的记录数)(重点)

第一个数字:开始的位置(从0开始)

第二个数字:取的记录数

select * from emp order by score desc limit 1,3

最大值:max(字段)

最小值:min(字段)

平均值:avg(字段)

求和:sum(字段)

取记录数:count(1)

select count(1) from emp where empNum like 'N%'

分组:select…from 表名 where 字段… group by 字段 having count(1)…(having表示对分组后的数据进行查询,where表示对分组前的数据进行查询)

select max(score),max(sal),dept from emp group by dept

增删改查CRUD

添加:insert into 表名 (字段名…,…) values(值…,)

删除:delete from 表名 where …

修改:update 表名 set 字段名=值,字段名=值 where …

查询:select 字段名…,… from 表名 where …

模糊查询:select 字段名…,… from 表名 where 字段 like ‘%_’

排序:select … from 表名 order by 字段(默认升序 asc,降序 desc)

取范围:select … from 表名 limit (传一个参数:取的记录数,从第一条记录开始取;传两个参数:开始的位置0,取的记录数)

左联:以左边的表为基准,通过on的关联条件,查询右边的表来补充数据,如果查询不到,补充上null

select * from dept left join emp on emp.dept_id = dept.id

视图

将select语句进行保存

使用的时候当作表来用

原理:子查询

索引

作用:提高查询效率,通过建立索引的字段去查询

提高效率、牺牲空间

数据结构B+树

事务

1.原子性

事务中所有执行的sql合并成一个执行单元

undolog日志:update emp set age=17 where id=20

执行:update emp set age=18 where id=20

2.一致性

添加事务和不添加事务数据保持一致

3.隔离性

隔离级别:

1)读未提交:READ UNCOMMITTED,会产生脏读

2)读已提交:READ COMMITTED,会产生不可重复读

3)可重复读:REPEATABLE READ,会产生幻读(默认事务隔离级别)

4)串行化:SERIALIZABLE,效率低

4.持久性

持久化到数据库

数据库表的关联关系

1.一对一:(学生—身份证)

​ 直接将第二张表的字段添加进第一张表中

2.一对多:(辅导员—学生)

一:辅导员
多:学生(外键字段)

新建一张表,用来记录第二张表的信息,然后在第一张表中添加一个外键字段,关联到第二张表的主键

3.多对多:(学生—社团)

​ 新建一张表,用来记录第二张表的信息,然后再建立第三张关联表,里面添加第一张表和第二张表的主键作为字段


总结

1.SQL语句的类型,数据操作语句,数据查询语句;
2.MySQL的运算符,常用函数,增删改查CRUD语法;
3.数据操作的事务:原子性,一致性,隔离性,持久性;
4.数据库表关联关系,一对一,一对多,多对多;
5.视图,索引;

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

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

相关文章

如何克服Leetcode做题的困境

文章目录 如何克服Leetcode做题的困境问题背景克服困境的建议实践与理论结合切忌死记硬背分析解题思路不要过早看答案迭代式学习寻求帮助坚持与耐心查漏补缺 结论 如何克服Leetcode做题的困境 问题背景 明明自觉学会了不少知识&#xff0c;可真正开始做Leetcode题目时&#x…

内存参数问题导致内存溢出

问题&#xff1a;内存参数问题导致内存溢出 1、文件过大&#xff0c;进行分块 2、 运行参数&#xff0c;使用最大内存配置2时&#xff0c;导致空指针异常。 3、获取详细报错信息-内存溢出 多线程捕获Throwable异常 修改代码&#xff0c;捕获Throwable&#xff0c;获取异常 异…

vue中预览pdf

情况一 如果后端返回的pdf地址&#xff0c;粘贴到浏览器的url框中&#xff0c;可以在浏览器中直接进行预览的&#xff0c;那么我们就用window.open&#xff0c;或 a标签&#xff0c;或iframe标签通过设置src进行预览即可 法1&#xff1a;可以直接使用window.open&#xff08;…

leetcode100.相同的树

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;相同的树 1️⃣ 代码&#xff1a; bool isSameTree(struct TreeNode* p, struct TreeNode* q){// 判断两棵树当前结点是否为空if (p NULL && q NULL) {// 说明是相同的return true;}// 来到这里有几种情况// …

【实战篇】docker-compose部署go项目

一、场景&#xff1a; 二、需求 三、实操 Stage 1&#xff1a;GoLand 中 build 生成二进制文件 Stage 2&#xff1a;编写 Dockerfile Stage 3&#xff1a;编写 docker-compose.yaml Stage 4&#xff1a;文件上传到 ubuntu 服务器上&#xff0c;并设置文件读写权限 Stage…

前端 | (二)各种各样的常用标签 | 尚硅谷前端html+css零基础教程2023最新

学习来源&#xff1a;尚硅谷前端htmlcss零基础教程&#xff0c;2023最新前端开发html5css3视频 文章目录 &#x1f4da;HTML排版标签&#x1f4da;HTML语义化标签&#x1f4da;块级元素与行内元素&#x1f4da;文本标签&#x1f407;常用的文本标签&#x1f407;不常用的文本标…

Kubernetes Service的过程

文章目录 Kubernetes Service的实现基础内容1. 命令 ip route show table all2. DNAT3. IPVS和iptables4. Service Service的实现简述 Kubernetes Service的实现 基础内容 在了解Service之前,需要先了解一些额外的知识: 命令: ip route show table allDNATIPVS和iptables基础…

idea不小心push的文件夹怎么处理?

第一种方式&#xff0c;把不小心push上去的人解决掉。 第二种方式&#xff0c;以我自身为例&#xff0c;同事不小心push了.idea文件夹 首先打开git bash git rm --cached .idea/ -r 然后查看一下状态 git status 接着提交修改 git commit -m "cancel track .idea file&q…

【Redis】高可用之三:集群(cluster)

本文是Redis系列第6篇&#xff0c;前5篇欢迎移步 【Redis】不卡壳的 Redis 学习之路&#xff1a;从十大数据类型开始入手_AQin1012的博客-CSDN博客关于Redis的数据类型&#xff0c;各个文章总有些小不同&#xff0c;我们这里讨论的是Redis 7.0&#xff0c;为确保准确&#xf…

Linux基础(三)端口、进程及主机状态管理、环境变量、文件管理

目录 端口 nmap netstat 进程管理 查看进程 关闭进程 主机状态监控 系统资源top命令 磁盘信息监控 网络状态监控 环境变量 $符号 自己设置环境变量 自定义环境变量PATH Linux的文件和下载 压缩和解压 tar命令 zip和unzip命令 端口 每个电脑有一个ip地址&#xff…

Vue项目实现在线预览pdf,并且可以批量打印pdf

最近遇到一个需求,就是要在页面上呈现pdf内容,并且还能用打印机批量打印pdf,最终效果如下: 当用户在列表页面,勾选中两条数据后,点击“打印表单”按钮之后,会跳到如下的预览页面: 预览页面顶部有个吸顶的效果,然后下方就展示出了2个pdf文件对应的内容,我们接着点击“…

echarts 地图点击常见问题

echats 散点图不支持缩放 echarts 地图点击激活label如何去除 高德loca 1.4版本热力图报错 绘制的颜色区间是 0 --1 高德地图销毁不生效 自己傻逼&#xff0c;每次没有清空数组导致叠加数据&#xff0c;约点数据越多。 为何用高德地图district.search查询不到别的省数据&…

[微信小程序] movable-view 可移动视图容器 - 范围问题

movable-view 可移动视图容器 可移动视图容器&#xff0c;在页面中可以拖拽滑动。movable-view必须在 movable-area 组件中&#xff0c;并且必须是直接子节点 <view><movable-area style"width: 750rpx;height: 200rpx;background-color: gainsboro;">&l…

Java的数据结构-Map集合

文章目录 Map概述Map常用方法Map遍历元素的方法1.方法一&#xff1a;keySet()2.方法二&#xff1a;entrySet() HashMap Map概述 1、Map和collection没有继承关系2、Map集合以key和value的方式存储数据&#xff1a;键值对key和value都是引用数据类型。key和value都是存储对象的…

(栈队列堆) 剑指 Offer 31. 栈的压入、弹出序列 ——【Leetcode每日一题】

❓ 剑指 Offer 31. 栈的压入、弹出序列 难度&#xff1a;中等 输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如&#xff0c;序列 {1,2,3,4,5} 是某栈的压栈序列&#xff0c;序…

Appium Android ——利用 TestNG 并行执行用例

目录 前言&#xff1a; 一、测试类 二、连接两个 Android 设备或启动两个虚拟机 三、项目路径下新建两个 testng.xml 四、开启两个 appium server 五、导出依赖 六、执行测试 七、查看报告 前言&#xff1a; Appium是一个流行的移动应用自动化测试工具&#xff0c;…

使用semanage管理SELinux安全策略

semanage命令用于管理SELinux的策略&#xff0c;格式为“semanage [选项] [文件]”。 SELinux服务极大地提升了Linux系统的安全性&#xff0c;将用户权限牢牢地锁在笼子里。semanage命令可以设置文件、目录的策略&#xff0c;还可以管理网络端口、消息接口。 常用参数&#xf…

vue3+vite配置 unplugin-vue-component 找不到 Vant 组件的问题

使用 vue3 vite Vant 搭建移动端项目&#xff0c;为了避免全量引入 vant 导致打包体积过大&#xff0c;又不想一个一个组件手动导入&#xff0c;所以就选择了 vant 官方推荐的方法&#xff0c;使用 unplugin-vue-components 插件自动引入组件&#xff0c;并按需引入组件的样式…

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)

1.二次开发环境搭建 下载osgeo4w-setup.exeDownload QGIShttps://www.qgis.org/en/site/forusers/download.html 点击OSGeo4W Network Installer 点击下载 OSGeo4W Installer 运行程序 osgeo4w-setup.exe&#xff0c;出现以下界面&#xff0c;点击下一页。 选中install from i…