- 1 数据库概述
- 1.1 DBMS 简史
- 1.2 数据库理论
- 1.3 事务 Transaction
- 1.4 SQL
- 1.5 数据库接口
- 本章参考
- 2 Relational 关系数据库
- 2.1 关系理论
- 2.2 Oracle
- 2.5 Microsoft SQL Server
- 2.6 DB2
- RDBS 比较
- 本章参考
- 3 NoSQL 非关系数据库
- 3.1 NoSQL 分类
- 3.2 键值 key-value 数据库
- 3.3 列存储数据库
- 3.4 图形数据库
- 本章参考
- 4 NewSQL
- 4.1 NewSQL 分类
- 4.2 分布式数据库 Distributed
- 本章参考
- 5 时序数据库 TSDB
- 5.1 简介
- 5.2 时序数据库比较
- 本章参考
- 6 SQL 引擎
- 6.1 SQL 引擎分类
- 6.2 SQL On Hadoop
- 本章参考
- 7 其它数据库
- 7.1 内存数据库 In-memory
- 7.2 嵌入式数据库 Embed
- 7.3 搜索引擎
- 本章参考
- 8 各种数据库分析比较
- 8.1 数据库排行 db-engines
- 8.2 数据库技术选型
- 8.3 DB 性能比较
- 8.4 国产数据库产品列表
- 8.5 DB 常用 SQL 比较
- 本章参考
- 9 SQL 调优
- 9.1 SQL JOIN
- 9.2 SQL 执行流程
- 10 数据库大型应用实例
- 10.1 负载均衡技术
- 10.2 数据库的高可用 HA
- 10.3 数据库的读写分离
- 10.4 数据库拆分(分布式)
- 10.5 跨库查询
- 本章参考
- 参考资料
- 附录
1.4 SQL
SQL: Structured Query Lanauage,结构化查询语言。
SQL 包括 DDL(数据库操作语言), DCL (数据库控制语言), DML (数据库管理语言)。
- DML(data manipulation language),包括 SELECT、UPDATE、INSERT、DELETE,这 4 条命令是用来对数据库里的数据进行操作的语言。
- DDL(data definition language),主要的命令有 CREATE、ALTER、DROP 等,DDL 主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。
- DCL(Data Control Language): 是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke 等)语句。在默认状态下,只有 sysadmin,dbcreator,db_owner 或 db_securityadmin 等人员才有权力执行 DCL。
SQL | 简介 | 支持 DB 或框架 |
---|---|---|
ANSI SQL | 最初是基于 IBM 的实现。1986 年被 ANSI 批准的,1987 被 ISO 批准为国际标准。 | 国际标准 |
PLSQL | 甲骨文公司在 90 年代初开发,以提高 SQL 的功能。 | Oracle、TimesTen、DB 2 |
HQL | Hibernate SQL Language。 | 仅限 Hibernate |
TCL | Transaction Control Language,事务控制语言。 |
备注:Hibernate 是对 JDBC 的再封装,实现了对数据库操作更宽泛的统一和更好的可移植性。
1.4.1 ANSI SQL
“美国国家标准化组织(ANSI)”是一个核准多种行业标准的组织。SQL 作为关系型数据库所使用的标准语言,最初是基于 IBM 的实现在 1986 年 被批准的。1987 年,“国际标准化组织(ISO)”把 ANSI SQL 作为国际标准。这个标准在 1992 年进行了修订(SQL-92),1999 年再次修订(SQL-99)。目前最新的是 SQL-2011。
SQL-2003 是由 8 个相关的文档组成,在不远的将来还可能增加其他文档,以扩展标准来适应新出现的技术。
第一部分:SQL/结构,指定实现一致性的一般性需求,定义 SQL 的基本概念;
第二部分:SQL/基础,定义 SQL 的原发和操作;
第三部分:SQL/调用级接口,定义程序编程与 SQL 的接口;
第四部分:SQL/持久存储模块,定义控制结构,进而定义 SQL 例程。还定义了包含 SQL 例程的模块;
第五部分:SQL/主机语言绑定,定义 SQL 的扩展,用户通过使用数据包裹支持外部 数据管理 ,还定义了数据链类型;
第六部分:对象语言绑定,定义 SQL 的扩展,支持把 SQL 语句内嵌到用 Java 编写的程序;
第七部分:信息和定义方案:定义信息方案和定义方案的规范,提供与 SQL 数据相关的结构和安全信息;
1.4.2 PL/SQL
PL/SQL 是是由甲骨文公司在 90 年代初开发,以提高 SQL 的功能。PL/SQL 是 Oracle 数据库对 SQL 语句的扩展。在普通 SQL 语句的使 用上增加了编程语言的特点,所以 PL/SQL 就是把数据操作和查询语句组织在 PL/SQL 代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或 者计算的程序语言。
关于 PL/ SQL 值得注意的事实:
PL/SQL 是一个完全可移植的,高性能的事务处理语言。
PL/SQL 提供了内置的解释器以及 OS 独立编程环境。
PL/ SQL 也可直接调用的命令行 SQL* Plus 接口。
直接调用也可以从外部编程语言调用数据库。
PL/SQL 的一般语法是基于 ADA 和 Pascal 编程语言。
除了甲骨文,PL/SQL 在 TimesTen 内存数据库和 IBM DB2 也可用。
PL/SQL 具有以下特点:
- PL/SQL 紧密结合集成 SQL。
- 它提供了广泛的错误检查。
- 它提供了大量的数据类型。
- 它提供了多种编程结构。
- 它支持通过函数和程序结构化编程。
- 它支持面向对象的编程。
- 它支持开发 Web 应用程序和服务器的页面。
- 事务
declare
begin
dbms_output.put_line('hello world');
end;
- 查看角色
--dba:数据库管理员,系统最高权限,可以创建数据结构(表空间等)
--resource:可以创建实体(表、视图),不可以创建数据库的结构
--connect:连接的权限,可以登录数据库,但是不可以创建实体和不可以创建数据库结构
select * from role_sys_privs;
grant connect to yc1;
1.4.3 SQL Mode
SQL Mode 定义了 sql 语法,数据校验等。
MySQL
查看 MySQL 当前数据库使用的 sql_mode:
SELECT @@sql_mode
表格 7 MySQL 支持的 sql_mode 模式(mysql5.0+)
模式 | 简介 |
---|---|
ANSI | 宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报 warning 警告。 |
TRADITIONAL | 严格模式,当向 mysql 数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报 error 错误。用于事物时,会进行事物的回滚。 |
STRICT_TRANS_TABLES | 严格模式,进行数据的严格校验,错误数据不能插入,报 error 错误。 |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论