SQL语言基础
SQL 功 能 动 词
数 据 定 义 CREATE,DROP,ALTER
数 据 查 询 SELECT
数 据 操 纵 INSERT,UPDATE DELETE
数 据 控 制 GRANT,REVOKE

创建数据库
◼ CREATE DATABASE
◼ [ ON[PRIMARY]
◼ [[,…N] ]
◼ [,[,…N]]
◼ ]
◼ [LOG ON { [,…N]}]
◼ 其中,[[,…N]] 表示设置文件属性,格式如下。
◼ ([NAME=逻辑文件名,]
◼ FILENAME=‘物理文件名称’
◼ [,SIZE=数据库文件的初始容量值]
◼ [,MAXSIZE={物理文件的最大容量值|UNLIMITED}]
◼ [,FILEGROWTH=增加容量值] ) [,…N]
◼ 其中[[,…N]] 表示设置文件组属性,格式如下。
◼ FILEGROUP 文件组名称 [DEFAULT] [,…N]
3.创建数据库
USE masterGOCREATE DATABASE student_MisON
( NAME =student_Data,FILENAME = 'c:\program files\microsoft sql
server\student_Mis_data.mdf',SIZE = 10,MAXSIZE = 50,FILEGROWTH = 5 )LOG ON( NAME = 'student_Log',FILENAME = 'c:\program files\microsoft sql
server\student_13Mis_log.ldf',SIZE = 5MB,MAXSIZE = 25MB,FILEGROWTH = 5MB )4. 定义基本表
CREATE TABLE 《表名》
( [ ] [, []] … [,]);
◼ :所要定义的基本表的名字
◼ :组成该表的各个属性(列)
◼ :涉及相应属性列的完整性 约束条件
◼ :涉及一个或多个属性列的 完整性约束条件
5.删除基本表
DROPTABLE ;
基本表删除 数据、表上的索引都删除 表上的视图往往仍然保留, 但无法引用
删除基本表时,系统会从数据字典中删去有关该 基本表及其索引的描述
(标准中没有,认为表建立后就永久存在)
◼ :要修改的基本表
◼ ADD子句:增加新列和新的完整性约束条件
◼ DROP子句:删除指定的完整性约束条件
◼ MODIFY子句:用于修改列名和数据类型
[例1] 建立一个“学生”表Student,它由学号 Sno、姓名Sname、性别Ssex、年龄Sage、所在系 Sdept五个属性组成。其中学号不能为空,值是 唯一的,为主键,并且姓名取值也唯一。 CREATE TABLE Student
(Sno CHAR(5) NOT NULL PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(1),
Sage INT,
Sdept CHAR(15));
[例2] 建立一个“学生选课”表SC,它由学号Sno、课程号 Cno,修课成绩Grade组成,其中(Sno, Cno)为主码。
◼ ◼ CREATE TABLE SC( Sno CHAR(5),
◼ ◼ ◼ Cno CHAR(3), Grade int, Primary key(Sno,Cno), CONSTRAINT Student_Report FOREIGN KEY(Sno) REFERENCES Student, CONSTRAINT Report_Course FOREIGN KEY(Cno) REFERENCES Course ◼ );
7. 建立与删除索引
◼ 建立索引是加快查询速度的有效手段
◼ 建立索引
◼ DBA或表的属主(即建立表的人)根据需要建立
◼
◼ 有些DBMS自动建立以下列上的索引 PRIMARY KEY
◼ UNIQUE ◼ 维护索引 ◼ DBMS自动完成 ◼ 使用索引
◼ DBMS自动选择是否使用索引以及使用哪些索引
建立索引语句格式
CREATE [UNIQUE][CLUSTER] INDEX ON ([][,[]]…);
◼ 用指定要建索引的基本表名字
◼ 索引可以建立在该表的一列或多列上,各列名之间用逗号 分隔
◼ 用指定索引值的排列次序,升序:ASC,降序:DESC。 缺省值:ASC
◼ UNIQUE表明此索引的每一个索引值只对应唯一的数据记录
◼ CLUSTER表示要建立的索引是聚簇索引,最多只能建立一 个 删除索引语句格式 DROP INDEX ;
[例3] 为学生-课程数据库中的Student,Course, SC三个表建立索引。其中Student表按学号升序建唯一 索引,Course表按课程号升序建唯一索引,SC表按学 号升序和课程号降序建唯一索引。在Student表的 Sname(姓名)列上建立一个聚簇索引,而且Student 表中的记录将按照Sname值的升序存放
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
CREATE CLUSTER INDEX Stusname ON Student(Sname);
