如果前端应用程序已经为网络世界建造了房屋,那么数据库数据就是居住在这些房屋中的人。
网络(或程序员的世界世界)是人类世界的对立面。世界上编程的技术核心和真相都在最底层。个人认为,无论部署什么样的架构,用什么样的语言编码或显示,web应用和移动应用的底层都是数据库中的数据。在这些数据之下,还有更底层的东西值得学习、探索和挖掘。也许有一天一不小心就能挖出这个世界的真相。
思维导图:
一维思维导图
1、数据库的定义
数据库是一个根据数据结构组织、存储和管理数据的仓库。它是长期存储在计算机中的有组织的、共享的、统一的管理数据集。
1、数据库是一个实体,它是一个仓库可以合理地保存数据。用户将待管理的交易数据存储在此仓库,以及数据和图书馆被组合以形成数据库。
2、数据库是一种新的数据管理方法和技术,可以更恰当地组织数据,更方便地维护数据,更严格地控制数据,更有效地使用数据。
2、数据库管理系统
数据库管理系统(DBMS)是操纵和管理数据库的大型软件,用于建立、使用和维护数据库。它以统一的方式管理和控制数据库,以确保数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS维护数据库。它可以支持多个应用程序和用户在同一时间或不同时间以不同方式建立、修改和查询数据库。大多数DBMS都提供了数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language)供用户定义数据库的模式结构和权限约束,实现添加、删除数据等操作。
3、数据库类型
3.1、关系数据库
关系数据库中,存储格式可以直接反映实体之间的关系。关系数据库类似于常见的表,关系数据库中的表之间有很多复杂的关系。常见的关系数据库有Mysql、SqlServer等。
虽然有很多关系数据库,但大多数都遵循SQL(结构化查询语言)标准。常见的操作有查询、添加、更新、删除、求和、排序等。
3.2非关系数据库(NoSQL)
MongoDB、Redis、Memcache等NoSql数据库的设计目的是简化数据库结构,避免冗余、表连接影响性能,摒弃复杂的分布。
非关系数据库的分类:
(1)键值存储:它代表软件Redis。它的优点是可以快速查询数据,缺点是需要存储数据之间的关系。
(2)列存储:代表软件Hbase,具有数据查询快捷、数据存储扩展性强的优点。缺点是数据库的功能有限。
(3)文档数据库存储:代表软件MongoDB,优点是数据结构不是特别严格。缺点是查询性能不好,缺乏统一的查询语言。
(4)图形数据库存储:代表软件InfoGrid,其优势可以通过图结构关联算法轻松计算出来。但缺点是必须计算整个图形才能得到结果,遇到不合适的数据模型时很难使用图形数据库。
nosql与关系数据库的区别
首先,一般的非关系数据库是基于CAP模型的,而传统的关系数据库是基于ACID模型的。
其次,在数据存储结构、可扩展性、数据一致性等方面存在一定的差异。
CAP定理:在理论计算机科学中,CAP定理,也称为Brewer s定理指出,分布式计算系统不可能同时满足以下三点:
一致性(所有节点同时拥有相同的数据)
可用性(确保无论成功还是失败,每个请求都有响应)
分区容差(系统中任何信息的丢失或故障都不会影响系统的继续运行)。
ACID模型:ACID指的是数据库管理系统(DBMS)必须具备的四个特征,以便在写入/更改数据的过程中确保事务的正确性和可靠性:
原子性(或不可分割性),
一致性(一致性)
隔离(也称为独立)
耐用性(耐久性)。
4、分布式数据库
所谓分布式数据库技术是数据库技术和分布式技术的结合。具体来说,它是指将地理上分散但逻辑上属于同一系统的数据组合在一个计算机系统中的数据库技术。
5、SQL定义和语法
5.1什么是SQL
SQL是用于访问和处理数据库的标准计算机语言。
SQL指的是结构化查询语言。
SQL使我们能够访问数据库。
SQL是ANSI标准计算机语言。
5.2语法
SQL不区分大小写。
SQL分为两部分:数据操作语言(DML)和数据定义语言(DDL)。
DML零件:
选择-从数据库表中获取数据
更新-更新数据库表中的数据。
删除-从数据库表中删除数据。
插入到-将数据插入到数据库表格中。
DDL部分:
创建-创建新的数据库
ALTER DATABASE-修改数据库。
创建表格-创建新表格。
改变数据库表
删除表格-删除表格
创建索引-创建索引(搜索关键字)
删除索引-删除索引
6、SQL基本语句
6.1、选择语句
从表名中选择列名;SELECT * FROM表名。
SELECT语句用于从表中选择数据。
结果存储在结果表中(称为结果集)。
星号(*)是选择所有行的快捷方式。
6.2、差异声明
关键字DISTINCT用于返回唯一且不同的值。
从表名中选择不同的列名
6.3、where语句
WHERE子句用于指定选择标准。
从列运算符值所在的表名中选择列名;
运算符:===介于LIKE和or之间
6.4、AND或语句
AND OR运算符用于根据多个条件筛选记录。
AND OR可以在WHERE子语句中组合两个或多个条件。
如果第一个条件和第二个条件都为真,AND运算符将显示一条记录。
如果第一个条件和第二个条件中只有一个为真,OR运算符将显示一条记录。
6.5、Order By语句
Order语句用于根据指定的列对结果集进行排序。
默认情况下,ORDER BY语句按升序(AES)对记录进行排序。
如果你想按降序排列记录,你可以使用desc关键字。
6.6、插入声明
INSERT INTO语句用于向表中插入新行;
插入到表名值(值1,值2,)
INSERT INTO table_name(第1列,第2列,)值(值1,值2,)
6.7、更新声明
Update语句用于修改表中的数据。
UPDATE table name SET column name=new value,其中column name=a值。
6.7、删除声明
DELETE语句用于删除表中的行。
从列名=值的表名中删除
6.8、顶部条款
TOP子句用于指定要返回的记录数。
注意:并非所有数据库系统都支持TOP子句。
在SQL Server中:
SELECT TOP number | percent column _ name FROM table _ name
在MySql中:
从表名限制号中选择列名
在Oracle中:
SELECT column _ name FROM table _ name,其中ROWNUM=number
6.9、通配符
在数据库中搜索数据时,SQL通配符可以替换一个或多个字符。
SQL通配符必须与LIKE运算符一起使用。
%替换一个或多个字符。
_仅替换一个字符。
[charlist]字符列中的任何单个字符。
[charlist]或者[!不在字符列中的任何单个字符。
6.10、IN操作员
IN操作符允许我们在WHERE子句中指定多个值。
SELECT column _ name FROM table _ name,其中column_name IN (value1,value2,)
6.11、别名
通过使用SQL,您可以为列名和表名指定别名。
从表名中选择列名作为别名
7、SQL基本数据库操作
7.1、连接表连接
SQL join用于根据两个或更多表中列之间的关系来查询这些表中的数据。
JOIN:如果表中至少有一个匹配项,则返回该行。
LEFT JOIN:返回左表中的所有行,即使右表中没有匹配项。
右连接:即使左表中没有匹配项,也会从右表中返回所有行。
完全联接:只要其中一个表中有匹配项,就返回行。
关键词:
选择列名
来自表名1
连接(或内部连接、左连接、右连接、完全连接)表名2
在表名1 .列名=表名2 .列名上
7.2、工会合并
UNION运算符用于合并两个或多个SELECT语句的结果集。
注意:联合中的SELECT语句必须具有相同的列数。列也必须具有相似的数据类型。同时,每个SELECT语句中的列顺序必须相同。
关键词:
从表名1中选择列名
联盟
从表名2中选择列名
注意:默认情况下,UNION运算符选择不同的值。如果允许重复值,请使用UNION ALL。
7.3、表格备份
Select into语句可用于创建表的备份副本。
SELECT INTO语句从一个表中选择数据,然后将数据插入到另一个表中。
SELECT INTO语句通常用于创建表的备份副本或归档记录。
语法:
SELECT *(或指定列的列名)
到new _ table _ name[在外部数据库中]
来自旧表名
注意:可以添加where子句,或者join连接等。
7.4、创建数据库
Create用于创建数据库。
语法:创建数据库database_name
7.5、创建数据库表格
CREATE TABLE语句用于在数据库中创建一个表。
语法:
创建表名
(
列1数据类型,
列名2数据类型,
列名3数据类型,
.
)
7.6、创建索引
CREATE INDEX语句用于在表中创建索引。
索引使数据库应用程序能够更快地找到数据,而无需读取整个表。
创建简单索引的语法(允许重复值):
在table_name (column_name)上创建索引index _ name
在表上创建唯一索引。唯一索引意味着两行不能有相同的索引值。
在table_name (column_name)上创建唯一索引index _ name
7.7、DROP语句
通过使用DROP语句,您可以轻松地删除索引、表和数据库。
DROP INDEX index_name删除索引,但是不同的数据库有不同的用法:
例如MySQL:alter table table _ name drop index _ name
SQL Server:删除索引表名
删除表名:删除表
删除数据库数据库名:删除数据库
截断表名:删除表中的数据,但不删除表本身。
7.8变更声明
ALTER TABLE语句用于添加、修改或删除现有表中的列。
例如:
更改表表名添加列名数据类型
8、数据类型
8.1、常用数据类型:
8-通用数据类型图
8.2、 Microsoft Access、MySQL和SQL Server使用的数据类型和范围。
请参考W3school:SQL数据类型
9、约束条件
约束用于限制添加到表中的数据类型。
可以在创建表时(通过CREATE TABLE语句)或在创建表后(通过ALTER TABLE语句)指定约束。
主要制约因素:
NOT NULL不为空
NOT NULL约束强制列不接受空值。
NOT NULL约束强制字段始终包含值。这意味着如果不向字段中添加值,就不能插入新记录或更新记录。
唯一的唯一标识
唯一约束唯一标识数据库表中的每条记录。
UNIQUE和PRIMARY KEY约束都为列或列集提供唯一性保证。
主键有一个自动定义的唯一约束。
请注意,每个表可以有多个唯一约束,但每个表只能有一个PRIMARY KEY约束。
主键主键
主键约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含空值。
每个表都应该有一个主键,并且每个表只能有一个主键。
自动增量字段
我们通常希望在每次插入新记录时自动创建主键字段的值。
我们可以在表中创建一个自动递增字段。
外键外键
一个表中的外键指向另一个表中的主键。
检查极限值的范围
缺省值
10、视图视图
10.1、什么是视图
在SQL中,视图是基于SQL语句结果集的可视化表格。
视图包含行和列,就像真实的表一样。视图中的字段是一个或多个数据库中真实表中的字段。我们可以将SQL函数、WHERE和JOIN语句添加到视图中,我们还可以提交数据,就像它们来自单个表一样。
注意:数据库的设计和结构不会受到视图中的函数、where或join语句的影响。
10.2、语法
创建视图
将视图视图名称创建为
选择列名
来自表名
WHERE条件
注意:视图总是显示最新的数据。每当用户查询视图时,数据库引擎都会使用SQL语句重新构造数据。
更新视图
创建或替换视图view_name为
选择列名
来自表名
WHERE条件
删除视图
删除视图view_name
10.3、视图的功能
视图只支持查询,不支持增加、删除、修改等数据操作。您可以将视图视为一个临时表。
视图的作用:
1、提高了sql代码的可重用性。
当一个查询需要经常作为子查询使用时,视图可以简化代码,直接调用,而不用每次都重复编写。
2、提高了数据的安全性。
系统的数据库管理员需要给某人提供一个表中的两列数据,但是他没有我不想让他看到任何其他数据。此时,他可以仅用这两列数据构建一个视图,然后将该视图发布给他。
11、索引
索引是一种特殊的查找表,数据库搜索引擎可以使用它来加速数据检索。简单地说,索引是指向表中数据的指针。数据库的索引与书后面的索引非常相似。
尽管创建索引的目的是为了提高数据库的性能,但是仍然存在一些应该避免使用索引的情况。以下准则给出了何时重新考虑是否使用索引:
1、小型数据表不应使用索引;
2、需要频繁更新或批量插入的表;
3、如果列包含大数或空值,则不适合创建索引。
4、频繁操作的列不适合创建索引。
SQL中有两种索引,一种是聚集索引,另一种是非聚集索引。
12、功能
常用功能:
AVG():返回数值列的平均值。计算中不包括空值。
COUNT():返回符合指定条件的行数。
MAX():返回列中的最大值。计算中不包括空值。
MIN():返回列中的最小值。计算中不包括空值。
SUM():返回数字列的总数(total)。
不常用:
FIRST():返回指定字段中第一条记录的值。
LAST():返回指定字段中最后一条记录的值。
UCASE():将字段的值转换为大写。
LCAS():将字段的值转换为小写。
MID():用于从文本字段中提取字符。
LEN():返回文本字段中值的长度。
ROUND():用于将数值字段四舍五入到指定的小数位数。
NOW():返回当前日期和时间。
Formata():用于格式化字段的显示。
REPLACE():字符串替换函数
CONCAT():将两个字符串连接成一个字符串。
GROUP BY语句:
合计函数(如SUM)经常需要添加GROUP BY语句。
语法:
挑选列名,聚合函数(列名)
来自表名
其中列名运算符值
按列名分组
拥有语句:
在结构化查询语言中增加拥有子句原因是,在哪里关键字无法与合计函数一起使用。
语法:
挑选列名,聚合函数(列名)
来自表名
其中列名运算符值
按列名分组
具有聚合函数(列名)运算符值
例如:
从订单中选择客户、SUM(订单价格)
按客户分组
有总额(订单价格)2000
标签:数据数据库语句