1. SQL: 结构化查询语言,是关系数据库的标准语言 SQL是在1974年由Boyce和Chamberlin提出,在IBM公司研发 目前没一个DBS支持SQL标准的所有概念+特征 2. 特点:
3. SQL基本概念
注意:
学生-课程模式 S-T :
示例:
其中,SQL不支持修改模式和视图。
创建定义: CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义子句>|<视图定义子句>|<授权定义子句>] 删除定义: DROP SCHEMA <模式名> <CASCADE | RESTRICT> CASCADE(级联):删除模式的同时把该模式中所有的数据库对象全部删除 RESTRICT(限制):如果该模式定义了下属的数据库对象(如表、视图等),则拒绝删除 定义模式实际上定义了一个命名空间,在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。 示例: 创建示例: 【1】为用户WANG定义一个学生-课程模式S-T CREATE SCHEMA “S-T” AUTHORIZATION WANG; 【2】 CREATE SCHEMA AUTHORIZATION WANG; 该语句没有指定<模式名>,则<模式名>隐含为<用户名>,即为WANG 【3】为用户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) ); 删除示例: 【1】DROP SCHEMA ZHANG CASCADE; 删除模式ZHANG 同时该模式中定义的表TAB1也被删除
1. 创建: CREATE TABLE <表名> (<列名> <数据类型>[ <列级完整性约束条件> ], [<列名> <数据类型>[ <列级完整性约束条件>] ] , … [<表级完整性约束条件> ] ); 说明:
2. 修改 ALTER TABLE <表名> [ ADD[COLUMN] <新列名> <数据类型> [ 完整性约束 ] ] [ ADD <表级完整性约束>] [ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ] [ DROP CONSTRAINT<完整性约束名>[ RESTRICT | CASCADE ] ] [ALTER COLUMN <列名><数据类型> ] ; 说明:
3. 删除 DROP TABLE <表名>[RESTRICT| CASCADE]; 说明:
示例: 创建示例: 【1】建立“学生”表Student。学号是主码,姓名取值唯一。 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件,Sno是主码*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) ); 【2】建立一个“课程”表Course CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) /*Cpno是外码,被参照表是Course,被参照列是Cno*/ ); 【3】建立一个学生选课表SC CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno,Cno), /* 主码由两个属性构成,必须作为表级完整性进行定义*/ FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 表级完整性约束条件,Sno是外码,被参照表是Student */ FOREIGN KEY (Cno)REFERENCES Course(Cno) /* 表级完整性约束条件, Cno是外码,被参照表是Course*/ ); 修改示例: 【1】 向Student表增加“入学时间”列,其数据类型为日期型 ALTER TABLE Student ADD S_entrance DATE; 注:不管基本表中原来是否已有数据,新增加的列一律为空值 【2】 将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。 ALTER TABLE Student ALTER COLUMN Sage INT; 【3】 增加课程名称必须取唯一值的约束条件。 ALTER TABLE Course ADD UNIQUE(Cname); 删除示例: 【1】删除Student表 DROP TABLE Student CASCADE; 基本表定义被删除,数据被删除 表上建立的索引、视图、触发器等一般也将被删除 【2】若表上建有视图,选择RESTRICT时表不能删除;选择CASCADE时可以删除表,视图也自动删除。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept='IS'; DROP TABLE Student RESTRICT; --ERROR: cannot drop table Student because other objects depend on it 【3】如果选择CASCADE时可以删除表,视图也自动被删除 DROP TABLE Student CASCADE; --NOTICE: drop cascades to view IS_Student SELECT * FROM IS_Student; --ERROR: relation " IS_Student " does not exist
1. 关系:每个基本表都属于某个模式,一个模式包含多个基本表 2. 定义基本表所属模式
建立索引的目的:加快查询速度 关系数据库管理系统中常见索引:
特点:
1. 创建: CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…); 说明:
2. 修改 ALTER INDEX <旧索引名> RENAME TO <新索引名 3. 删除 DROP INDEX <索引名>; 删除索引时,系统会从数据字典中删去有关该索引的描述。 示例: 创建示例: 【1】为学生-课程数据库中的Student,Course,SC三个表建立索引。Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 修改示例: 【2】将SC表的SCno索引名改为SCSno ALTER INDEX SCno RENAME TO SCSno; 删除示例: 【3】 删除Student表的Stusname索引 DROP INDEX Stusname;
数据字典是关系数据库管理系统内部的一组系统表
数据库SQL Server领域就像一片未被勘探的信息大海,引领你勇敢踏入数据科学的神秘领域。这是一场独特的学习冒险,从基本概念到算法实现,逐步揭示更深层次的模式分析、匹配算法和智能模式识别的奥秘。渴望挑战数据库SQL Server中的模式匹配学习路径和掌握信息领域的技术?不妨点击下方链接,一同探讨更多数据科学的奇迹吧。我们推出了引领趋势的💻 数据科学专栏:《数据之谜 | 数据奇迹解码》,旨在深度探索数据库SQL Server中模式匹配技术的实际应用和创新。🌐🔍