@[TOC]关系数据库语言SQL(上)
标准 | 发布日期 |
---|---|
SQL/86 ANSI ISO | 1986.10 |
SQL/89(FIPS 127-1) | 1989年 |
SQL/92 | 1992年 |
SQL99 | 1999年 |
SQL2003 | 2003年 |
1.综合统一
2.高度非过程化
3.面向集合的操作方式
4.以同一种语法结构提供多种使用方式
5.语言简洁,易学易用
表 (Table):SQL 中的表是关系型数据库的基本单元,它由行 (Row) 和列 (Column)组成。每列都有其特定的数据类型,如数字、字符串、日期等。行则是由列组成的一系列数据。
查询 (Query):SQL 查询是指对关系型数据库中的数据进行检索、筛选和排序等操作。查询可以包括SELECT,WHERE、ORDER BY 等子句。
插入 (Insertion):SQL 插入是指将新的行添加到关系型数据库表中。插入可以使用 INSERT INTO 语句。
更新 (Update):SQL 更新是指对关系型数据库表中的数据进行修改。更新可以使用 UPDATE 语句。
删除 (Deletion):SQL 删除是指从关系型数据库表中删除指定的行。删除可以使用 DELETE 语句。
关系(Relationship):SQL中的关系是指表之间的关联关系。两个表之间如果有一对一、一对多或多对多的关系,就可以使用关系型数据库中的外键和主键来定义。
表名 (Table Name):表名是关系型数据库表中的标识符。在 SQL 语句中,表名必须以大写字母开头。
列名 (Column Name):列名是关系型数据库表中的列标识符。在 SQL 语句中,列名必须以小写字母开头。
主码(PRIMARY KEY):主码是关系型数据库表中的唯一标识符,用于唯一地标识每行数据。主码可以使用数字、字母或下划线等形式来定义。
外码 (Foreign Key):外码是关系型数据库表中的引用键,用于连接两个表之间的关系。外码通常使用数字、字母或下划线等形式来定义。
学生-课程模式 S-T :
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
定义模式
内联代码片
。例:为用户ZHANG创建了一个模式TEST,并在其中定义了一个表TAB1
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1
(COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
删除模式
DROP SCHEMA <模式名>
CASCADE(级联)
例:删除模式ZHANG
DROP SCHEMA TEST CASCADE;(同时该模式中定义的表TAB1也被删除)
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ] …
[,<表级完整性约束条件> ] );
如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。
例:建立一个“课程”表Course
CREATE TABLE Course
( Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4) ,
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno)
);
方法一:在表名中明显地给出模式名
Create table “S-T”.Student(......); /*模式名为 S-T*/
Create table “S-T”.Cource(......);
Create table “S-T”.SC(......);
方法二:在创建模式语句中同时创建表
方法三:设置所属的模式
ALTER TABLE <表名>
[ ADD [<新列名> <数据类型>] [ 完整性约束 ] ]
[ DROP <完整性约束名> ]
[ ALTER COLUMN<列名> <数据类型> ];
MODIFY
约束(属性名)
例:向Student表增加“入学时间”列,其数据类型为日期型。
ALTER TABLE Student ADD S_entrance DATE;
DROP TABLE <表名>[RESTRICT/ CASCADE];
RESTRICT:删除表是有限制的。
CASCADE:删除该表没有限制。
例:删除Student表
DROP TABLE Student CASCADE ;
1.基本表定义被删除,数据被删除
2.表上建立的索引、视图、触发器等一般也将被删除
建立索引
建立索引的目的:加快查询速度
语句格式:
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
[ASC ]| DESC
UNIQUE---唯一索引,索引的每一个值对应唯一的数
据记录
CLUSTER---聚簇索引,索引项的顺序与表中记录的
物理顺序一致
例:在Student表的Sname(姓名)列上建立一个聚簇索引
CREATE CLUSTER INDEX Stusname
ON Student(Sname);
删除索引
语句格式:
DROP INDEX <索引名>;
删除索引时,系统会从数据字典中删去有关该索引的
描述。
例:删除Student表的Stusname索引
DROP INDEX Stusname;