数据库基础知识

一.SQL
1.SQL(结构化查询语言)是用于管理关系数据库管理系统。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
2.SQL语言分为四大类:
2.1 DDL语句:数据定义语句,负责定义数据库对象的,包括创建、修改、删除数据库对象。语句有:create、 alter、drop
2.2 DML语句:数据操作语句,负责操作表中的数据的。包括新增、修改、删除数据。语句有:insert、update、
delete、truncate
2.3 DQL语句:查询数据语句,语句有:select 。查询功能包括:条件查询、分组查询、多表连接查询、子查询。
2.4 DCL语句:数据控制语句,语句有:GRANT、REVOKE、COMMIT、ROLLBACK等语句,负责分配/收回用户的权限。
3.不同的数据库中,同一种数据类型可能有不同的名称
4.SQL语句语法
CREATE DATABASE语句:创建数据库
CREATE TABLE 语句:创建数据库中的表
5.SQL约束的语法
5.1 NOT NULL:指示某列不能存储 NULL 值。
5.2 UNIQUE:保证某列的每行必须有唯一的值。
5.3 PRIMARY KEY(唯一值不为空): NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
5.4 FOREIGN KEY:保证一个表中的数据匹配另一个表中的值的参照完整性。
5.4.1 FOREIGN KEY 约束用于预防破坏表之间连接的行为。
5.4.2 FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一.
5.5 CHECK:保证列中的值符合指定的条件。
5.6 DEFAULT:规定没有给列赋值时的默认值。
6.创建索引
index_name:索引名称
table_name:索引的表
column_name:索引的列
CREATE UNIQUE INDEX:不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值
7.INSERT INTO 语句用于向表中插入新记录
insert into语句两种编写格式
7.1无需指定要插入数据的列名,只需提供被插入的值
7.2需要指定列名及被插入的值
8.UPDATE 语句用于更新表中已存在的记录
UPDATE中的WHERE子句规定哪条记录或者哪些记录需要更新。如果省略了WHERE子句,所有的记录都将被更新!
9.DELETE用于删除表中的行
delete语句中的WHERE子句规定哪条记录或者哪些记录需要删除。如果省略了WHERE子句,所有的记录都将被删除!
10.SELECT 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集.
11.SELECT DISTINCT 语句
在表中,一个列可能会包含多个重复值,有时仅仅列出不同(distinct)的值。DISTINCT 关键词用于返回唯一不同的值。
12.WHERE子句
WHERE子句用于提取那些满足指定条件的记录
operator表示where子句中的运算符,比如有等于(=)号,(<>)不等于(!=),>大于,<小于,>=大于等于,<=小于等于,between,like,in
13.AND & OR 运算符
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
14.LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。"%" 符号用于在模式的前后定义通配符。
15.通配符(%替代零个或多个字符 _ 替代一个字符)
在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
SQL 通配符用于搜索表中的数据。
16.IN操作符
IN 操作符允许您在 WHERE 子句中规定多个值。
17.BETWEEN 操作符
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。如果需要显示不在范围内的网站,则使用NOT BETWEEN
18.ORDER BY 关键字
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,使用 DESC 关键字。
ASC:表示升序 DESC:表示降序
19.连接(JOIN)
join 用于把来自两个或多个表的行结合起来。
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHTJOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行
INNER JOIN 与 JOIN 是相同的。
20.UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
二.视图
1.视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。
create view:创建视图
alter view:更新视图
drop view:撤销视图
2.视图分类:索引视图,标准视图,分区视图
2.1索引视图
创建索引视图,必须拥有唯一聚合索引,如果创建聚合索引,带有聚合函数的基础视图必须使用WITH SCHEMABINDING ,group by以及count_big函数
3.存储过程 (CREATE/ALTER/DROP) PROCEDURE
T-SQL语言来编写,具有很好的可重用性,
3.1存储过程的分类:
3.1.1用户自定义的存储过程:最主要的存储过程
3.1.2系统存储过程:sp_前缀,系统预定义
3.1.3扩展存储过程:保存在DLL动态链接库中并从动态链接库中执行的C++程序代码,用于扩展SQLSERVER2005性能,以字符xp_开头,通常与其它系统存储过程一起使用通过程序集调用。
4.自定义函数
用户自定义函数是接受参数、执行操作(例如复杂计算)并将操作结果以值的形式返回的子程序。返回值可以是单个标量值或结果集。
4.1标量型函数返回一个确定类型的标量值其返回值类型为除TEXT、NTEXT、IMAGE、CURSOR、 TIMESTAMP、table 外的其它数据类型。函数体语句定义在BEGIN-END语句内,其中包含了可以返回值的Transact-SQL 命令
4.2内嵌表值函数
内联表值型函数以表的形式返回一个返回值,即它返回的是一个表内联表值型函数没有由BEGIN-END 语句括起来的函数体。其返回的表由一个位于RETURN 子句中的SELECT 命令段从数据库中筛选出来。内联表值型函数功能相当于一个参数化的视图。
4.3多语句表值函数
多声明表值型函数可以看作标量型和内联表值型函数的结合体。它的返回值是一个表,但它和标量型函数一样有一个用BEGIN-END 语句括起来的函数体,返回值的表中的数据是由函数体中的语句插入的。
修改函数ALTER FUNCTION
删除函数DROP FUNCTION
三.游标
1.游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
2.游标的分类:
MS SQL SERVER 支持三种类型的游标:Transact_SQL 游标,API 服务器游标和客户游标。
2.1Transact_SQL 游标
每一个游标必须有四个组成部分:
2.1.1 DECLARE 游标
2.1.2 OPEN 游标
2.1.3 从一个游标中FETCH 信息
2.1.4 CLOSE 或DEALLOCATE 游标
@@fetch_status是一个游标专用的系统函数,用于表示是否取到值
四.触发器 CREATE TRIGGER
1.触发器是一种特殊的存储过程,它在特定语言事件发生时自动执行,通常用于实现强制业务规则和数据完整性。触发器支持嵌套,最多可以嵌套32层
2.触发器分类
2.1 DML触发器: DML触发器是当数据库服务器中发生数据操作语言(DML)事件时要执行的操作。
2.2 DML事件包括对表或视图发出的UPDATE、INSERT或DELETE语句
2.3 AFTER触发器:指SQL语句成功执行之后触发INSTEAD OF触发器。
2.4 DDL触发器:主要用于防止对数据库架构、视图、表、存储过程等进行的某些修改。
SQLServer触发器中可以拥有事务回滚功能,当有错误发生时,执行rollback,这样导致DML失效。
通过DISABLE TRIGGER语句使触发器无效

问题回答:
举例出常见的关系型数据库有哪些?
MySQL:一种广泛使用的开源关系型数据库管理系统,支持多种操作系统和语言。
Oracle,Sybase::一种商业化的关系型数据库管理系统,被广泛应用于企业级应用和互联网系统。
Microsoft SQL Server:一种商业化的关系型数据库管理系统,被广泛应用于微软 Windows 平台上的企业应用和数据中心。
说说视图的优点都有哪些?
1、视图能够简化用户的操作
2、视图使用户能以多种角度看待同一数据;
3、视图为数据库提供了一定程度的逻辑独立性;
4、视图能够对机密数据提供安全保护

你可能感兴趣的:(sql)