SQL语言基础
一. SQL语言的兴起与语法标准
SQL Structured Query Language 结构化查询语言是对IBM公司San Jose,California研究实验室的埃德加·科德的关系模型的第一个商业化语言实现,这一模型在其1970年的一篇具有影响力的论文《一个对于大型共享型数据库的关系模型》中被描述。尽管SQL并非完全按照科德的关系模型设计,但其依然成为最为广泛运用的数据库语言
1970年代初,由埃德加·科德发表将资料组成表格的应用原则(Codd‘s Relational Algebra)
1974年,同一实验室的D.D.Chamberlin和R.F. Boyce对Codd‘s Relational Algebra在研制关系数据库管理系统System R中,研制出一套规范语言-SEQUEL(Structured English Query Language)
1976年11月的IBM Journal of R&D上公布新版本的SQL(叫SEQUEL/2)。1980年改名为SQL
1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS数据库系统中也实现了SQL
1986年10月美国国家标准学会ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986)
1987年成为国际标准化组织(ISO)采纳为国际标准
1989年美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89
后续SQL标准经过了一系列的增订,加入了大量新特性,有各种版本: ANSI SQL,SQL-1986, SQL-1989, SQL-1992, SQL-1999, SQL-2003,SQL-2008, SQL-2011
目前,所有主要的关系数据库管理系统支持某些形式的SQL,大部分数据库至少遵守ANSI SQL89标准
虽然有这一标准的存在,但大部分的SQL代码在不同的数据库系统中并不具有完全的跨平台性
业内标准微软和Sybase的T-SQL,Oracle的PL/SQL
二.SQL 语法基础
1.SQL语言规范
规范:
在数据库系统中,SQL 语句不区分大小写,建议用大写
SQL语句可单行或多行书写,默认以 " ; " 结尾
关键词不能跨多行或简写
用空格和TAB 缩进来提高语句的可读性
子句通常位于独立行,便于编辑,提高可读性
关于注释:
- SQL标准:
\#单行注释,注意有空格
-- 注释内容
\#多行注释
/*注释内容
注释内容
注释内容*/
- MySQL注释:
\# 注释内容
2.数据库对象和命名
数据库的组件(对象):
数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等
命名规则:
-
必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)
-
不要使用MySQL的保留字
3.SQL语句分类
DDL: Data Defination Language 数据定义语言
CREATE,DROP,ALTER
DML: Data Manipulation Language 数据操纵语言
INSERT,DELETE,UPDATE
软件开发:CRUD
DQL:Data Query Language 数据查询语言
SELECT
DCL:Data Control Language 数据控制语言
GRANT,REVOKE
TCL:Transaction Control Language 事务控制语言
COMMIT,ROLLBACK,SAVEPOINT
4.SQL语句构成
关健字Keyword组成子句clause,多条clause组成语句
例:
SELECT * #SELECT子句
FROM products #FROM子句
WHERE price>666 #WHERE子句
说明:一组SQL语句由三个子句构成,SELECT,FROM和WHERE是关键字
获取SQL命令使用帮助:
mysql> HELP KEYWORD
官方帮助:https://dev.mysql.com/doc/refman/8.0/en/sql-statements.html
三.关系型数据库的常见组件
-
数据库:database
-
表:table,行:row 列:column
-
索引:index
-
视图:view
-
存储过程:procedure
-
存储函数:function
-
触发器:trigger
-
事件调度器:event scheduler,任务计划
-
用户:user
-
权限:privilege