SQL第一次实验
- 开启小问题
- 新建数据库用户名
- 模式的定义和删除
- 基本表的定义。
- 基本表的修改
- 基本表的删除
开启小问题
:刚开始的时候不知道为什么连接不上了,就是下面这个样子。
解决方法是打开SQL-server的配置管理器,将后缀是MS的那个启动模式修改为启动,就可以连接了。
新建数据库用户名
下面是这次实验的主要内容了
一、新建数据库,用户名
1.先新建一个数据库
可以直接右键在数据库处新建,也可以点击新建查询后输入创建数据库的代码,再执行,刷新后就能看到新建的数据库。
2.新建用户名,依次在刚新建的数据库下找到安全性,用户,新建用户WANG.
登录名选择浏览中的第一个
模式的定义和删除
二、模式的定义和删除
1.为用户WANG定义一个学生-课程模式S-T;
输入代码后执行,刷新后在架构处看到新建的S-T即成功。
CREATE SCHEMA "S-T" AUTHORIZATION WANG;
2.CREATE SCHEMA AUTHORIZATION WANG;
模式名没有指定的时候,隐含为用户名WANG。
在实验中显示的默认模式是dbo。
3.为用户WANG创建一个模式TEST,并且在其中定义一个表TAB1。
CREATE SCHEMA TEST AUTHORIZATION WANG//紧接着模式建表
CREATE TABLE TAB1(COL1 SMALLINT,//2个字节的整数
COL2 INT,//4个字节的整数
COL3 CHAR(20),
COL4 NUMERIC(10,3),//总位数为10,小数点后为3位
COL5 DECIMAL(5,2)//同上
);
刷新后在表中看到新建的表即成功。
继续建立表2
如果不写模式名建表的话,默认是dbo模式
建立在TEST模式下
CREATE TABLE TEST.TAB2(COL1 SMALLINT
);
4.删除模式
DROP SCHEMA ZHANG CASCADE;
CASCADE是把模式中所有的数据库对象全部删除。但是执行时显示有语法错误
而在我们使用的SQL server 中对CASCADE和RESTRICT是不支持的,所以要全部删除的话应该先把模式里与它有连接的表,视图等删干净,再删除。
代码直接把CASCADE去掉即可。
DROP TABLE TEST.TAB1;
DROP TABLE TEST.TAB2;
DROP SCHEMA TEST ;
基本表的定义。
三、基本表的定义。
1.建立一个”学生“表Student;
CREATE TABLE Student
(Sno CHAR(9)PRIMARY KEY,//列级完整性条件,主码
Sname CHAR(20)UNIQUE,//唯一
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
刷新后显示表即建表成功
2.建立一个课程表Course
CREATE TABLE Course
(Cno CHAR(4)PRIMARY KEY,
Cname CHAR(40)NOT NULL,//不能取空值
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),
FOREIGN KEY(Cno)REFERENCES Course(Cno)
);
基本表的修改
四、修改基本表
1.向Student表增加”入学时间“列,其数据类型为日期型。
ALTER TABLE Student ADD S_entrance DATE;
2.将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
ALTER TABLE Student ALTER COLUMN Sage INT;//改类型必须加COLUMN
3.增加课程名称必须取唯一值的约束条件
ALTER TABLE Course ADD UNIQUE(Cname);
基本表的删除
五、删除基本表
1.删除Student表
用DROP删除时显示被一个外键约束
因为刚才在表CS中对Sno设置了外键,所以去SC的键下找到Sno删除,再执行即可。
———————————————————————————————————————
这次的实验刚开始做时出现了很多小错误,而且和书上的一些使用有的不一样需要自己去查,希望第二次可以顺利一些。
`