注册 登录
  • 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

MySQL SQL语言介绍

MySQL SQL 彭东稳 6551次浏览 已收录 0个评论

一、SQL是什么?

SQL是结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

SQL是关系型数据库系统的标准语言,所有关系数据库管理系统,如MySQL,MS Access,Oracle,SYBASE,Postgres和MSSQL服务器都使用SQL数据库语言。为了在各个数据库厂商之间取得更大的统一性,美国国家标准学会(American NationalStandards Institute,ANSI)于1986年发布了第一个SQL标准,并于1989年发布了第二个版本,该版本已经被广泛地采用。ANSI在1992年更新了SQL标准的版本,即SQL92和SQL2;并于1999年再次更新为SQL99和SQL3标准。在每一次更新中,ANSI都在SQL中添加了新特性,并在语言中集成了新的命令和功能。

不同的是,虽然SQL有标准,但是很多厂商还是扩展了SQL。各种不同的数据库对SQL语言的支持与标准存在着细微的不同,这是因为,有的产品的开发先于标准的公布,另外,各产品开发商为了达到特殊的性能或新的特性,需要对标准进行扩展。已有100多种遍布在从微机到大型机上的数据库产品SQL,其中包括DB2、SQL/DS、ORACLE、INGRES、SYBASE、SQLSERVER、DBASEⅣ、PARADOX、MICROSOFTACCESS等。

二、SQL发展历史

1970年,IBM公司的研究员、有“关系数据库之父”之称的E.F.Codd博士在刊物《Communication of the ACM》上发表了题为“A Relational Model of Data for Large Shared Data banks(大型共享数据库的关系模型)”的论文,文中首次提出了“数据库的关系模型”的概念,奠定了关系模型的理论基础。后来Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的12条准则,用数学理论奠定了关系数据库的基础。IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language,结构化查询语言)语言。由于关系模型的相关书籍简单明了、具有坚实的数学理论基础,因此一经推出就受到了学术界和产业界的高度重视和广泛响应,并很快成为数据库市场的主流。20世纪80年代以来,计算机厂商推出的数据库管理系统几乎都支持关系模型,数据库领域当前的研究工作都以关系模型为基础。

关系数据库是在数学的基础上发展起来的,关系对应数学中集合的概念。数据库中常见的查询操作其实对应的是集合的某些运算:选择、投影、联接、并、差、交、除。最终的结果虽然是以一张二维表的方式呈现在用户面前,但是从数据库内部来看是一系列的集合操作。因此,对于表中的记录,用户需要以集合的思想来理解。表中的数据是集合中的元素,而集合是无须的。因此对于没有ORDER BY子句的SQL语句,其解析结果应为:从集合中选择期望的子集合。这表明结果并不一定要有序。

1978,IBM致力于发展Codd的想法,并发布了名为System/R的产品。同时,美国国家标准学会(American NationalStandards Institute,ANSI)于1986年发布了第一个SQL标准,并于1989年发布了第二个版本,该版本已经被广泛地采用。

1986,IBM研制出第一台样机的关系型数据库和标准的ANSI。第一个关系数据库关系的软件和后来成为甲骨文发布了。

三、SQL语句处理

当执行一个SQL命令在RDBMS,该系统确定最佳的方式来进行处理请求及SQL引擎如何解释任务。这一过程包括的各种部件。这些组件查询调度,优化引擎,经典的查询引擎和SQL查询引擎等经典查询引擎处理所有非SQL查询,SQL查询引擎将无法处理逻辑文件。

下面是一个简单的数据图显示SQL架构:

MySQL SQL语言介绍

四、SQL语句分类

SQL语句大概分为以下几种,语法以MySQL为标准。

  • DDL(Data Definition Language,数据定义语言)

用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,比如库、表、视图等等。DDL对这些对象和属性的管理和定义具体表现在Create、Drop和Alter语句上。DDL操作的是“对象”的概念,而”对象“包括对象及对象的属性,而且对象最小也比记录大一个层次。以表举例:Create创建数据表,Alter可以更改该表的字段,DROP可以删除这个表,从这里我们可以看到,DDL所站的高度,他不会对具体的数据进行操作。DDL语句大概包含如下语句。

CREATE – 创建数据库、表、函数、存储过程、视图、索引、触发器的语句。

ALTER – 更改数据库、表、函数、存储过程、视图的语句。

DROP – 删除数据库、表、函数、存储过程、视图、索引、触发器的语句。

RENAME TABLE – 重命名数据库表的语句。

RUNCATE TABLE – 清除数据库表数据和auto_increment值的语句。

  • DML(Data Manipulation Language,数据操作语言)

用于操作数据库对象中包含的数据,也就是说操作的单位是记录(操作表记录)。DML语句大概包含如下语句。

INSERT – 向数据库表中插入新纪录的语句。

UPDATE – 更新数据库表中记录的语句。

DALETE – 删除数据库表中记录的语句。

REPLACE – 替换数据库表中记录的语句,如果没有要替换的记录,就会向INSERT一样插入新数据。

LOAD DATA INFILE – 读取外部文本文件的语句。

CALL – 调用存储过程的语句。

DO – 执行表达式的语句。

  • DQL(Data Query Language,数据查询语言)

也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。

SELECT – 查看数据库表中记录的语句。

  • DCL(Data controller Language,数据控制语言)

它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。MySQL用GRANT或REVOKE控制对库表的访问。

GRANT – 用于给用户指定权限的语句。

REVOKE – 用于移除指定用户的指定权限的语句。

  • TPL(Transaction Process Language,事务处理语言)

它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。

START TRANSACTION,COMMIT,ROLLBACK – 用于事务的开始,提交和事务回滚的语句。

SAVEPOINT,ROLLBACK TO ROLLBACK,RELEASE SAVEPOINT – InnoDB存储引擎支持SQL语句保存点,回滚到保存点,释放保存点和回滚保存点。

SET TRANSACTION – 此语句指定事务特性,它需要一个或多个特征值用逗号隔开,这些特性设置事务隔离级别或访问模式,隔离级别是用于对InnoDB表的操作。访问模式可以被指定为MySQL 5.6.5和指示是否在读/写操作的事务或只读模式。

XA transactions – 用于分布式事务中的语句。

  • 主从复制语句

PURGE BINARY LOGS – 删除二进制日志文件(可以指定文件或日期)的语句。

RESET MASTER – 删除所有的二进制日志文件,重置二进制日志索引文件是空的,并创建一个新的二进制日志文件的语句。

CHANGE MASTER TO – 从服务器连接主服务器的语句。

MASTER_POS_WAIT() – 这是一个函数,用来指定Slave可以读的二进制事件和位置。

RESET SLAVE – 重置Slave,它会清除主信息和中继日志信息库,删除所有的中继日志文件,并启动了一个新的中继日志文件。

SET GLOBAL sql_slave_skip_counter – 用于Slave跳过从Master复制中的一个事件,需要在slave处于stop状态下。

START SLAVE – 用于启动Slave的IO线程(复制Master数据到中继日志)和SQL线程(执行中继日志语句)。

STOP SLAVE – 用于停止Slave的IO线程(复制Master数据到中继日志)和SQL线程(执行中继日志语句)。

  • 账号管理语句

CREATE USER – 创建用户的语句。

ALTER USER – 修改用户的语句。

DROP USER – 删除用户的语句。

RENAME USER – 重命名用户的语句。

SET PASSWORD – 用于用户设置密码的语句。

  • 表维护语句

ANALYZE TABLE – 用于分析表。

CHECK TABLE – 用于检查表错误。

CHECKSUM TABLE – 用于检验表。

OPTIMIZE TABLE – 用于优化表。

REPAIR TABLE – 用于修复可能损坏的表。

  • 插件管理语句

INSTALL PLUGIN – 用于安装插件。

UNINSTALL PLUGIN – 用于卸载插件。

  • 服务器锁

LOCK TABLES – MySQL服务器级的锁控制语句,表级排他锁。

UNLOCK TABLES – MySQL服务器级的锁控制语句,释放表级排他锁。

  • SET语句

  • SHOW语句

SHOW语句有许多形式,提供关于服务器的数据库、表、列或状态的信息。如果对于一个给定的说明语句的语法包括像’模式’,’模式’是一个字符串,可以包含SQL”%”和”_”通配符。

  • 更多其他语句

DESCRIBE – 显示数据库表结构的语句。

EXPLAIN – 显示SQL语句执行计划的语句。

HELP – MySQL帮助语句。

USE – 设置默认数据库的语句。

FLUSH – 用于刷新缓存,表的语句。

RESET QUERY CACHE – 清除缓存的语句。

KILL – 结束MySQL内部线程的语句(SHOW PROCESSLIST可以查看正在运行的线程)。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (2)or分享 (0)
关于作者:

您必须 登录 才能发表评论!