【例4.3 】创建大学教学管理数据库,数据库名为JXGL,其主数据文件逻辑名称为JXGL_ data,数据文件的操作系统文件名称为JXGL.mdf,数据文件初始大小为5 MB,最大值为200 MB,以5%的增量增加。
日志逻辑文件名称为JXGL_log,日志的操作系统文件名称为JXGL.ldf,日志文件初始大小为5 MB,可按2 MB增量增加,最大值为50 MB。
CREATE DATABASE JXGLON( NAME = JXGL_data, //默认为主数据文件FILENAME = '''+ @data_path + 'JXGL.mdf'',SIZE = 5,MAXSIZE = 200,FILEGROWTH = 5% )LOG ON( NAME = JXGL_log,FILENAME = '''+ @data_path + 'JXGL.ldf'',SIZE = 5MB,MAXSIZE = 50MB,FILEGROWTH = 2MB )【例】创建test数据库,包含一个主文件组和两个次文件组。
CREATE DATABASE testONPRIMARY /*定义在主文件组上的文件*/( NAME=pri_file1,FILENAME=' C:\Program Files\Microsoft SQL Server\ MSSQL\Data \pri_file1.mdf ',SIZE=10,MAXSIZE=50,FILEGROWTH=15%),( NAME=pri_file2,FILENAME=' C:\Program Files\Microsoft SQL Server\MSSQL\Data \pri_file2.ndf ',SIZE=10,MAXSIZE=50,FILEGROWTH=15%),FILEGROUP Grp1 /*定义在次文件组Grp1上的文件*/( NAME=Grp1_file1,FILENAME=' C:\Program Files\Microsoft SQL Server \MSSQL\Data \ Grp1_file1.ndf ',SIZE=10,MAXSIZE = 50,FILEGROWTH=5),FILEGROUP Grp2 /*定义在次文件组Grp2上的文件*/( NAME = Grp2_file1,FILENAME=' C:\Program Files\Microsoft SQL Server\MSSQL\Data \ Grp2_file1.ndf ',SIZE=10,MAXSIZE=50,FILEGROWTH=5),LOG ON /*定义事务日志文件*/( NAME='test_log',FILENAME=' C:\Program Files\Microsoft SQL Server\MSSQL\Data \test_log.ldf ',SIZE=5,MAXSIZE=25,FILEGROWTH=5 )GO例:在原有数据库的基础上增加一个文件组date1,添加一个新文件并加入到文件组date1中ALTER DATABASE stuDBADD FILEGROUP date1GOALTER DATABASE stuDBADD FILE(NAME='stuDB_data1', --主数据文件的逻辑名FILENAME='D:\project\stuDB_data1.ndf', --主数据文件的物理名SIZE=5mb, --主数据文件初始大小MAXSIZE=100mb, --主数据文件增长的最大值FILEGROWTH=15% --主数据文件的增长率)TO FILEGROUP date1GO【例】删除已经创建的“学生管理数据库”。
DROP DATABASE 学生管理数据库GO例:在xsgl数据库中创建kc表。
USE xsglGOCREATE TABLE kc(课程号char(4) PRIMARY KEY,课程名char(16) not null,学分smallint,学时数smallint)GO【例】在xs表的“专业”列和“姓名”列上创建名为“IX_zyxm”的非聚集、复合索引。
运行如下命令。
CREATE NONCLUSTERED INDEX IX_zyxm ONxs (专业,姓名)GO--查看和维护索引信息EXEC sp_helpindex <表名>--删除索引DROP INDEX 索引名[,...] ON 表名【例】向xs表中添加如表4-1所示字段USE xsglGOALTER TABLE xsADD 电话CHAR(8)NULLADD 电子邮件CHAR(40) NULLGO【例】将xs表中的电子邮件字段的列长改为20。
ALTER TABLE xsALTER COLUMN 电子邮件CHAR(20) NULL【例】在SC表中增加完整性约束定义,使grade在0-100之间。
ALTER TABLE SCADD CONSTRAINT grade_CHK CHECK(gradeBETWEEN 0 AND 100)【例】将xs表中的电话列删除。
ALTER TABLE xs DROP COLUMN 电话【例】查询所有女生的信息并将结果保存在名为“女生表”的数据表中。
USE xsglGOSELECT * INTO 女生表FROM xsWHERE 性别='女'【例】查询所有男生的信息并将结果存入临时表中。
USE xsglSELECT *INTO #TEMPDBFROM xsWHERE 性别='男'要查看临时表的内容可用下面的语句:SELECT * FROM #TEMPDB【例】查询所有学生的学号,姓名及年龄。
USE xsglGOSELECT 学号,姓名,年龄=DATEDIFF(YY,出生时间,GETDATE())FROM xsGO【例】查询xs表中前5条记录USE xsglGOSELECT TOP 5 *FROM xsGO【例】在cj表中求每门课程成绩大于90分的人数,并显示统计的明细。
USE xsglGOSELECT *FROM cjWHERE 成绩>=90ORDER BY 课程号COMPUTE COUNT(学号) BY 课程号GO【例】用命令方式通过视图修改王丹同学的“计算机基础”课成绩,将成绩改为91分,并查看修改结果。
具体操作命令如下。
UPDATE 电子商务专业学生成绩视图SET 成绩=91WHERE 姓名='王丹'AND 课程名='计算机基础'GOSELECT * FROM 电子商务专业学生成绩视图WHERE 姓名='王丹' AND 课程名='计算机基础'GO例5.1图1.11所示的大学教学管理数据库中的专业关系SS,可用如下的表定义语句定义:CREATE TABLE SS(SCODE# CHAR(5) PRIMARY KEY,SSNAME VARCHAR(30) NOT NULL);例5.2图1.11所示的大学教学管理数据库中的学生关系表S,可用如下的表定义语句定义:CREATE TABLE S(S# CHAR(9) PRIMARY KEY,SNAME CHAR(10) NOT NULL,SSEX CHAR(2)CHECK(SSEX IN (′男′,′女′)),SBIRTHIN DATE NOT NULL,PLACEOFB CHAR(16),SCODE# CHAR(5) NOT NULL,CLASS CHAR(5) NOT NULL);例:教学管理数据库系统中的学习关系SC。
CREATE TABLE SC(S# CHAR(9),C# CHAR(7),GRADE INT,PRIMARY KEY(S#,C#));例5.7给专业表SS增加一个新属性NOUSE_COLUMN,设其数据类型为NUMERIC(8,1)。
语句应为:ALTER TABLE SS ADD NOUSE_COLUMNNUMERIC(8,1);例5.8删除专业表SS中增加的属性NOUSE_COLUMN的两种删除语句形式分别为:ALTER TABLE SS DROP NOUSE_COLUMN CASCADE;ALTER TABLE SS DROP NOUSE_COLUMN RESTRICT;例5.9将专业表SS中的专业名称SSNAME(30)修改为SSNAME(40)(即长度增加10)的列修改语句:ALTER TABLE SS MODIFY SSNAME VARCHAR(40);例:给学习关系SC中插入王丽丽同学(学号为200401003)学习计算机网络课(课程号为C403001)的成绩(89分)。
INSERT INTO SC(S#,C#,GRADE)VALUES(’200401003’,’C403001’,89);例5.12 写出将学生关系S中的学生名字“王丽丽”(学号为200401003)改为“王黎丽”的数据修改语句。
UPDATE SSET SNAME='王黎丽'WHERE S#='200401003';例5.13写出将所有女同学的专业改为S0404的数据修改语句。
UPDATE SSET SCODE# ='S0404'WHERE SSEX='女';例5.14从学生关系S中删除学号为200403001的学生的信息。
DELETE FROM SWHERE S# ='200403001';例5.15删除专业关系中的全部信息。
DELETE FROM SS;例5.19查询所有学生所学课程的最高分数、最低分数和平均分数。
SELECT MAX(GRADE) AS 最高分数,MIN(GRADE) AS 最低分数,AVG(GRADE) AS 平均分数FROM SC;例5.20 写出查询所有学习了计算机网络课(课程号为C403001)的学生的学号和成绩的查询语句。
学习关系模式:SC(S#,C#,GRADE)SELECT S#,GRADEFROM SCWHERE C# =´C403001´;例5.21查询选修了计算机网络课(课程号为C403001)或信息安全技术课(课程号为C403002)的学生的学号。
SELECT S#FROM SCWHERE C# =´C403001´OR C# =´C403002´;例5.22查询年龄在21岁至28岁之间学生的基本信息。