SQL及数据库基础知识点总结

一. SQL(Structured Query Language):

结构化查询语言。SQL语法不区分关键字的大小写,多条SQL语句必须以;分隔。

二. SQL的作用:

SQL可以访问和处理数据库,包括数据的增删改查(插入,删除,更新,查询)、数据库的创建、表的创建存储过程、以及视图的创建、表的设置、权限等。

三. 常用的SQL语句和相关语法:

1. 增删改查:

(增insert into...values...,删delete from...where...,改update...set...where...,查select...from...where...)

(1)select语句:

从数据库中选取数据,结果存储在一个结果表中。如select * from table_name;select name,id from costoms;

扩充:select distinct语句,其中distinct关键字返回唯一不同的值。如select distinct c1,c2 from t;

(2)where子句:

提取满足指定条件的记录。如select xxx form t where xxxx=xx ...; 

注:SQL使用单引号来环绕文本值(大部分数据库也接受双引号)。

此外,where子句常用的运算符有:=, <>/!=(不等于), <, >, <=, >=, between ...and ..., like(搜索某种模式), in(指定针对某个列的多个可能值)。

(3)and/or:

基于一个以上的条件进行过滤。

(4)order by:

排序(默认为升序),降序使用dese关键字。

(5)insert into:

向表中插入新记录。如insert into web(name,url,country) values("百度",'https://www.baidu.com','CN');

(6)update语句:

更新表中的记录。如update web set country=‘USA’ where name=‘xxx’;

(7)delete语句:

删除表中的记录。如delete from web where name=‘Facebook’ and country=‘USA’;

扩充:提到delete语句,不得不说一下其他删除语句。

① truncate语句:truncate table 表名,用于清空表中的所有数据,但不会删除表结构

② delete语句:delete from 表名 where 条件,用于删除部分/所有数据,但不会删除表结构

③ drop语句:drop table 表名,会将整张表的行数据和表结构一起删除掉

三者的区别在于:

① 数据恢复方面:delete 可以恢复删除的数据,而 truncate 和 drop 不能恢复删除的数据。

② 执行速度方面:drop > truncate > delete。

③ 删除数据方面:drop 是删除整张表,包含行数据和字段、索引等数据,而 truncate 和 drop 只删除了行数据。

④ 添加条件方面:delete 可以使用 where 表达式添加查询条件,而 truncate 和 drop 不能添加 where 查询条件。

⑤ 重置自增列方面:在 InnoDB 引擎中,truncate 可以重置自增列,而 delete 不能重置自增列。

truncate和drop是DDL 语句,也就是 Data Definition Language 数据定义语言,它是用来维护存储数据的结构指令,所以这点也是和 delete 命令是不同的,delete 语句属于 DML,Data Manipulation Language 数据操纵语言,用来对数据进行操作的。其中,DDL不放到rollback segment中,不能回滚;而DML会放到rollback segment中,事务提交才生效。

(8)group by语句:

结合聚合函数,根据一个或多个列对结果集进行分组。

(9)having子句:

跟在group by后面,用于筛选分组后的各组数据。语句通常为select ... group by ... having...;

(10)exists运算符:

判断查询子句是否有记录,返回TRUE/FALSE。如select web.name, web.url from web where exists(select count form access_log where ...);

2. 高级语法:
(1)select top/limit/rownum子句:

top规定返回的记录数,并非所有数据库系统都支持,limit是MySQL支持,rownum是Oracle支持。

(2)like操作符:

用于在where子句中搜索列中的指定模式。如select * form web where name like ‘C%’;

(3)SQL通配符:

① %:代表0/多个字符。

② _:代表1个字符。

③ [charlist]:字符列中的任意单一字符。

④ [^charlist]/[!charlist]:不在字符列中的任意单一字符。

(4)in操作符:

允许在where子句中规定多个值。如select * from web where name in (‘Google’,‘百度’);

(5)between操作符:

选取介于两个值之间的数据范围的值。

(6)as:

别名,为表/列指定别名,也可以直接省略,用空格代替。如select custom_name name,new_date date from web w where ...;

(7)join连接:

把来自2个/多个表的行结合起来,分为left join,right join,inner join,outer join

如上图所示,inner join内连接需要两个表都存在满足条件才返回;left(outer)join返回左表中的所有行,right (outer)join同理;full (outer)join只要其中一个表存在满足条件的记录即可。self join将一个表连接到自身;cross join交叉连接。

注:对于相同属性名可以使用using代替on,如xx1 join xx2 using(cust_id);等价于xx1 join xx2 on xx1.cust_id = xx2.cust_id; 

(8) union操作符:

合并2个/多个select语句的结果,union内部的每个select语句必须拥有相同数量的列,且列拥有相似的数据结构,union结果集中的列名同union中第一个select语句中的列名。如select country from web union select country from apps order by country;

(9)select into语句:

从一个表复制数据,然后将数据插入到另一个新表中。如select * into web from websites;

(10)insert into...select...语句:

将数据插入到一个已存在的表中。如insert into web(name,country) select app_name,country from apps;

(11)create语句:

create table/database 表名/数据库名;

(12)SQL约束:

① NOT NULL ② UNIQUE ③ PRIMARY KEY ④ FOREIGN KEY ⑤ CHECK ⑥ DEFULT

注意:每个表可以有多个unique约束,但是只能有一个主键约束,并且主键列中不能包含NULL值。外键指向另一个表的unique key(唯一约束的键)。check约束用于限制列中值的范围。default约束向列中插入默认值。

(13)index语句:

创建索引,create(unique) index 索引名 on 表名(列名);删除索引,drop index 索引名 on 表名;

创建索引的作用:索引是用于快速查询和检索数据的数据结构,创建唯一性索引可以保证数据库中每一行数据的唯一性;但是会占用物理文件存储空间,并且增删改查时需要索引动态修改,会降低SQL执行效率。

(14)alter语句:

修改。

① 添加新列于指定位置:Alter table XXX[表名称] ADD 列名 列属性【varchar(8)】after 列名
② 唯一索引:Alter table XXX[表名称] ADD UNIQUE INDEX uniq_索引名称(列名)
③ 全文索引:Alter table XXX[表名称] ADD FULLTEXT INDEX full_索引名称(列名)
④ 普通索引 :Alter table XXX[表名称] ADD INDEX 索引名称(列名)

⑤ 删除列:Alter table XXX[表名称]  drop column 列名
⑥ 删除键/索引:Alter table XXX[表名称]  drop key/index

⑦ 添加表注释:Alter table XXX[表名称] comment '表注释';
⑧ 添加字段注释:Alter table XXX[表名称]  modify column column_name varchar(10) comment 'xx';

(15)auto increment字段:

设置表字段值自动增加(AUTO_INCREMENT)格式: create table tablename(字段名  数据类型  auto_increment ,... ... );

(16)view视图:

基于SQL语句的结果集的可视化的表。view是虚拟表,本身不含数据,不能对其进行索引操作。

(17)trigger触发器:

与表操作有关的数据库对象,表的操作事件出发表上的触发器的执行。

语法:create trigger trigger_name trigger_time trigger_event on table_name for each row(行级监听,MySQL的固定写法) begin trigger_statements end;

触发时机是before/after;触发器的监听事件是insert/update/delete。

① 查看触发器:show trigger;② 删除触发器:drop trigger if exists trigger_name;

四. SQL函数:

1. date数据类型:

① date格式:YYYY-MM-DD。

② datetime格式:日期和date格式相同,时间格式为HH:MM:SS。

③ timestamp格式:和datetime格式相同。

④ year格式:YYYY或者YY。

2. aggregate函数:

① AVG()② COUNT()③ FIRST()④ LAST()⑤ MAX()⑥ MIN()⑦ SUM()

3. scalar函数:

① UCASE()将某个字段转换为大写。

② LCASE()将某个字段转换为小写。

③ MID()从文本字段提取字符。

④ LEN()返回长度。

⑤ ROUND()指定小数位数的四舍五入。

⑥ NOW()⑦ FORMATE()

五. 数据库:

1. 基本概念:

码:属性列。

元组:行。

候选码:能唯一标识一个元组,而其子集不可。候选码可能有多个。

主码:唯一,也叫主键,不可为空。

外码:也叫外键,可以为空。

主属性:候选码中的属性;非主属性:不包含在任何候选码中的属性。

2. ER图(实体联系图):

实体,属性,联系(1对1,1对多,多对多)。

3. 数据库范式:

1NF:第一范式,属性不可分,所有关系型数据库的的最基本要求

2NF:第二范式,1NF基础上,消除了非主属性对码的部分函数依赖

3NF:第三范式,2NF基础上,消除了非主属性对码的传递函数依赖

4. 存储过程:

SQL语句的集合,中间加了逻辑控制语句。

优点:比单纯SQL语句执行快,由于存储过程是预编译过的。

缺点:难以调试和扩展,没有移植性,还会小号数据库资源。

5. 数据库设计的步骤:

① 需求分析:分析用户的需求,包括数据、功能以及性能需求。

② 概念结构设计:E-R模型。

③ 逻辑结构设计:将E-R图转换为表,实现E-R模型到关系模型的转变。

④ 物理结构设计:数据库所需的存储结构和存取路径。

⑤ 数据库实施:编程,测试和试运行。

⑥ 数据库的运行和维护:系统的运行与数据库的日常维护。

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

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

相关文章

SpringCloud-Config

一、介绍 &#xff08;1&#xff09;服务注册中心 &#xff08;2&#xff09;管理各个服务上的application.yml&#xff0c;支持动态修改&#xff0c;但不会影响客户端配置 &#xff08;3&#xff09;一般将application.yml文件放在git上&#xff0c;客户端通过http/https方式…

Maika 与越南童模们受邀请参加中国上海时装周 hanakimi 品牌开幕

金风送爽&#xff0c;秋高气和。2024中国上海时装周以“活力互链”为主题&#xff0c;于10月8日正式启幕。 魅力四射的越南童模身着著名时尚品牌MLB、Hana Kami、Jacadi的精美设计&#xff0c;迈着有力、专业但又不失优雅的步伐走上时尚舞台上海大型现场。无论是拍摄造型照还是…

windows TBB的使用

windows TBB的使用 1. Install with GUI 1. Install with GUI To install oneTBB using GUI, complete the following steps: Go to the Download page.Select the preferred installer Online installer has a smaller file size but requires a permanent Internet connec…

MFF论文笔记

论文名称&#xff1a;Improving Pixel-based MIM by Reducing Wasted Modeling Capability_发表时间&#xff1a;ICCV2023 作者及组织&#xff1a;上海人工智能实验室&#xff0c;西门菲沙大学&#xff0c;香港中文大学 问题与贡献 MIM(Model Maksed Model)方法可以分为两部分…

C语言-贪吃蛇 1.输入控制ncurse

一、为什么要用nurse C语言中的gets()、scanf()、getchar()等函数是在用户输入后需要按下Enter键才能执行代码&#xff0c;而贪吃蛇要求按下按键后立即对蛇的方向进行操作&#xff0c;所以根据贪吃蛇功能的需求引入ncurse&#xff0c;让用户输入后就能让蛇进行对应的行动。 二、…

Spring Boot中的异步编程:解决的问题与应用场景

Spring Boot中的异步编程&#xff1a;解决的问题与应用场景 在现代Web应用程序中&#xff0c;高并发和性能是至关重要的。为了处理大量的请求和任务&#xff0c;异步编程成为了不可或缺的一部分。Spring Boot提供了强大的异步编程支持&#xff0c;可以显著提高应用程序的吞吐量…

Spring MVC 和Spring JDBC

目录 Spring MVC MVC模式 核心组件 工作流程 Spring JDBC Spring JDBC功能和优势 Spring JDBC的关键组件 Spring MVC Spring MVC&#xff08;Model-View-Controller&#xff09;是Spring框架的一个模块&#xff0c;用于构建Web应用程序。它的主要目标是将Web应用程序的不…

比较和同步数据库架构和数据:MssqlMerge Pro Crack

比较和同步数据库架构和数据 适用于Oracle、MySQL 和 MariaDB、SQL Server、PostgreSQL、SQLite、MS Access和跨 DBMS 场景 业界领先的文本比较工具中常用的两面板 UI 快速过滤器显示所有/新/更改/新更改 合并两个方向的更改 轻量级&#xff1a;跨 DBMS 工具小于 20 MB&#xf…

【大数据Hive】hive select 语法使用详解

目录 一、前言 二、Hive select 完整语法树 三、Hive select 操作演示 3.1 数据准备 3.1.1 创建一张表 3.1.2 将数据load加载到t_usa_covid19表 3.1.3 再创建一张分区表 3.1.4 使用动态分区插入数据 3.2 select 常用语法 3.2.1 查询所有字段或者指定字段 3.2.2 查询…

计算机视觉:池化层的作用是什么?

本文重点 在深度学习中,卷积神经网络(CNN)是一种非常强大的模型,广泛应用于图像识别、目标检测、自然语言处理等领域。而池化层作为CNN中的一个关键步骤,扮演着优化神经网络、提升深度学习性能的重要角色。本文将深入探讨池化层的作用及其重要性,帮助读者更好地理解和应…

如何使用JMeter测试导入接口/导出接口

今天一上班&#xff0c;被开发问了一个问题&#xff1a;JMeter调试接口&#xff0c;文件导入接口怎么老是不通&#xff1f;还有导出文件接口&#xff0c;不知道文件导到哪里去了&#xff1f; 我一听&#xff0c;这不是JMeter做接口测试经常遇到的嘛&#xff0c;但是一时半会又…

nodejs+vue考研信息查询系统-计算机毕业设计

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

MSVC编译dcmtk库

官网 https://www.dcmtk.org/en/dcmtk/ 下载源码和支持包 支持包在support文件夹下,选择适合你的MSVC版本 到官网下载cmake,官网cmake.org 解压源码 支持库 打开cmake-gui,填写源码目录(dcmtk解压的源码目录)和编译目录(自定义的目录) 点下面的configure,弹出选…

腾讯云我的世界mc服务器配置怎么选择?

使用腾讯云服务器开Minecraft我的世界服务器配置怎么选择&#xff1f;10人以内玩2核4G就够用了&#xff0c;开我的世界服务器选择轻量应用服务器就够了&#xff0c;腾讯云轻量CPU采用至强白金处理器&#xff0c;大型整合包一般1.12版本的&#xff0c;轻量2核4G配置都差不多的&a…

Lua调用C#类

先创建一个Main脚本作为主入口&#xff0c;挂载到摄像机上 public class Main : MonoBehaviour {// Start is called before the first frame updatevoid Start(){LuaMgr.GetInstance().Init();LuaMgr.GetInstance().DoLuaFile("Main");}// Update is called once p…

JAVA中的垃圾回收

JVM规范说了并不需要必须回收方法区&#xff0c;不具有普遍性&#xff0c;永久代使用的是JVM之外的内存 引用计数:效率要比可达性分析要强&#xff0c;随时发现&#xff0c;随时回收&#xff0c;实现简单&#xff0c;但是可能存在内存泄漏 局部变量表&#xff0c;静态引用变量&…

Apache Dubbo 首个 Node.js 3.0-alpha 版本正式发布

作者&#xff1a;蔡建怿 关于Apache Dubbo3 Apache Dubbo 是一款易用、高性能的 WEB 和 RPC 框架&#xff0c;同时为构建企业级微服务提供服务发现、流量治理、可观测、认证鉴权等能力、工具与最佳实践。经过近几年发展&#xff0c;Dubbo3 已在阿里巴巴集团各条业务线实现全面…

登录中获取验证码的节流

一. 验证码框 <el-input placeholder"请输入验证码" prefix-icon"el-icon-lock" v-model"ruleForm.code"><el-button slot"suffix" :disabled"disabled" type"text" size"mini" click"ch…

JavaFX: 使用本地openjfx包

JavaFX: 使用本地openjfx包 1、注释配置2、下载openjfx包3、导入openjfx的jar包 1、注释配置 build.gradle配置注释&#xff1a; 2、下载openjfx包 下载javaFx地址&#xff1a;https://gluonhq.com/products/javafx/ 3、导入openjfx的jar包

求三维坐标绕坐标轴旋转后的坐标值

目的 旋转矩阵 应用 沿单个坐标轴旋转 沿多个坐标系旋转 目的 由于其他文章原理介绍比较详细&#xff0c;但应用方面较少。本文直接介绍旋转矩阵的应用&#xff0c;条件为坐标系不变&#xff0c;求旋转后的三维坐标。本文方法较傻瓜式&#xff0c;需要自己进行测试以确认是…