08SQL基础知识

news2024/12/24 20:33:41

SQL知识点

1、SQL语言分类

SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL

1. 数据查询语言DQL
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>

2 .数据操纵语言DML
数据操纵语言DML主要有三种形式:
\1) 插入:INSERT
\2) 更新:UPDATE
\3) 删除:DELETE

3. 数据定义语言DDL
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:CREATE TABLE / VIEW / INDEX / SYN / CLUSTER| 表 视图 索引 同义词 簇。DDL操作是隐性提交的!不能rollback

4. 数据控制语言DCL
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
\1) GRANT:授权。
\2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚—ROLLBACK回滚命令使数据库状态回到上次最后提交的状态。其格式为:SQL>ROLLBACK;
\3) COMMIT [WORK]:提交。在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。

2、COALESCE函数

COALESCE ( expression,value1,value2……)

COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。
COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。

如果expression不为空值则返回expression;否则判断value1是否是空值,

如果value1不为空值则返回value1;否则判断value2是否是空值,

如果value2不为空值则返回value2;

……

如果所有的表达式都为空值,则返回NULL

总结: coalesce函数,返回第一个非空值,如果都是空,返回空值

3、SQL注入

防止SQL注入,需要注意以下几个要点:

  • ​ 永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和**双"-"**进行转换等。
  • ​ 永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
  • ​ 永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
  • ​ 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
  • ​ 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
  • ​ sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。

4、数据库

  • 数据定义(SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。

  • 数据操纵(SQL DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。

  • 数据控制(DCL)包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。

  • 嵌入式SQL的使用规定(TCL)涉及到SQL语句嵌入在宿主语言程序中使用的规则。

5、数据库备份类型

1、完全备份
这可能是大多数人常用的方式,它可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但是呢,它也需要花费更多的时间和空间,所以,一般推荐一周做一次完全备份。
2、事务日志备份
事务日志是一个单独的文件,它记录数据库的改变,备份的时候只需要复制自上次备份以来对数据库所做的改变,所以只需要很少的时间。为了使数据库具有鲁棒性,推荐每小时甚至更频繁的备份事务日志。
3、差异备份
也叫增量备份。它是只备份数据库一部分的另一种方法,它不使用事务日志,相反,它使用整个数据库的一种新映象。它比最初的完全备份小,因为它只包含自上次完全备份以来所改变的数据库。它的优点是存储和恢复速度快。推荐每天做一次差异备份。
4、文件备份
数据库可以由硬盘上的许多文件构成。如果这个数据库非常大,并且一个晚上也不能将它备份完,那么可以使用文件备份每晚备份数据库的一部分。由于一般情况下数据库不会大到必须使用多个文件存储,所以这种备份不是很常用

6、@@

@@ERROR:返回执行的上一个 Transact-SQLTransact-SQL 语句的错误号。

@@IDENTITY:返回自增id。

@@ROWCOUNT:返回受上一个SQL语句影响的行数。

@@MAX_CONNECTIONS:返回最大用户连接数。

7、关于删除

  • delete 可以精确删除,只删除表的数据,不会删除结构。
  • truncate 能删除表的数据,也能删除表的结构
  • drop 完全删除表

1、处理效率:drop>trustcate>delete

2、drop删除整个表;trustcate删除全部记录,但不删除表;delete删除部分记录

3、delete不影响所用extent,高水线保持原位置不动;trustcate会将高水线复位。

  • TRUNCATE TABLE :删除内容、释放空间但不删除定义。

  • DELETE TABLE: 删除内容不删除定义,不释放空间。

  • DROP TABLE :删除内容和定义,释放空间。

8、事物读脏数据

隔离级别中,

读已授权解决脏读问题,在数据读取时添加共享锁,执行完语句后释放锁,数据写入时添加排它锁,事务提交后释放锁

可重复读解决不可重复读问题,在数据读取时添加共享锁,事务提交后释放锁,数据写入时添加排它锁,事务提交后释放锁

9、正则表达式

实例

在这里插入图片描述

10、stuff

stuff(原字符,开始位置,删除长度,插入字符)。从指定的起点处开始删除指定长度的字符,并在此处插入另一组字符。

实例

查询语句select stuff(‘lo ina’,3, 1, ‘ve ch’)结果为 love china

11、触发器

SQL server 三种常用的触发器

1.insert触发器

2.update触发器

3.delete触发器

12、MySQL查询语句的执行顺序

正确的执行顺序应该是

  • 先找到要查询表格或连接要查询的表格,因此FROM才是第一步;
  • 接下来是进行条件筛选,所以是WHERE紧随其后;
  • 然后如果遇到表格有分组的需要,则需要先GROUP BY
  • 分组时如果也存在筛选条件,这里就要用HAVING进行分组筛选;
  • 这些执行过后才是查询操作SELECT
  • SELECT的时候如果遇到重复数据,就需要去重,即使用DISTINCT;
  • 接下来如果要对查询后的数据进行排序,会用到ORDER BY
  • 最后如果要指定返回的查询数据范围、条数则要用LIMIT/OFFSET函数。

FROM(including JOINs) —> WHERE —> GROUP BY —> HAVING —> SELECT —> DISTINCT —> ORDER BY —> LIMIT/OFFSET

范围、条数则要用LIMIT/OFFSET函数。

FROM(including JOINs) —> WHERE —> GROUP BY —> HAVING —> SELECT —> DISTINCT —> ORDER BY —> LIMIT/OFFSET

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

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

相关文章

耗时122天,终于把牛客网点赞飙升的Java面试题(含答案)整理出来了

2023年就业形势不算好&#xff0c;大厂缩招裁员导致优质岗位竞争变得更加激烈&#xff0c;除了对面试者技术的要求变高&#xff0c;面试的深度和难度较去年也有所加大。为了让大家能够在 2023 金九银十跳槽黄金期脱颖而出&#xff0c;想拿个好 offer 说实话&#xff0c;现在准备…

企业上云,你做对了吗?

数字化转型是国家战略&#xff0c;各位估计眼睛看这几个字都看出茧了。所以&#xff0c;今天不聊数字化转型&#xff0c;今天聊企业上云。 随着云计算技术的日益成熟和云计算服务商的不断涌现&#xff0c;越来越多的企业将业务应用迁移到云端。但是&#xff0c;企业上云“坑”…

2023大唐杯学习笔记——人工智能与机器学习—决策树

决策树知识点 这个表也是一个数据集 问题&#xff1a;以什么作为划分呢&#xff1f;第一次是以年龄&#xff0c;还是以 工作 房子 信贷情况… 这里的熵与中文里的其他东西没有实际对应&#xff0c;就是一个定义H&#xff08;p&#xff09;1最大时&#xff0c;p0.5&#xff0c;这…

串口助手(串口发送接收数据, 定时, 清空, hex显示)

文章目录 前言一、串口接收数据1. 默认接收&#xff0c;换行&#xff0c;hex显示2. 清空接收区数据3. 保存接受区数据 二、串口发送数据1. 默认发送2. 定时发送 三、串口助手优化1. 设置组合框当前内容。2. 未检测到串口&#xff0c;弹出警告。3. 载入文件 总结 前言 这篇文章…

ESP32-S3 使用指定 key 来进行 secure boot 签名并进行 OTA 测试

文档说明 Secure Boot V2 测试准备&#xff1a; 硬件准备&#xff1a;ESP32-S3 开发板或模组软件准备&#xff1a;esp-idf v5.0 版本 SDK 测试步骤&#xff1a; 生成指定 secure boot 签名 key软件开启 secure boot 配置烧录被签名的固件对新的 app.bin 使用指定 key 进行…

【006 Linux内核】应用程序中open()在linux中执行过程中是如何从用户空间到内核空间?

一、前言 应用程序运行在用户空间&#xff0c;而 Linux 驱动运行于内核空间。当我们在用户空间想要实现对内核的操作&#xff0c;比如使用 open 函数打开/dev/led 这个驱动&#xff0c;由于用户空间不能直接对内核进行操作&#xff0c;因此必须使用一个叫做 “系统调用” 的方…

论文阅读 (90):Proposal-based Multiple Instance Learning (P-MIL, 2023CVPR)

文章目录 1 要点1.1 概述1.2 一些概念1.3 主要步骤 2 方法2.1 候选提案生成2.2 提案特征提取和分类2.2.1 周围对比特征提取2.2.2 分类头 2.3 提案微调2.3.1 提案完备性评估2.3.2 实例级秩一致性 2.4 网络训练和推理2.4.1 网络训练2.4.2推理 3 实验3.1 数据集即评估标准3.1.1 数…

一线大厂Java 面试题大全1100+ 面试题附答案详解(2023最新整理)

写在前面 今年的面试比往年要难得多&#xff0c;各个互联网企业对于 Java 岗位的要求越来越多&#xff0c;也越来越高&#xff0c;主要是初级岗位已经趋近饱和&#xff0c;但高级岗位又相对来说缺乏&#xff0c;这类的人才偏少&#xff0c;因此作为 Java 开发人员&#xff0c;…

【新星计划回顾】第四篇学习计划-自定义函数、存储过程、随机值知识点

&#x1f3c6;&#x1f3c6;时间过的真快&#xff0c;这是导师回顾新星计划学习的第四篇文章&#xff01; 最近这段时间非常忙&#xff0c;虽然导师首次参与新星计划活动已经在4月16日圆满结束&#xff0c;早想腾出时间来好好整理活动期间分享的知识点。 &#x1f3c6;&#x1…

【TiDB Future App Hackathon 2023 】TiDB 首届全球黑客马拉松,开发者的狂欢夏日盛会!快来一起 Coding 吧!...

作者&#xff1a; Billmay表妹 原文来源&#xff1a; https://tidb.net/blog/cf364859 2023 TiDB Future App Hackathon 来啦&#xff01;本届 Hackathon 的主题为&#xff1a;Code, Innovate & Build Amazing Data Applications —— 释放你的创造力、构建突破性的应用…

JS逆向之大众点评mtgsig

本教程仅限于学术探讨&#xff0c;也没有专门针对某个网站而编写&#xff0c;禁止用于非法用途、商业活动、恶意滥用技术等&#xff0c;否则后果自负。观看则同意此约定。如有侵权&#xff0c;请告知删除&#xff0c;谢谢&#xff01; 目录 前言 一、先分析下接口参数 二、开导…

不懂这个118358-80-8甘露糖丝氨酸?看看Fmoc-Ser(Ac4Manα)-OH的全面解析吧!

Fmoc-Ser(Ac4Manα)-OH&#xff0c;甘露糖丝氨酸Product structure&#xff1a; Product specifications&#xff1a; 1.CAS No&#xff1a;118358-80-8 2.Molecular formula&#xff1a;C32H35NO14 3.Molecular weight&#xff1a;657.63 4.Packaging specification&#xff1…

浅谈响应式网页设计 —— 测试该知道的二三事

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

【LeetCode】每日一题 -- 1240. 铺瓷砖 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/tiling-a-rectangle-with-the-fewest-squares/ 1. 题解&#xff08;1240. 铺瓷砖&#xff09; 23.05.31 华为机试第二题 1.1 暴力深搜 – DFS NP-Complete 问题 题解参考&#xff1a;Java DFS暴力递归&#xff08;详细注释&…

LeetCode 2352. Equal Row and Column Pairs【模拟,哈希表,前缀树】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

100G QSFP28光模块类型和使用场景

100G QSFP28光模块是当前数据中心和通信网络中广泛应用的高速光模块之一。本文将详细介绍100G QSFP28光模块的类型、应用场景以及市场发展前景&#xff0c;并引用相关产品参数和行业统计数据&#xff0c;为读者提供全面的了解。 一、100G QSFP28光模块类型 100G QSFP28光模块…

开源 API 网关的访问策略(一)

许多企业和组织面临着网关访问控制的挑战&#xff0c;因为传统的访问控制方法往往过于笨重和繁琐。这些方法可能涉及复杂的规则集、繁琐的手动配置过程、缺乏灵活性和可扩展性等问题。此外&#xff0c;随着云计算和移动设备的广泛应用&#xff0c;访问控制的复杂性和挑战程度也…

stable-diffusion-webui 安装采坑日记

这里写自定义目录标题 安装容易采坑的点效果测试 安装容易采坑的点 1、不愿安装大佬的整合包。在自己时间足够多的情况下&#xff0c;可以尝试自己搭环境。但是自己安装的时间成本真的非常高&#xff0c;环境配置报错会让人陷入崩溃&#xff0c;如果没有代码排错能力&#xff…

sw2urdf导出的urdf文件中的惯性参数(inertial)错误的问题

现象描述 有时候&#xff0c;当我们使用solidworks建好我们的模型&#xff0c;然后利用【sw2urdf】导出后&#xff0c;发现其中的惯性参数&#xff0c;似乎不正确&#xff0c;ixx、izz这些参数都是很接近0的&#xff1a; 资料查找 其实这个不是我们设置的问题&#xff0c;而…

蓝牙耳机什么牌子好?无线蓝牙耳机品牌推荐

相信很多人都有过这样的经历&#xff0c;早晚高峰像沙丁鱼般被挤在公交或地铁上&#xff0c;嘈杂的环境、工作的劳累让你只想听听音乐追追剧&#xff0c;给自己一些放松的时光。可拿出有线耳机却常常被挤掉&#xff0c;更有被扯到耳朵的时候。想换一款蓝牙耳机&#xff0c;但面…