1.在MySQL数据库中,SQL语言由以下几部分组成。
(1)数据定义语言(DDL)。
用于执行数据库的任务,对数据库及数据库中的各种对象进行创建(create)、删除(drop)、修改(alter)等操作。如前所述,数据库对象主要包括:表、默认约束、规则、视图、触发器、存储过程等。不同数据库对象,其create、drop等语句的语法形式不同
(2)数据操纵语言(DML)。
用于操纵数据库中各种对象,检索和修改数据。DML包括的主要语句及功能如下表所示。
语 句
功 能
说 明
SELECT
从表或视图中检索数据
是使用最频繁的SQL语句之一
INSERT
将数据插入到表或视图中
www.2cto.com
UPDATE
修改表或视图中的数据
既可修改表或视图的一行数据,也可修改一组或全部数据
DELETE
从表或视图中删除数据
可根据条件删除指定的数据
(3)数据控制语言(DCL)。
用于安全管理,确定哪些用户可以查看或修改数据库中的数据,DCL包括的主要语句及功能如下表所示。
语 句
功 能
说 明
grant
授予权限
可把语句许可或对象许可的权限授予其他用户和角色
revoke
收回权限
与GRANT的功能相反,但不影响该用户或角色从其他角色中作为成员继承许可权限
(4) MySQL增加的语言元素。这部分不是SQL标准所包含的内容,而是为了用户
编程的方便增加的语言元素。这些语言元素包括常量、变量、运算符、函数、流程控制语句和注解等。每个SQL语句都以分号结束,并且SQL处理器忽略空格、制表符和回车符。
2. 常量
1). 字符串常量
字符串是指用单引号或双引号括起来的字符序列,分为ASCII字符串常量和Unicode 字符串常量。
ASCII字符串常量是用单引号括起来的,由ASCII字符构成的符号串。举例:‘hello’ ‘How are you!’ www.2cto.com
Unicode 字符串常量与ASCII字符串常量相似,但它前面有一个N标志符(N代表 SQL-92标准中的国际语言(National Language))。N前缀必须为大写。只能用单引号括起字符串。举例:N‘hello’
Unicode 数据中的每个字符用两个字节存储,而每个ASCII字符用一个字节存储。
在字符串中不仅可以使用普通的字符,也可使用几个转义序列,它们用来表示特殊的字符,见下表。每个转义序列以一个反斜杠(“\”)开始,指出后面的字符使用转义字符来解释,而不是普通字符。注意 NUL 字节与 NULL 值不同,NUL为一个零值字节,而 NULL 代表没有值。
序 列
含 义
\0
一个ASCII 0 (NUL)字符
\n
一个换行符
\r
一个回车符(Windows中使用\r\n作为新行标志)
\t
一个定位符
\b
一个退格符
\Z
一个ASCII 26字符(CTRL+Z)
www.2cto.com
\'
一个单引号(“'”)
\"
一个双引号(“"”)
\\
一个反斜线(“\”)
\%
一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符
\_
一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符
有以下几种方式可以在字符串中包括引号:
● 在字符串内用单引号“'”引用的单引号“'”可以写成“''”(两个单引号)。
● 在字符串内用双引号“"”引用的双引号“"”可以写成“""”(两个双引号)。
● 可以在引号前加转义字符(“\” )。
● 在字符串内用双引号“"”引用的单引号“'”不需要特殊处理,不需要用双字符或转义。同样,在字符串内用单引号“'”引用的双引号“"”也不需要特殊处理。
2). 数值常量
数值常量可以分为整数常量和浮点数常量。
整数常量即不带小数点的十进制数,例如: 2,+1453,–2147483648。
浮点数常量是使用小数点的数值常量,例如: -1.39,1.5E5,0.5E-2。
3). 十六进制常量
MySQL支持十六进制值。一个十六进制值通常指定为一个字符串常量,每对十六进制数字被转换为一个字符,其最前面有一个大写字母“X”或小写字“x”。在引号中只可以使用数字“0”到“9”及字母“a”到“f”或“A”到“F”。x'4D7953514C'表示字符串MySQL。
十六进制数值不区分大小写,其前缀“X”或“x”可以被“0x”取代而且不用引号。即X'41'可以替换为0x41,注意:“0x”中x一定要小写。
十六进制值的默认类型是字符串。如果想要确保该值作为数字处理,可以使用cast(...AS UNSIGNED)。
例: 执行如下语句: SELECT0x41, CAST(0x41 AS UNSIGNED);
如果要将一个字符串或数字转换为十六进制格式的字符串,可以用hex()函数。
例:将字符串CAT转换为16进制。 SELECT HEX('CAT'); www.2cto.com
4). 日期时间常量
日期时间常量:用单引号将表示日期时间的字符串括起来构成。日期型常量包括年、月、日,数据类型为DATE,表示为“1999-06-17”这样的值。时间型常量包括小时数、分钟数、秒数及微秒数,数据类型为TIME,表示为“12:30:43.00013”这样的值。MySQL 还支持日期/时间的组合,数据类型为DATETIME或TIMESTAMP,如“1999-06-17 12:30:43”。DATETIME和TIMESTAMP的区别在于:DATETIME的年份在1000~9999之间,而TIMESTAMP的年份在1970~2037之间,还有就是TIMESTAMP在插入带微秒的日期时间时将微秒忽略。TIMESTAMP还支持时区,即在不同时区转换为相应时间。
需要要特别注意的是,MySQL 是按年-月-日的顺序表示日期的。中间的间隔符“-”也可以使用如“\”、“@”或“%”等特殊符号。
如下是日期时间常量的例子:'2008-05-12 14:28:24:00'
日期时间常量的值必须符合日期和时间的标准,如这样的日期是错误的: