13.2.3 SQL语句基础

13.2.3 SQL语句基础

SQL的全称是Structured Query Language,也就是结构化查询语言SQL是操作和检索关系数据库的标准语言,标准的SQL语句可用于操作任何关系数据库。
使用SQL语句,程序员和数据库管理员(DBA)可以完成如下任务。

  • 在数据库中检索信息
  • 对数据库的信息进行更新
  • 改变数据库的结构
  • 更改系统的安全设置。
  • 增加或回收用户对数据库、表的许可权限。

在上面5个任务中,一般程序员可以管理前3个任务,后面2个任务通常由DBA来完成。

标准的SQL语句类型

标准的SQL语句通常可分为如下几种类型。

  • 查询语句:主要由select关键字完成,查询语句是SQL语句中最复杂、功能最丰富的语句。
  • DML (Data Manipulation Language,数据操作语言)语句:主要由insertupdatedelete三个关键字完成。
  • DDL (Data Definition Language,数据定义语言)语句:主要由createalterdroptruncate四个关键字完成。
  • DCL (Data Control Language, 数据控制语言)语句:主要由grantrevoke两个关键字完成。
  • 事务控制语句:主要由commitrollbacksavepoint三个关键字完成。

SQL语句的关键字不区分大小写,也就是说,create和CREATE的作用完全一样。
在上面5种SQL语句中,DCL语句(数据控制语言)用于为数据库用户授权,或者回收指定用户的权限,通常无须程序员操作,所以本节不打算介绍任何关于DCL的知识。

标识符

在SQL命令中也可能需要使用标识符,标识符可用于定义表名、列名,也可用于定义变量等。这些标识符的命名规则如下。

  • 标识符通常必须以字母开头。
  • 标识符包括字母、数字和三个特殊字符(,_,$)。
  • 不要使用当前数据库系统的关键字、保留字,

通常建议使用多个单词连缀而成,单词之间以_分隔。同一个模式下的对象不应该同名,这里的模式指的是外模式。

注意
truncate是一个特殊的DDL语句,truncate在很多数据库中都被归类为DDL,它相当于先删除指定的数据表,然后再重建该数据表。如果使用MySQL的普通存储机制,truncate确实是这样的。但如果使用InnoDB存储机制,则比较复杂,MySQL5.0.3之前,truncatedelete完全一样;在5.0.3之后,truncatedelete效率高,但如果该表被外键约束所参照,则依然被映射成delete操作。当使用快速truncate时,该操作会重设自动增长计数器。在5.0.13之后,快速truncate总是可用,即比delete性能要好。关于truncate的用法,请参考本章后面内容。