0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SQL数据库的基础知识详细说明

Wildesbeast 来源:今日头条 作者:渝木木 2020-02-04 14:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

如果说前端应用为网络世界搭建起了一座座房子,那么数据库数据就是住进这些房子的人。

网络世界(或者编程者的世界)与人类世界是相反的。编程世界的技术核心与真相,是在底层的。个人认为,无论是用怎样的架构部署,用怎样的语言编码或者方式展示,web应用和手机应用的底层,就是数据库里面的数据。在这些数据下面,有更底层的东西,值得我们去学习、去探索、去挖掘。或许哪天一不小心,我们就能挖到这个世界的真相。

思维导图:

1- 思维导图

1、数据库的定义

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。

1、 数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。

2、 数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。

2、数据库管理系统

数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它可以支持多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。

3、数据库类型

3.1、关系型数据库

关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。 常见的关系型数据库有Mysql,SqlServer等。

虽然关系型数据库有很多,但是大多数都遵循SQL(结构化查询语言,Structured Query Language)标准。 常见的操作有查询,新增,更新,删除,求和,排序等

3.2 非关系型数据库(NoSQL)

NoSql数据库如MongoDB、Redis、Memcache出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。

非关系型数据库的分类:

(1)键值对存储(key-value):代表软件Redis,它的优点能够进行数据的快速查询,而缺点是需要存储数据之间的关系。

(2)列存储:代表软件Hbase,它的优点是对数据能快速查询,数据存储的扩展性强。而缺点是数据库的功能有局限性。

(3)文档数据库存储:代表软件MongoDB,它的优点是对数据结构要求不特别的严格。而缺点是查询性的性能不好,同时缺少一种统一查询语言。

(4)图形数据库存储:代表软件InfoGrid,它的优点可以方便的利用图结构相关算法进行计算。而缺点是要想得到结果必须进行整个图的计算,而且遇到不适合的数据模型时,图形数据库很难使用。

3.3 NoSQL 与关系型数据库的区别

首先一般非关系型数据库是基于CAP模型,而传统的关系型数据库是基于ACID模型的。

其次在 数据存储结构、可扩展性、数据一致性上,两者有一定的区别。

CAP定理:在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点:

一致性(Consistency)(所有节点在同一时间具有相同的数据)

可用性(Availability)(保证每个请求不管成功或者失败都有响应)

分隔容忍(Partition tolerance)(系统中任意信息的丢失或失败不会影响系统的继续运作)

ACID模型:ACID,是指数据库管理系统(DBMS)在写入/异动资料的过程中,为保证交易(transaction)是正确可靠的,所必须具备的四个特性:

原子性(Atomicity,或称不可分割性)、

一致性(Consistency)

隔离性(Isolation,又称独立性)

持久性(Durability)。

4、分布式数据库

所谓的分布式数据库技术,就是结合了数据库技术与分布式技术的一种结合。具体指的是把那些在地理意义上分散开的各个数据库节点,但在计算机系统逻辑上又是属于同一个系统的数据结合起来的一种数据库技术。

5、SQL定义与语法

5.1 什么是SQL

SQL 是用于访问和处理数据库的标准的计算机语言

SQL 指结构化查询语言

SQL 使我们有能力访问数据库

SQL 是一种 ANSI 的标准计算机语言

5.2 语法

SQL 对大小写不敏感。

SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

DML部分:

SELECT - 从数据库表中获取数据

UPDATE - 更新数据库表中的数据

DELETE - 从数据库表中删除数据

INSERT INTO - 向数据库表中插入数据

DDL部分:

CREATE DATABASE - 创建新数据库

ALTER DATABASE - 修改数据库

CREATE TABLE - 创建新表

ALTER TABLE - 变更(改变)数据库表

DROP TABLE - 删除表

CREATE INDEX - 创建索引(搜索键)

DROP INDEX - 删除索引

6、SQL基本语句

6.1、SELECT语句

SELECT 列名称 FROM 表名称 ;SELECT * FROM 表名称。

SELECT 语句用于从表中选取数据。

结果被存储在一个结果表中(称为结果集)。

星号(*)是选取所有列的快捷方式。

6.2、distinct语句

关键词 DISTINCT 用于返回唯一不同的值。

SELECT DISTINCT 列名称 FROM 表名称

6.3、where语句

WHERE 子句用于规定选择的标准

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值;

运算符:= <> > < >= <= BETWEEN LIKE AND OR

6.4、AND & OR语句

AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

6.5、Order By语句

ORDER BY 语句用于根据指定的列对结果集进行排序。

ORDER BY 语句默认按照升序(AES) 对记录进行排序。

如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

6.6、insert 语句

INSERT INTO 语句用于向表格中插入新的行;

INSERT INTO 表名称 VALUES (值1, 值2,....)

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

6.7、update 语句

Update 语句用于修改表中的数据。

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

6.7、delete语句

DELETE 语句用于删除表中的行。

DELETE FROM 表名称 WHERE 列名称 = 值

6.8、Top子句

TOP 子句用于规定要返回的记录的数目。

注释:并非所有的数据库系统都支持 TOP 子句。

SQL Server 中:

SELECT TOP number|percent column_name(s) FROM table_name

MySql中:

SELECT column_name(s) FROM table_name LIMIT number

Oracle中:

SELECT column_name(s) FROM table_name WHERE ROWNUM <= number

6.9、通配符

在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE 运算符一起使用。

% 替代一个或多个字符

_ 仅替代一个字符

[charlist] 字符列中的任何单一字符

[^charlist] 或者 [!charlist] 不在字符列中的任何单一字符

6.10、IN操作符

IN 操作符允许我们在 WHERE 子句中规定多个值。

SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)

6.11、Aliases别名

通过使用 SQL,可以为列名称和表名称指定别名(Alias)。

SELECT column_name AS alias_name FROM table_name

7、SQL基本数据库操作

7.1、JOIN表连接

SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

JOIN: 如果表中有至少一个匹配,则返回行

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

FULL JOIN: 只要其中一个表中存在匹配,就返回行

关键字语法:

SELECT column_name(s)

FROM table_name1

JOIN(或者INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN) table_name2

ON table_name1.column_name=table_name2.column_name

7.2、UNION合并

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

注意:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

关键字语法:

SELECT column_name(s) FROM table_name1

UNION

SELECT column_name(s) FROM table_name2

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

7.3、表备份

SQL SELECT INTO 语句可用于创建表的备份复件。

SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。

SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

语法:

SELECT * (或者指定列column_name(s))

INTO new_table_name [IN externaldatabase]

FROM old_tablename

注意:可以添加where子句,或者join连接等。

7.4、创建数据库

CREATE DATABASE 用于创建数据库。

语法:CREATE DATABASE database_name

7.5、创建数据库表

CREATE TABLE 语句用于创建数据库中的表。

语法:

CREATE TABLE 表名称

(

列名称1 数据类型,

列名称2 数据类型,

列名称3 数据类型,

....

)

7.6、创建索引

CREATE INDEX 语句用于在表中创建索引。

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

创建简单索引的语法(允许使用重复的值):

CREATE INDEX index_name ON table_name (column_name);

在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。

CREATE UNIQUE INDEX index_name ON table_name (column_name);

7.7、DROP语句

通过使用 DROP 语句,可以轻松地删除索引、表和数据库。

DROP INDEX index_name 删除索引,但是不同的数据库有不同的用法:

例如MySQL:ALTER TABLE table_name DROP INDEX index_name

SQL Server:DROP INDEX table_name.index_name

DROP TABLE 表名称 :删除表

DROP DATABASE 数据库名称 :删除数据库

TRUNCATE TABLE 表名称 :除去表内的数据,但并不删除表本身

7.8 ALTER 语句

ALTER TABLE 语句用于在已有的表中添加、修改或删除列。

例如:

ALTER TABLE table_name ADD column_name datatype

8、数据类型

8.1、常用的数据类型:

8-常用的数据类型图

8.2、Microsoft Access、MySQL 以及 SQL Server 所使用的数据类型和范围。

请参考W3school:SQL数据类型

9、约束(Constraints)

约束用于限制加入表的数据的类型。

可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。

主要约束:

NOT NULL 非空

NOT NULL 约束强制列不接受 NULL 值。

NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

UNIQUE 唯一标识

UNIQUE 约束唯一标识数据库表中的每条记录。

UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

PRIMARY KEY 主键

PRIMARY KEY 约束唯一标识数据库表中的每条记录。

主键必须包含唯一的值。

主键列不能包含 NULL 值。

每个表都应该有一个主键,并且每个表只能有一个主键。

AUTO INCREMENT 字段

我们通常希望在每次插入新记录时,自动地创建主键字段的值。

我们可以在表中创建一个 auto-increment 字段。

FOREIGN KEY 外键

一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

CHECK 限制值的范围

DEFAULT 默认值

10、视图View

10.1、什么是视图

在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。

视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。

注释:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。

10.2、语法

创建视图

CREATE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。

更新视图

CREATE OR REPLACE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

删除视图

DROP VIEW view_name

10.3、视图的作用

视图仅支持查询,不支持增删改等数据操作。您可以将视图当作是一种临时表。

视图的作用:

1、 提高了sql代码的复用性。

当一个查询你需要频频的作为子查询使用时,视图可以简化代码,直接调用而不是每次都去重复写这个东西。

2、 提高了数据的安全性。

系统的数据库管理员,需要给他人提供一张表的某两列数据,而不希望他可以看到其他任何数据,这时可以建一个只有这两列数据的视图,然后把视图公布给他。

11、索引

索引是一种特殊的查询表,可以被数据库搜索引擎用来加速数据的检索。简单说来,索引就是指向表中数据的指针。数据库的索引同书籍后面的索引非常相像。

尽管创建索引的目的是提升数据库的性能,但是还是有一些情况应当避免使用索引。下面几条指导原则给出了何时应当重新考虑是否使用索引:

1、小的数据表不应当使用索引;

2、需要频繁进行大批量的更新或者插入操作的表;

3、如果列中包含大数或者 NULL 值,不宜创建索引;

4、频繁操作的列不宜创建索引。

SQL中的索引分为两种,一种为聚集索引和非聚集索引。

12、函数

常用的函数:

AVG () : 返回数值列的平均值。NULL 值不包括在计算中

COUNT() : 返回匹配指定条件的行数

MAX() : 返回一列中的最大值。NULL 值不包括在计算中

MIN() : 返回一列中的最小值。NULL 值不包括在计算中

SUM() : 返回数值列的总数(总额)

不常用:

FIRST() : 返回指定的字段中第一个记录的值

LAST() : 返回指定的字段中最后一个记录的值。

UCASE() : 把字段的值转换为大写

LCAS() : 把字段的值转换为小写

MID() : 用于从文本字段中提取字符

LEN() : 返回文本字段中值的长度

ROUND() : 用于把数值字段舍入为指定的小数位数

NOW() : 返回当前的日期和时间

FORMA() : 用于对字段的显示进行格式化

REPLACE() : 字符串替换函数

CONCAT():将两个字符串连接为一个字符串

GROUP BY 语句:

合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。

语法:

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name

HAVING 语句:

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

语法:

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name

HAVING aggregate_function(column_name) operator value

例如:

SELECT Customer,SUM(OrderPrice) FROM Orders

GROUP BY Customer

HAVING SUM(OrderPrice)<2000

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SQL
    SQL
    +关注

    关注

    1

    文章

    789

    浏览量

    46370
  • 数据库
    +关注

    关注

    7

    文章

    3993

    浏览量

    67736
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    不用编程不用联网,实现倍福(BECKHOFF)PLC对接SQL数据库,上报和查询数据的案例

    ​IGT-DSER智能网关模块,支持各种PLC、智能仪表、远程IO与数据库之间双向通讯,既可以读取设备的数据上报到SQL数据库,也可以从数据库
    发表于 10-10 11:14

    数据库慢查询分析与SQL优化实战技巧

    今天,我将分享我在处理数千次数据库性能问题中积累的实战经验,帮助你系统掌握慢查询分析与SQL优化的核心技巧。无论你是刚入门的运维新手,还是有一定经验的工程师,这篇文章都将为你提供实用的解决方案。
    的头像 发表于 09-08 09:34 619次阅读

    数据库性能优化指南

    作为一名在大厂摸爬滚打多年的运维老兵,我见过太多因为数据库性能问题导致的生产事故。今天分享一套完整的数据库优化方法论,从SQL层面到硬件配置,帮你彻底解决性能瓶颈!
    的头像 发表于 08-18 11:21 515次阅读

    数据库数据恢复—SQL Server数据库被加密如何恢复数据

    SQL Server数据库故障: SQL Server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。
    的头像 发表于 06-25 13:54 508次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—<b class='flag-5'>SQL</b> Server<b class='flag-5'>数据库</b>被加密如何恢复<b class='flag-5'>数据</b>?

    达梦数据库常用管理SQL命令详解

    达梦数据库常用管理SQL命令详解
    的头像 发表于 06-17 15:12 6574次阅读
    达梦<b class='flag-5'>数据库</b>常用管理<b class='flag-5'>SQL</b>命令详解

    大促数据库压力激增,如何一眼定位 SQL 执行来源?

    你是否曾经遇到过这样的情况:在大促活动期间,用户访问量骤增,数据库的压力陡然加大,导致响应变慢甚至服务中断?更让人头疼的是,当你试图快速定位问题所在时,却发现难以确定究竟是哪个业务逻辑中的 SQL
    的头像 发表于 06-10 11:32 411次阅读
    大促<b class='flag-5'>数据库</b>压力激增,如何一眼定位 <b class='flag-5'>SQL</b> 执行来源?

    SQLSERVER数据库是什么

    SQL Server 是由微软公司开发的一款 关系型数据库管理系统(RDBMS) ,用于存储、管理和检索结构化数据。它是企业级应用中广泛使用的数据库解决方案之一,尤其适用于Window
    的头像 发表于 05-26 09:19 990次阅读

    MySQL数据库是什么

    开发、企业应用和大数据场景。以下是其核心特性和应用场景的详细说明: 核心特性 关系型数据库模型 数据以 表(Table) 形式组织,表由行(记录)和列(字段)构成。 通过 主键、外键
    的头像 发表于 05-23 09:18 917次阅读

    不用编程不用联网,PLC和仪表直接对SQL数据库,有异常时还可先将数据缓存

    不用PLC编程也不用联网,还不用电脑,采用IGT-DSER智能网关实现PLC和仪表直接对SQL数据库。 跟服务端通讯有异常时还可以先将数据暂存,待故障解除后自动重新上报到数据库;也可
    发表于 04-12 10:47

    数据库数据恢复—SQL Server附加数据库提示“错误 823”的数据恢复案例

    SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果
    的头像 发表于 02-28 11:38 823次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—<b class='flag-5'>SQL</b> Server附加<b class='flag-5'>数据库</b>提示“错误 823”的<b class='flag-5'>数据</b>恢复案例

    Devart: dbForge Compare Bundle for SQL Server—比较SQL数据库最简单、最准确的方法

      dbForge Compare Bundle For SQL Server:包含两个工具,可帮助您节省用于手动数据库比较的 70% 的时间 dbForge数据比较 帮助检测和分析实时SQL
    的头像 发表于 01-17 11:35 865次阅读

    分布式云化数据库有哪些类型

    分布式云化数据库有哪些类型?分布式云化数据库主要类型包括:关系型分布式数据库、非关系型分布式数据库、新SQL分布式
    的头像 发表于 01-15 09:43 871次阅读

    Oracle数据库的多功能集成开发环境

    Oracle数据库的多功能集成开发环境 快捷菜单中的可视化对象编辑器 上下文感知的SQL代码补全、智能格式化和重构 逐步执行的自动调试功能 多功能数据检索、存储和管理 数据库模式和表
    的头像 发表于 01-14 13:52 694次阅读
    Oracle<b class='flag-5'>数据库</b>的多功能集成开发环境

    数据库是哪种数据库类型?

    数据库是一种部署在虚拟计算环境中的数据库,它融合了云计算的弹性和可扩展性,为用户提供高效、灵活的数据库服务。云数据库主要分为两大类:关系型数据库
    的头像 发表于 01-07 10:22 804次阅读

    不用编程不用电脑,快速实现多台Modbus协议的PLC、智能仪表对接SQL数据库

    的参数按照任务组自动生成SQL命令语句,实现多设备SQL命令与数据库软件对接,支持MySQL、SQLServer、PostgreSQL、Oracle等。
    的头像 发表于 12-09 10:53 1322次阅读
    不用编程不用电脑,快速实现多台Modbus协议的PLC、智能仪表对接<b class='flag-5'>SQL</b><b class='flag-5'>数据库</b>