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;
经验分享 程序员 微信小程序 职场和发展