SQL(二)

2015-11-21 01:42:38 · 作者: · 浏览: 10
size) smallint(size) tinyint(size) 仅容纳整数。在括号内规定数字的最大位数。 decimal(size,d) numeric(size,d) 容纳带有小数的数字。 "size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。 char(size) 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。 在括号中规定字符串的长度。 varchar(size) 容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。 在括号中规定字符串的最大长度。 date(yyyymmdd) 容纳日期。

NOT NULL 约束

NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

PRIMARY KEY 约束

PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。

下面的 SQL 在 “Persons” 表创建时在 “Id_P” 列创建 PRIMARY KEY 约束:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (Id_P)
)

FOREIGN KEY 约束

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

CHECK 约束

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

下面的 SQL 在 “Persons” 表创建时为 “Id_P” 列创建 CHECK 约束。CHECK 约束规定 “Id_P” 列必须只包含大于 0 的整数。

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)

DEFAULT 约束

DEFAULT 约束用于向列中插入默认值

下面的 SQL 在 “Persons” 表创建时为 “City” 列创建 DEFAULT 约束:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)

CREATE INDEX 语句

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

您可以在表中创建索引,以便更加快速高效地查询数据。
用户无法看到索引,它们只能被用来加速搜索/查询。
注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

在表上创建一个简单的索引。允许使用重复的值:

CREATE INDEX index_name
ON table_name (column_name) 可以有多个column

在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。

CREATE UNIQUE INDEX index_name
ON table_name (column_name1,column_name2)

DROP

DROP 语句,可以轻松地删除索引、表和数据库。

使用 DROP INDEX 命令删除表格中的索引。

DROP INDEX index_name ON table_name

DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除)

DROP TABLE 表名称

DROP DATABASE 语句用于删除数据库:

DROP DATABASE 数据库名称

ALTER TABLE 语句

如需在表中添加列,请使用下列语法:

ALTER TABLE table_name
ADD column_name datatype

要删除表中的列,请使用下列语法

ALTER TABLE table_name 
DROP COLUMN column_name

要改变表中列的数据类型,请使用下列语法:

ALTER TABLE table_name
ALTER COLUMN column_name datatype

Date 函数

NULL 值

NULL 值是遗漏的未知数据。
默认地,表的列可以存放 NULL 值。
IS NULL 和 IS NOT NULL 操作符。

SQL 服务器 - RDBMS

现代的 SQL 服务器构建在 RDBMS 之上。

DBMS - 数据库管理系统(Database Management System)

数据库管理系统是一种可以访问数据库中数据的计算机程序。
DBMS 使我们有能力在数据库中提取、修改或者存贮信息。
不同的 DBMS 提供不同的函数供查询、提交以及修改数据。

RDBMS - 关系数据库管理系统(Relational Database Management System)

关系数据库管理系统 (RDBMS) 也是一种数据库管理系统,其数据库是根据数据间的关系来组织和访问数据的。
20 世纪 70 年代初,IBM 公司发明了 RDBMS。
RDBMS 是 SQL 的基础,也是所有现代数据库系统诸如 Oracle、SQL Server、IBM DB2、Sybase、MySQL 以及 Microsoft Access 的基础。

SQL 函数

SQL 拥有很多可用于计数和计算的内建函数。

内建 SQL 函数的语法是:

SELECT function(列) FROM 表
AVG 函数

AVG 函数返回数值列的平均值。NULL 值不包括在计算中。

SELECT AVG(column_name) FROM table_name
COUNT() 函数

COUNT() 函数返回匹配指定条件的行数,NULL 不计入。

SELECT COUNT(column_name) FROM table_name

SQL COUNT(*) 语法返回表中的记录数:

SELECT COUNT(*) FROM table_name

COUNT(DISTINCT column_name) 语法返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name
FIRST() 函数

FIRST() 函数返回指定的字段中第一个记录的值。

SELECT FIRST(column_name) FROM table_name
LAST() 函数

LAST() 函数返回指定的字段中最后一个记录的值。

SELECT LAST(column_name) FROM table_name
MAX() 函数、MIN() 函数

返回一列中的最大、小值。NULL 值不包括在计算中。

SELECT MIN(column_name) FROM table_name
SUM() 函数

SUM 函数返回数值列的总数(总额)。

SELECT SUM(column_name) FROM table_name
GROUP BY 语句

GROUP BY