十四.SQL语言基础

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

posted on 2021-06-08 15:50  求墨  阅读(142)  评论(0编辑  收藏  举报