SQL 高级语句

来源:互联网 发布:存储图片用什么数据库 编辑:程序博客网 时间:2024/04/29 22:19

TOP

TOP 子句用于规定要返回的记录的书目。

注意:并非所有的数据库系统都支持 TOP 子句。

SQL Server 的语法:SELECT     TOP    number | percent    column_name(s)    FROM    table_name

MySQL 和 Oracle 中的 SQL SELECT    TOP 是等价的

MySQL 语法:SELECT    column_name(s)    FROM    table_name    LIMIT    number

Oracle 语法:SELECT    column_name(s)    FROM    table_name    WHERE    ROWNUM    <=    number

LIKE

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

语法:SELECT    column_name(s)    FROM    table_name    WHERE    column_name    LIKE    pattern

通配符

通配符描述%替代一个或多个字符_仅替代一个字符[charlist]字符列中的任何单一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符

IN

IN 操作符允许我们在 WHERE 子句着哦您能够规定多个值。

语法:SELECT    column_name(s)    FROM    table_name    WHERE    column_name    IN    (value1, value2, ...)

BETWEN

操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

语法:SELECT     column_name(s)     FROM    table_name    WHERE     column_name    BETWEEN    value1    AND    value2

注意:不同的数据库对BETWEEN ... AND 操作符的处理方式是有差异的。

Alias

表的语法:SELECT    column_name(s)    FROM    table_name    AS    alias_name

列的语法:SELECT    column_name     AS    alias_name    FROM    table_name

JOIN

join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

Join 和 Key

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行Join。

列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。

在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

不同的 SQL JOIN

* JOIN:如果表中有至少一个匹配,则返回行

* LEFT JOIN:即使右表中没有匹配,也从左标返回所有行

* RIGHT JOIN:即使左表中没有匹配,也从右表返回所有行

* FULL JOIN:只要其中一个表中存在匹配,就返回行

UNION 和 UNION ALL 操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

注意:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须用于相似的数据类型。同时,每条SELECT 语句中的列的顺序必须相同。

语法:SELECT    column_name(s)    FROM    table_name1     UNION    (ALL)    SELECT column_name(s)    FROM    table_name2

默认的,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION    ALL。

SELECT INTO

SELECT INTO 语句可用于创建表的备份。

语法:SELECT    *    INTO    new_table_name   [IN   externaldatabase ]   FROM old_table_name

CREATE DATABASE

语法:CREATE    DATABASE    database_name

CREATE TABLE

语法:CREATE TABLE    表名称

{

列名称1   数据类型,

列名称2   数据类型,

列名称3   数据类型,

....

}




数据类型描述

  • integer(size)
  • int(size)
  • smallint(size)
  • tinyint(size)
仅容纳整数。在括号内规定数字的最大位数。
  • decimal(size,d)
  • numeric(size,d)

容纳带有小数的数字。

"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。

char(size)

容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。

在括号中规定字符串的长度。

varchar(size)

容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。

在括号中规定字符串的最大长度。

date(yyyymmdd)容纳日期。

约束

NOT NULL

约束强制不接受 NULL 值。

UNIQUE

约束唯一表示数据库表中的每条记录。

命名约束 CONSTRAINT    name    UNIQUE  

PRIMARY KEY

主键必须包含唯一的值,每个表都应该有一个主键,并且每个表只能有一个主键。

命名约束 CONSTRAINT name PRIMARY KEY

撤销约束 DROP CONSTRAINT name 或 DROP PRIMARY KEY

FOREIGN KEY

一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

用于预防破坏表之间连接的动作。也能防止非法数据插入外键列,因为他必须是它只想的那个表中的值之一。

CHECK

CHECK 约束用于限制列中的值的范围。

DEFAULT

DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新纪录。

CREATE INDEX

CREATE INDEX 语句用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

注意:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

语法:CREATE    INDEX    index_name   ON    table_name    (column_name)

创建唯一索引:CREATE    UNIQUE    INDEX    index_name    ON    table_name(column_name)

DROP INDEX

DROP    INDEX    index_name    ON    table_name

TRUNCATE    TABLE    表名称  仅仅删除表个中的数据。

ALTER TABLE

添加列:ALTER    TABLE    table_name    ADD    column_name    datatype

删除列:ALTER    TABLE    table_name    DROP    COLUMN    column_name

AUTO INCREMENT

Auto-increament 会在新纪录着插入表中时生成一个唯一的数字。自动地创建主字段的值。

VIEW(试图)

试图是可视化的表。试图包含行和列,就像一个真实的表。试图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向试图添加SQL函数、WHER以及JOIN语句,我们也可以提交数据,就像这些来自某个单一的表。

注意:数据录的设计和结构不会受到试图中的函数、where或join语句的影响。

语法:CREATE    VIEW   view_name    AS    SELECT    column_name(s)    FROM    table_name    WHERE    condition.

注意:试图总是显示最近的数据。每当用户查询试图时,数据库引擎通过使用SQL语句来重建数据。

更新试图语法:CREATE    OR    REPLACE    VIEW    view_name    AS    SELECT    column_name(s)    FROM    table_name    WHERE    condition

DATE