在SQL Server中用代码创建数据库、 创建表、创建主外键等SQL Server2008

本文介绍如何在SQLServer2008中创建数据库和表,并通过具体实例详细展示了创建过程,包括主外键设定、索引定义、数据插入与更新等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在SQL Server中用代码创建数据库SQL Server2008

1.创建数据库  学生信息数据库创建实验一.sql

CREATE database 学生信息_实验一 on

(

/*--数据文件的具体描述--*/

     name='stuDB_data',  -- 主数据文件的逻辑名称

     filename='D:\Database\stuDB_data.mdf', -- 主数据文件的物理名称

     size=5mb, --主数据文件的初始大小

     maxsize=100mb, -- 主数据文件增长的最大值

    filegrowth=15%--主数据文件的增长率

    )

log on

(

/*--日志文件的具体描述,各参数含义同上--*/

    name='stuDB_log',

   filename='D:\Database\stuDB_log.ldf',

  size=2mb,  

  filegrowth=1mb

  )


2.创建表:学生,课程,选课,系部信息表创建.sql

USE 学生信息_实验一

 GO

 CREATE table Student

 (

    SNO        CHAR(20) primary key,

    SNAME      CHAR(20)  not null,

    AGE        INT       not null,

    SEX        CHAR(2)   not null,

    SDEPNO     CHAR(20) NOT NULL

)

go

CREATE table Course

(

    CNO        CHAR(20) primary key,

    CNAME      CHAR(20)  not null,

    Cpno       CHAR(20)  Foreign key (Cpno)references Course(Cno),

    credit      int      not null,

)

GO

CREATE table SC

(

    SNO        CHAR(20) primary key,

    CNO        char(20)  not null,

    grade      int      not null,

)

GO

CREATE table Department

(

    SDEPNO      CHAR(20) primary key,

    DNAME      CHAR(20)  not null,

    DHEAD      CHAR(20)   not null,

)

3.指明数据库表的主外键以及表之间的关系

         主外键关系

数据库表名

主键

外键

Student

SNO

SDEPNO

Course

CNO

 

SC

SNO

CNO

Department

SDEPNO

 

4.输入数据语句    输入数据.sql

--truncate   table student --清空数据表

--插入学生信息内容

INSERT intostudent

(sno,sname,age,sex,SDEPNO)VALUES(132054101,'刘1',20,'男','D1')

--插入课程信息内容

--truncate   table Course --清空数据表

INSERT INTO Course

(CNO,CNAME,Cpno,credit)VALUES('c1','计算机组成原理','数电',2);

INSERT INTO Course

(CNO,CNAME,Cpno,credit)VALUES('c2','大学英语','高中英语',2);

INSERT INTO Course

(CNO,CNAME,Cpno,credit)VALUES('c3','高数','数学',2);

INSERT INTO Course

(CNO,CNAME,Cpno,credit)VALUES('c4','微积分','数学',2);

INSERT INTO Course

(CNO,CNAME,Cpno,credit)VALUES('c5','数据库','数学',2);

INSERT INTO Course

(CNO,CNAME,Cpno,credit)VALUES('c6','网络原理','数电',2);

INSERT INTO Course

(CNO,CNAME,Cpno,credit)VALUES('c7','c语言','数学',2);

 

--插入学生选课信息内容

INSERT INTO SC

(sno,cno,grade)VALUES('132054101','c1',80);

INSERT INTO SC

(sno,cno,grade)VALUES('132054102','c1',75);

INSERT INTO SC

(sno,cno,grade)VALUES('132054103','c2',96);

5. 定义索引,使用update、delete修改和删除表中的一些数据

--设置唯一索引以及删除索引

CREATE uniqueindex departno_index on department(SDEPNO asc)

DROP INDEXdepartno_index ON Department;

--修改表

--添加新列

ALTER tabledepartment add DHEAD INT ;

ALTER tabledepartment add depa_date date not null;

--修改列类型

ALTER tabledepartment alter column dhead char(10);

--修改列名

EXEC sp_rename'department.[dd]','DHead'

--删除列

ALTER tabledepartment drop column dhead;

 

--修改主外键

ALTER table Courseadd constraint FK_Course_Course foreign key(cpno) references Course(cno);

--修改student表的数据

--更新数据

UPDATE Student SETAGE=22;

UPDATEStudent SET AGE=AGE-1;

INSERT INTOStudent(SNO,SNAME,SEX,AGE,SDEPNO)VALUES('132054201','小刘','男',22,'D1');

--删除数据

DELETE FROMStudent WHERE SNAME='小刘';

五、出现的问题及解决的方法

a)      主外键创建与数据输入的先后顺序冲突,解决方案:先录入一部分数据,再确定表与表之间的主外键关系

b)     Sql语句的不熟悉,解决方案:多熟悉sql语句,多实践

c)      SQLServer企业管理器和查询分析器工具的使用还是比较生疏,解决方案:多实践

d)     理应多掌握数据库常用的语句语法



1_创建admins以及插入该测试数据的脚本 DROP TABLE IF EXISTS `admins`; CREATE TABLE `admins` ( `管理员帐号` char(30) NOT NULL DEFAULT '', `用户名` char(30) NOT NULL DEFAULT '', `密码` char(8) DEFAULT NULL, PRIMARY KEY (`管理员帐号`,`用户名`), UNIQUE KEY `管理员帐号` (`管理员帐号`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `admins` VALUES ('admin1', '赵毅', '12345678'); INSERT INTO `admins` VALUES ('admin2', '陈丹', '123'); 2_创建inventory以及插入该测试数据的脚本 DROP TABLE IF EXISTS `inventory`; CREATE TABLE `inventory` ( `商品编号` int(10) unsigned NOT NULL DEFAULT '0', `商品名称` char(30) NOT NULL DEFAULT '', `当前库存量` int(10) unsigned NOT NULL, `最大库存量` int(10) unsigned NOT NULL, `最小库存量` int(10) unsigned NOT NULL, PRIMARY KEY (`商品编号`,`商品名称`), UNIQUE KEY `商品编号` (`商品编号`), UNIQUE KEY `商品名称` (`商品名称`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `inventory` VALUES ('15001', '计算机', '150', '500', '100'); INSERT INTO `inventory` VALUES ('15002', '打印机', '9', '30', '5'); INSERT INTO `inventory` VALUES ('15003', '扫描仪', '11', '20', '3'); INSERT INTO `inventory` VALUES ('15004', '路由器', '9', '20', '0'); INSERT INTO `inventory` VALUES ('15005', '交换机', '15', '30', '5'); 3_创建checkin以及插入该测试数据的脚本 DROP TABLE IF EXISTS `checkin`; CREATE TABLE `checkin` ( `序号` int(10) unsigned NOT NULL AUTO_INCREMENT, `耗材编号` int(10) unsigned DEFAULT NULL, `入库耗材` char(30) DEFAULT NULL, `数量` int(10) unsigned NOT NULL, `价格` float NOT NULL, `入库日期` date DEFAULT NULL, `入库时间` time DEFAULT NULL, PRIMARY KEY (`序号`), KEY `耗材编号` (`耗材编号`,`入库耗材`), CONSTRAINT `checkin_ibfk_1` FOREIGN KEY (`耗材编号`, `入库耗材`) REFERENCES `inventory` (`商品编号`, `商品名称`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; INSERT INTO `checkin` VALUES ('1', '15002', '打印机', '6', '2000', '2015-08-14', '15:59:12'); INSERT INTO `checkin` VALUES ('2', '15004', '路由器', '2', '3000', '2015-08-16', '11:33:55'); INSERT INTO `checkin` VALUES ('3', '15001', '计算机', '30', '2500', '2015-11-13', '15:30:50'); INSERT INTO `checkin` VALUES ('4', '15004', '路由器', '4', '2500', '2015-11-13', '08:33:12'); 4_创建checkout以及插入该测试数据的脚本 DROP TABLE IF EXISTS `checkout`; CREATE TABLE `checkout` ( `序号` int(10) unsigned NOT NULL AUTO_INCREMENT, `耗材编号` int(10) unsigned DEFAULT NULL, `出库耗材` char(30) DEFAULT NULL, `数量` int(10) unsigned NOT NULL, `库存管理员` char(30) DEFAULT NULL, `出库负责人` char(30) DEFAULT NULL, `出库日期` date DEFAULT NULL, `出库时间` time DEFAULT NULL, PRIMARY KEY (`序号`), KEY `耗材编号` (`耗材编号`,`出库耗材`), KEY `库存管理员` (`库存管理员`,`出库负责人`), CONSTRAINT `checkout_ibfk_1` FOREIGN KEY (`耗材编号`, `出库耗材`) REFERENCES `inventory` (`商品编号`, `商品名称`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `checkout_ibfk_2` FOREIGN KEY (`库存管理员`, `出库负责人`) REFERENCES `admins` (`管理员帐号`, `用户名`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值