SQL Server数据库基本操作(一)
基本表的定义、删除与修改
创建数据库
CREATE DATABASE STUDENT
1.创建基本表
基本语法:
CREATE TABLE <表名> ( <列名> <数据类型>[ <列级完整性约束条件> ] [,<列名> <数据类型>[ <列级完整性约束条件>] ] ... [,<表级完整性约束条件> ] );
下面将用一个例子来学习整个流程: 学生表Student
CREATE TABLE Student /* 这里模式默认为 dbo*/ ( Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件,Sno是主码*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );
课程表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*/ );
学生选课表 SC
CREATE TABLE SC ( Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, /* 主码由两个属性构成,必须作为表级完整性进行定义*/ PRIMARY KEY (Sno,Cno), /* 表级完整性约束条件,Sno是外码,被参照表是Student */ FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 表级完整性约束条件, Cno是外码,被参照表是Course*/ FOREIGN KEY (Cno) REFERENCES Course(Cno) );
2.修改基本表
基本语法:
ALTER TABLE <表名> [ ADD[COLUMN] <新列名> <数据类型> [ 完整性约束 ] ] [ ADD <表级完整性约束>] [ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ] [ DROP CONSTRAINT<完整性约束名>[ RESTRICT | CASCADE ] ] [ALTER COLUMN <列名><数据类型> ] ;
(1)向Student表增加“入学时间”列S_entrance,其数据类型为日期型
ALTER TABLE Student ADD S_entrance DATE; /*不管基本表中原来是否已有数据,新增加的列一律为空值NULL*/
(2)将年龄的数据类型由字符型(这里原来的数据类型是SMALLINT)改为整数
ALTER TABLE Student ALTER COLUMN Sage INT; /*只需声明要改成什么类型即可,不需写出原来的类型*/
(3)增加课程名称必须取唯一值的约束条件
ALTER TABLE Course ADD UNIQUE(Cname);
3.删除基本表
DROP TABLE <表名>[RESTRICT| CASCADE];
删除Student表
DROP TABLE Student CASCADE;
若表上建有与它相关的东西,使用RESTRICT时表不能被删除;使用CASCADE时可以删除表,视图也自动删除。 创建一个基于Student的视图 IS_Student:
CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept=IS;
尝试使用RESTRICT删除:
DROP TABLE Student RESTRICT;
DBMS提示信息:
–ERROR: cannot drop table Student because other objects depend on it
如果选择CASCADE,可删除该表,视图自动被删除
DROP TABLE Student CASCADE;
DBMS提示信息:
–NOTICE: drop cascades to view IS_Student
SQL Server中不支持CASCADE/RESTRICT关键字,所以删除只需输入:
DROP TABLE Student;