SQL 学习笔记

来源:互联网 发布:网络云课堂 编辑:程序博客网 时间:2024/06/05 02:30

重要事项

一定要记住,SQL 对大小写不敏感!

SQL 语句后面的分号?

某些数据库系统要求在每条 SQL命令的末端使用分号。在我们的教程中不使用分号。

分号是在数据库系统中分隔每条 SQL语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。

如果您使用的是 MS Access 和SQL Server 2000,则不必在每条 SQL 语句之后使用分号,不过某些数据库软件要求必须使用分号。

SQL DML 和 DDL

可以把 SQL分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

SQL(结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。

查询和更新指令构成了 SQL 的 DML部分:

  • SELECT - 从数据库表中获取数据
  • UPDATE - 更新数据库表中的数据
  • DELETE - 从数据库表中删除数据
  • INSERT INTO - 向数据库表中插入数据

SQL 的数据定义语言 (DDL)部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

SQL 中最重要的 DDL 语句:

  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

 

SQL SELECT 语句

SELECT 语句用于从表中选取数据。

结果被存储在一个结果表中(称为结果集)。

SQL SELECT 语法

SELECT 列名称 FROM 表名称

以及:

SELECT * FROM 表名称

注释:SQL语句对大小写不敏感。SELECT 等效于 select。

 

SQL SELECT DISTINCT 语句

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT用于返回唯一不同的值。

语法:

SELECT DISTINCT 列名称FROM 表名称

 

 

WHERE 子句

如需有条件地从表中选取数据,可将WHERE 子句添加到 SELECT 语句。

语法

SELECT 列名称 FROM 表名称WHERE 列 运算符 值

下面的运算符可在 WHERE子句中使用:

操作符

描述

=

等于

<>

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

BETWEEN

在某个范围内

LIKE

搜索某种模式

注释:在某些版本的SQL 中,操作符 <> 可以写为 !=。

 

AND 和 OR 运算符

AND 和 OR 可在 WHERE子语句中把两个或多个条件结合起来。

如果第一个条件和第二个条件都成立,则AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则OR 运算符显示一条记录。

 

ORDER BY 语句

ORDER BY语句用于根据指定的列对结果集进行排序。

ORDER BY 语句默认按照升序对记录进行排序。(ASC关键字)

如果您希望按照降序对记录进行排序,可以使用DESC 关键字

 

Update 语句

Update 语句用于修改表中的数据。

语法:

UPDATE 表名称 SET 列名称 =新值 WHERE 列名称 = 某值

 

 

DELETE 语句

DELETE 语句用于删除表中的行。

语法

DELETE FROM 表名称WHERE 列名称 = 值

 

TOP 子句

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

对于拥有数千条记录的大型表来说,TOP子句是非常有用的。

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

SQL Server 的语法:

SELECT TOPnumber|percent column_name(s)
FROM table_name

 

LIKE 操作符

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

SQL LIKE 操作符语法

SELECTcolumn_name(s)
FROM table_name
WHERE column_name LIKE pattern

 

 

SQL 通配符

在搜索数据库中的数据时,SQL通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE运算符一起使用。

在 SQL 中,可使用以下通配符:

通配符

描述

%

替代一个或多个字符

_

仅替代一个字符

[charlist]

字符列中的任何单一字符

[^charlist]

或者

[!charlist]

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

 

IN 操作符

IN 操作符允许我们在 WHERE子句中规定多个值。

SQL IN 语法

SELECTcolumn_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)

 

BETWEEN 操作符

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

SQL BETWEEN 语法

SELECTcolumn_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

 

SQL Alias

表的 SQL Alias 语法

SELECTcolumn_name(s)
FROM table_name
AS alias_name

列的 SQL Alias 语法

SELECT column_nameAS alias_name
FROM table_name

 

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

Join 和 Key

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

数据库中的表可通过键将彼此联系起来。主键(PrimaryKey)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

 

SQL INNER JOIN 关键字

在表中存在至少一个匹配时,INNERJOIN 关键字返回行。

INNER JOIN 关键字语法

SELECTcolumn_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

注释:INNER JOIN 与 JOIN是相同的。

 

SQL LEFT JOIN 关键字

LEFT JOIN 关键字会从左表(table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

LEFT JOIN 关键字语法

SELECTcolumn_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, LEFTJOIN 称为 LEFT OUTER JOIN。

 

SQL RIGHT JOIN 关键字

RIGHT JOIN 关键字会右表(table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

RIGHT JOIN 关键字语法

SELECTcolumn_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, RIGHTJOIN 称为 RIGHT OUTER JOIN。

 

SQL FULL JOIN 关键字

只要其中某个表存在匹配,FULLJOIN 关键字就会返回行。

FULL JOIN 关键字语法

SELECTcolumn_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, FULLJOIN 称为 FULL OUTER JOIN。

 

SQL UNION 操作符

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

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

SQL UNION 语法

SELECTcolumn_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

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

SQL UNION ALL 语法

SELECTcolumn_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

另外,UNION 结果集中的列名总是等于UNION 中第一个 SELECT 语句中的列名。

 

SELECT INTO 语句

SELECT INTO语句从一个表中选取数据,然后把数据插入另一个表中。

SELECT INTO语句常用于创建表的备份复件或者用于对记录进行存档。

SQL SELECT INTO 语法

您可以把所有的列插入新表:

SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename

或者只把希望的列插入新表:

SELECTcolumn_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename

 

CREATE DATABASE 语句

CREATE DATABASE用于创建数据库。

SQL CREATE DATABASE 语法

CREATE DATABASEdatabase_name

 

CREATE TABLE 语句

CREATE TABLE语句用于创建数据库中的表。

SQL CREATE TABLE 语法

CREATE TABLE表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)

数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型:

数据类型

描述

    • integer(size)
    • int(size)
    • smallint(size)
    • tinyint(size)

仅容纳整数。在括号内规定数字的最大位数。

    • decimal(size,d)
    • numeric(size,d)

容纳带有小数的数字。

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

char(size)

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

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

varchar(size)

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

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

date(yyyymmdd)

容纳日期。

 

函数的语法

内建 SQL 函数的语法是:

SELECT function(列)FROM 表

函数的类型

在 SQL中,基本的函数类型和种类有若干种。函数的基本类型是:

  • Aggregate 函数
  • Scalar 函数

合计函数(Aggregate functions)

Aggregate函数的操作面向一系列的值,并返回一个单一的值。

注释:如果在 SELECT语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!

"Persons" table (在大部分的例子中使用过)

Name

Age

Adams, John

38

Bush, George

33

Carter, Thomas

28

MS Access 中的合计函数

函数

描述

AVG(column)

返回某列的平均值

COUNT(column)

返回某列的行数(不包括 NULL 值)

COUNT(*)

返回被选行数

FIRST(column)

返回在指定的域中第一个记录的值

LAST(column)

返回在指定的域中最后一个记录的值

MAX(column)

返回某列的最高值

MIN(column)

返回某列的最低值

STDEV(column)

 

STDEVP(column)

 

SUM(column)

返回某列的总和

VAR(column)

 

VARP(column)

 

在 SQL Server 中的合计函数

函数

描述

AVG(column)

返回某列的平均值

BINARY_CHECKSUM

 

CHECKSUM

 

CHECKSUM_AGG

 

COUNT(column)

返回某列的行数(不包括NULL值)

COUNT(*)

返回被选行数

COUNT(DISTINCT column)

返回相异结果的数目

FIRST(column)

返回在指定的域中第一个记录的值(SQLServer2000 不支持)

LAST(column)

返回在指定的域中最后一个记录的值(SQLServer2000 不支持)

MAX(column)

返回某列的最高值

MIN(column)

返回某列的最低值

STDEV(column)

 

STDEVP(column)

 

SUM(column)

返回某列的总和

VAR(column)

 

VARP(column)

 

Scalar 函数

Scalar函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。

MS Access 中的 Scalar 函数

函数

描述

UCASE(c)

将某个域转换为大写

LCASE(c)

将某个域转换为小写

MID(c,start[,end])

从某个文本域提取字符

LEN(c)

返回某个文本域的长度

INSTR(c,char)

返回在某个文本域中指定字符的数值位置

LEFT(c,number_of_char)

返回某个被请求的文本域的左侧部分

RIGHT(c,number_of_char)

返回某个被请求的文本域的右侧部分

ROUND(c,decimals)

对某个数值域进行指定小数位数的四舍五入

MOD(x,y)

返回除法操作的余数

NOW()

返回当前的系统日期

FORMAT(c,format)

改变某个域的显示方式

DATEDIFF(d,date1,date2)

用于执行日期计算


 

0 0
原创粉丝点击