数据库sql基础知识(数据库基础知识)

本文目录
数据库基础知识
数据管理经历了人工管理、文件系统、数据库系统三个阶段。本文将介绍数据库保护、SQL语言、关系规范化理论等基础知识。
:locked:数据库保护问题
数据库保护问题包括:安全性、完整性、故障恢复和并发控制等多方面。
:file_cabinet:SQL语言
SQL是关系数据库语言(或结构化查询语言)。
:memo:关系规范化理论
关系规范化理论是设计逻辑结构的指南和工具。
:magnifying_glass_tilted_left:关系代数
关系代数中专门的关系运算包括:选择、投影、连接和除运算。
:bar_chart:关系模式的定义
关系模式的定义主要包括关系名、关系的属性名、属性的域、属性向域的映象、属性间的依赖关系。
:input_numbers:关系数据库中的运算
关系数据库中基于数学上的两类运算是关系代数和关系演算。
:chart_increasing:E-R图转换成关系模型
数据库的逻辑模型设计阶段,任务是将E-R图(或概念模型)转换成关系模型。
:locked:数据的保护
数据库保护包括数据的泄露、更改、破坏。
:magnifying_glass_tilted_left:数据的完整性
数据的完整性是实体完整性、参照完整性、用户定义完整性。
:memo:SQL语言的功能
SQL语言提供数据库定义、数据操纵、数据控制等功能。
:eyes:视图
视图是一个虚表,它是从基本表中导出的表。在数据库中只存放那个使用的命令,不存放视图的数据。
数据库基础篇(二)—— SQL之数据查询
接下来,我们将使用员工相关的四张样本数据表,来学习SQL,建议你在学习过程中多动手练习,理解才会更深刻。表和字段含义,如下图:
如何利用SQL语句来操作以上数据呢?我们必须将样本数据导入MySQL客户端(如:Navicat)中。可以在客户端操作数据,或者在终端窗口。工作中经常在客户端操作,所以本文所有SQL语句将在Navicat中学习。
首先将sql脚本保存到桌面(获取方式:关注"Python之每日一课"公众号,后来回复"sql基础数据",即可。),导入SQL脚本的具体操作流程如下:
现在数据准备完成。这里是导入sql脚本;导出同理,选择”转储SQL“文件。当然了,Navicat也支持将当前表或查询结果导出Excel、CSV等文件类型。
下面可以写SQL语句了(每个sql脚本可以保存,下次直接使用),如下:
类似于Python中 :print(要打印的东西)
①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
② 要查询的东西 可以是常量值、表达式、字段、也可以是函数
补充:可以给字段起别名,好处是提高可读性,更方便理解;多表连接时,区分字段。用AS 或 空格来实现。如下:
2、 条件查询
条件查询:根据条件过滤原始表的数据,查询到想要的数据
1)语法
2)分类
①条件表达式
②逻辑表达式
③模糊查询
:star: 注意:where 一定要放到 from 后面。NULL 不是假,也不是真,而是"空";任何运算符,判断符碰到NULL,都得NULL;NULL的判断只能用is null,is not null;NULL 影响查询速度,一般避免使值为NULL。exists查询可以与in型子查询互换,它们之间区别以后语句优化时会详细讲解。
3、 排序查询
1)语法
2)举栗
:star: 注意:order by 一定要放到 语句最后(limit前面)
4、分组查询
1)语法
2)特点
①可以按单个字段分组
②和分组函数一同查询的字段最好是分组后的字段
③分组筛选(where 和 having区别)
④可以按多个字段分组,字段之间用逗号隔开
⑤可以支持排序
⑥having后可以支持别名
3)举栗
:star: 注意:关键字顺序是where —》group by—》having—》order by—》limit( having不能单独使用,需结合group by ,表示对分组后的结果进行筛选;而 group by 必须结合分组聚合函数一起使用 ,比如:count()、max()等)
5、 常见函数
1)单行函数
2)分组函数
3)分组函数特点
①以上五个分组函数都忽略null值,除了count(*)
②sum和avg一般处理数值型,max、min、count可以处理任何数据类型
③都可以搭配distinct使用,用于统计去重后的结果
④count的参数可以支持:字段、*、常量值,一般放1
6、连接查询(多表查询)
单个表不能满足需求时,需要结合多张表,去除有关联的数据。这时就需要用连接查询,连接查询有三种,通常join使用的最多。
①等值连接的结果 = 多个表的交集
②多个表不分主次,没有顺序要求
③一般为表起别名,提高阅读性和性能
①语法
②好处
语句上,连接条件和筛选条件实现了分离,简洁。
:star: 注意:左右连接可互换 A left join B 等价于B right join A;内连接是左《/pre》
右连接的交集;mysql没有外连接。
自连接相当于等值连接,但是等值连接涉及多个表,而自连接仅仅是它自己。如下:在员工信息表里,查询员工名和直接上级的名。
7、子查询
一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询。在外面的查询语句,称为主查询或外查询。
①子查询都放在小括号内
②子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧
③子查询优先于主查询执行,主查询使用了子查询的执行结果
④子查询根据查询结果的行数不同分为以下两类:
2)举栗
8、分页查询 (可选)
实际web开发中,当显示的数据,一页显示不完时,需要分页提交sql请求。
2)特点
①起始条目索引默认从0开始
②limit子句放在查询语句的最后
③公式:select * from 表 limit (page-1)*sizePerPage,
3)举栗
9、union联合查询
union用于把涉及多个表的SELECT语句的结果组合到一个结果集合中。适用于查询条件较多,多个表之间没有连接关系的场景。《/pre》
2)特点
①多条查询语句的查询的列数必须是一致的
②多条查询语句的查询的列的类型几乎相同
③union 代表去重,union all 代表不去重
3)举栗
UNION 和 UNION ALL 运行结果的区别如下:
:star: 注意:在多个 SELECT 语句中,第一个 SELECT 语句中被使用的字段名称将被用于结果的字段名称。当使用 UNION 时,MySQL 会把结果集中重复的记录删掉,而使用 UNION ALL ,MySQL 会把所有的记录返回,且效率高于 UNION
好,今天学习到这里。工作中用的最多就是查询。如果能消化本文涉及到的所有内容,大概能解决80%的工作需求。本文更多的是原理介绍,例子不多,只有先知道是什么,才能知道怎么学。那么,接下来最重要的是要多练习实践。因为实际的业务场景要复杂很多,给大家推荐两个刷题的网站,力扣和牛客网,里面有大量的sql面试题。能进一步提高我们sql的水平。这篇文章主要是SQL的常用查询。明天继续学习SQL的DML增删改。一起加油!
sql数据库入门(SQL数据库入门基本概念与操作指南)
SQL数据库是一种关系型数据库,它使用SQL语言来管理和操作数据。SQL是StructuredQueryLanguage的缩写,是一种用于管理关系型数据库的标准语言。SQL数据库被广泛应用于企业、政府和个人领域,是一种非常流行的数据库类型。
SQL数据库的基本概念
表
SQL数据库中的数据都被组织成表,每个表由多个行和列组成。表中的每一行代表一个记录,每一列代表一个属性。例如,一个学生表可能包括学生的姓名、年龄、性别等属性。
主键
每个表都必须有一个主键,它是用来唯一标识表中的每一行的。主键可以是单个列或多个列的组合。例如,在学生表中,每个学生的学号可以作为主键。
外键
外键是指一个表中的列,它引用了另一个表中的主键列。通过外键,可以建立不同表之间的关联关系。例如,在学生表和课程表之间可以建立一个外键关系,以表示学生和课程之间的关联。
索引
索引是用来加速查询的一种数据结构。它可以提高查询效率,但会增加数据插入、更新和删除的时间。在SQL数据库中,可以为表中的列创建索引。
SQL数据库的操作指南
创建数据库
在SQL数据库中,可以使用CREATEDATABASE语句来创建一个新的数据库。例如,要创建一个名为mydatabase的数据库,可以使用以下语句:
```
CREATEDATABASEmydatabase;
```
创建表
在数据库中创建表,可以使用CREATETABLE语句。例如,要创建一个名为students的表,其中包括学生的姓名、年龄和性别属性,可以使用以下语句:
```
CREATETABLEstudents(
idINTPRIMARYKEY,
nameVARCHAR(50),
ageINT,
genderVARCHAR(10)
);
```
插入数据
要向表中插入数据,可以使用INSERTINTO语句。例如,要向students表中插入一条新的记录,可以使用以下语句:
```
INSERTINTOstudents(id,name,age,gender)
VALUES(1,’张三’,18,’男’);
```
查询数据
要从表中查询数据,可以使用SELECT语句。例如,要查询students表中所有学生的姓名和年龄,可以使用以下语句:
```
SELECTname,ageFROMstudents;
```
更新数据
要更新表中的数据,可以使用UPDATE语句。例如,要将students表中学号为1的学生的年龄更新为20岁,可以使用以下语句:
```
UPDATEstudentsSETage=20WHEREid=1;
```
删除数据
要从表中删除数据,可以使用DELETE语句。例如,要删除students表中学号为1的学生记录,可以使用以下语句:
```
DELETEFROMstudentsWHEREid=1;
```
数据库基础详解:存储过程、视图、游标、SQL语句优化以及索引
写在文章前:本系列文章用于博主自己归纳复习一些基础知识,同时也分享给可能需要的人,因为水平有限,肯定存在诸多不足以及技术性错误,请大佬们及时指正。
存储过程 是事先经过编译并存储在数据库中的一段SQL语句的集合。想要实现相应的功能时,只需要调用这个存储过程就行了(类似于函数,输入具有输出参数)。
优点 :
缺点 :
Delete用来删除表的全部或者部分数据,执行delete之后,用户需要提交之后才会执行,会触发表上的DELETE触发器(包含一个OLD的虚拟表,可以只读访问被删除的数据),DELETE之后表结构还在,删除很慢,一行一行地删,因为会记录日志,可以利用日志还原数据;
Truncate删除表中的所有数据,这个操作不能回滚,也不会触发这个表上的触发器。操作比DELETE快很多(直接把表drop掉,再创建一个新表,删除的数据不能找回)。如果表中有自增(AUTO_INCREMENT)列,则重置为1。
Drop命令从数据库中删除表,所有的数据行,索引和约束都会被删除。不能回滚,不会触发触发器。
触发器(TRIGGER)是由事件(比如INSERT/UPDATE/DELETE)来触发运行的操作(不能被直接调用,不能接收参数)。在数据库里以独立的对象存储,用于保证数据完整性(比如可以检验或转换数据)。
约束(Constraint)类型:
从数据库的基本表中通过查询选取出来的数据组成的虚拟表(数据库中只存放视图的定义,而不存放视图的数据)。可以对其进行增/删/改/查等操作。视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变)。
可以跟基本表一样,进行增删改查操作( 增删改操作有条件限制,一般视图只允许查询操作 ),对视图的增删改也会影响原表的数据。 它就像一个窗口,透过它可以看到数据库中自己感兴趣的数据并且操作它们。 好处:
用于定位在查询返回的结果集的特定行,以对特定行进行操作。使用游标可以方便地对结果集进行移动遍历,根据需要滚动或对浏览/修改任意行中的数据。主要用于交互式应用。它是一段私有的SQL工作区,也就是一段内存区域,用于暂时存放受SQL语句影响的数据,简单来说,就是将受影响的数据暂时放到了一个内存区域的虚表当中,这个虚表就是游标。
游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。即游标用来逐行读取结果集。游标充当指针的作用。尽管游标能遍历结果中的所有行,但他一次只指向一行。
游标的一个常见用途就是保存查询结果,以便以后使用。游标的结果集是由SELECT语句产生,如果处理过程需要重复使用一个记录集,那么创建一次游标而重复使用若干次,比重复查询数据库要快的多。通俗来说,游标就是能在sql的查询结果中,显示某一行(或某多行)数据,其查询的结果不是数据表,而是已经查询出来的结果集。
简单来说:游标就是在查询出的结果集中进行选择性操作的工具。
让缓存更高效。对于连接查询,如果其中一个表发生变化,那么整个查询缓存就无法使用。而分解后的多个查询,即使其中一个表发生变化,对其它表的查询缓存依然可以使用。分解成多个单表查询,这些单表查询的缓存结果更可能被其它查询使用到,从而减少冗余的查询。减少锁竞争。
索引是对数据库表中一列或多列的值进行排序的一种结构(说明是在列上建立的),使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。索引的一个主要目的就是加快检索表中数据,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。
当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作。第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
例如这样一个查询:select * from table1 where id=10000。如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止。有了索引之后(必须是在ID这一列上建立的索引),即可在索引中查找。由于索引是经过某种算法优化过的,因而查找次数要少的多。可见,索引是用来定位的。
从应用上分, 主键索引(聚集) , 唯一索引(聚集/非聚集) , 普通索引 , 组合索引 , 单列索引和全文索引

更多文章:
word表格上下分离了怎么办(word里面怎样把上下页面的两个表格接在一起)
2026年10月11日 07:40








