第三章:关系数据库标准语言SQL
1、SQL语言的特点
1、综合统一。 2、高度非过程化。
3、面向集合的操作方式。 4、以同一种语法结构提供多种使用方式
5、语言简洁、易学易用。
2、SQL语言的数据查询,数据定义,数据操纵功能,这些分别有哪些SQL语句?
1、数据定义:定义数据库中的基本对象、模式(架构)定义、表定义、视图和索引。
注意:SQL(Oracle除外)一般不提供修改视图定义和索引定义的操作,需要先删除再重建
(1)模式:
定义模式:CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
例:CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1(COL1 SMALLINT, COL2 INT,COL3 CHAR(20),COL4 NUMERIC(10,3),COL5 DECIMAL(5,2));
为用户ZHANG创建了一个模式TEST,并在其中定义了一个表TAB1。
删除模式:DROP SCHEMA <模式名> <CASCADE|RESTRICT>
CASCADE(级联):删除模式的同时把该模式中所有的数据库对象全部删除
RESTRICT(限制); 没有任何下属的对象时 才能执行。
(2)表:
定义基本表:CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ] …
[,<表级完整性约束条件> ] );
列级完整性约束--涉及到该表的一个属性
-
- NOT NULL :非空值约束
- UNIQUE:唯一性(单值约束)约束
- PRIMARY KEY:主码约束
- DEFAULT <默认值>:默认(缺省)约束
- Check < (逻辑表达式) >:核查约束,定义校验条件
- NOT NULL :非空值约束
- UNIQUE:唯一性(单值约束)约束
- PRIMARY KEY:主码约束
- DEFAULT <默认值>:默认(缺省)约束
- Check < (逻辑表达式) >:核查约束,定义校验条件
表级完整性约束--涉及到该表的一个或多个属性。
-
- UNIQUE(属性列列表) :限定各列取值唯一
- PRIMARY KEY (属性列列表) :指定主码
- FOREIGN KEY (属性列列表) REFERENCES <表名> [(属性列列表)]
- Check(<逻辑表达式>) :检查约束
- PRIMARY KEY与 UNIQUE的区别?
例:建立“学生”表Student,学号是主码,姓名取值唯一
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,/*主码*/
Sname CHAR(20) UNIQUE, /* Sname取唯一值*/
Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));
数据类型
3、数据更新
(1)插入数据
插入元组
INSERT
[INTO] <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>] … )
功能:将新元组插入指定表中;新元组的属性列1的值为常量1,属性列2的值为常量2,…。
INTO子句:属性列的顺序可与表定义中的顺序不一致,但须指定列名;没有指定属性列,表示要插入的是一条完整的元组;指定部分属性列,未指定的属性列取空值,具有NOT NULL的属性列除外。
VALUES子句:提供的值必须与INTO子句匹配,值的个数,值的类型。
例:将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中
INSERT
INTO Student (Sno,Sname,Ssex,Sdept,Sage)
VALUES ('200215128','陈冬','男','IS',18);
例: 将学生张成民的信息插入到Student表中
INSERT
INTO Student
VALUES (‘200215126’, ‘张成民’, ‘男’,18,'CS');
例:插入一条选课记录( '200215128','1 ')。
INSERT
<