go
create database stuDB on primary(
name = 'stuDB_data', --主数据库的逻辑名
filename = 'e:\stuDB_data.mdf', --主数据库的物理路径
size = 5mb, --主数据库的初始大小
maxsize = 100mb, --主数据库的最大空间
filegrowth = 15% --主数据库的文件增长比
)
name = 'stuDB_log', --数据库日志的逻辑名
filename = 'e:\stuDB_log.ldf', --数据库日志的物理路径
size = 5mb, --数据库日志的初始大小
filegrowth = 15% --数据库日志文件的增长比
)
go
go
drop database stuDB
go
--------------------------------表格基本处理部分---------------------------------
use stuDB
IF EXISTS(SELECT * FROM sysobjects WHERE name='stuInfo') DROP TABLE stuInfo;
CREATE TABLE stuInfo(
stuNO INT IDENTITY(100001,1) NOT NULL PRIMARY KEY , -- 学号
stuName VARCHAR(45), -- 姓名
stuAge TINYINT, -- 年龄
stuID NUMERIC(18,0), -- ×××号
stuAddreass TEXT, -- 家庭地址
stuSeat int -- 座位号
)
go
INSERT INTO stuInfo VALUES('杨荣凯',21,152127199008250012,'内蒙古×××县',1);
INSERT INTO stuInfo VALUES('王冰',22,988127199008250012,'湖北黄石',2);
INSERT INTO stuInfo VALUES('胡兵',23,254136199008250012,'湖北孝感',3);
INSERT INTO stuInfo VALUES('吕巧燕',20,785412199008250012,'湖北宜昌',4);
go
SELECT * FROM stuInfo ;
UPDATE stuInfo SET stuName='吕巧艳' WHERE stuID=785412199008250012;
DELETE FROM stuInfo WHERE stuNO=100005;
IF EXISTS(SELECT * FROM sysobjects WHERE name='stuMark')
DROP TABLE stuMark;
CREATE TABLE stuMark(
examNO CHAR(6) PRIMARY KEY, -- 考号
labExam NUMERIC(4,1), -- 机试成绩
writtenExam NUMERIC(4,1) -- 笔试成绩
)
go
SELECT * FROM stuMark;
INSERT INTO stuMark VALUES('WP0001',100,100);
INSERT INTO stuMark VALUES('WP0002',33,44);
INSERT INTO stuMark VALUES('WP0003',69,55.5);
INSERT INTO stuMark VALUES('WP0004',79.9,33.3);
UPDATE stuMark SET writtenExam=60 WHERE examNO='WP0004';
DELETE FROM stuMark WHERE examNO='WP0005';
-------------------------------------字段处理部分----------------------------------------
-->以下操作无数据时可以任意转换,有数据时,只可以同类型小单位向大单位转换 反之不能
ALTER TABLE stuInfo ALTER COLUMN stuSeat TINYINT;
ALTER TABLE stuInfo Alter COLUMN stuSeat INT;
ALTER TABLE stuInfo ADD myUser int;
ALTER TABLE stuInfo DROP COLUMN myUser;
ALTER TABLE stuMark ADD CONSTRAINT CK_LABEXAM CHECK (labExam BETWEEN 0 AND 100);
ALTER TABLE stuMark ADD CONSTRAINT CK_WRITTENEXAM CHECK (writtenExam BETWEEN 0 AND 100);
-->测验
INSERT INTO stuMark VALUES('WP0005',101,4);
INSERT INTO stuMark VALUES('WP0005',4,101);
SELECT * FROM stuMark;
-->向stuInfo表格中stuSeat字段中添加一个唯一键约束
ALTER TABLE stuInfo ADD CONSTRAINT UK_STUSEAT UNIQUE (stuSeat);
-->测试
INSERT INTO stuInfo VALUES('王华',21,988127199008250011,'湖北仙桃',1);
SELECT * FROM stuInfo;
-->向stuMark添加外间使stuMark表变成从表
-->1.因为成绩表与学号一对一的关系,所以要创建一个字段用于和学生信息表关联
ALTER TABLE stuMark ADD stuNO INT;
-->2.创建外键
ALTER TABLE stuMark ADD CONSTRAINT FK_STUINFO_STUNO FOREIGN KEY (stuNO) REFERENCES stuInfo (stuNO);
-->3.测试
INSERT INTO stuMark VALUES('WP0001',100,100,100001); -->成功
INSERT INTO stuMark VALUES('WP0001',100,100,1); -->失败
-->额外 级联删除
-->1.删除外键
ALTER TABLE stuMark DROP CONSTRAINT FK_STUINFO_STUNO;
-->2.创建级联删除
ALTER TABLE stuMark ADD CONSTRAINT FK_STUINFO_STUNO FOREIGN KEY (stuNO) REFERENCES stuInfo (stuNO) ON DELETE CASCADE;
-->3.测试
DELETE FROM stuInfo WHERE stuNO=100001; --要删除主表数据 才有级联效果
SELECT * FROM stuInfo;
SELECT * FROM stuMark;
-->向stuInfo表格中添加默认约束
-->1.创建一个国家字段
ALTER TABLE stuInfo ADD stuCountry VARCHAR(50);
-->2.设置默认约束
ALTER TABLE stuInfo ADD CONSTRAINT DF_STUINFO DEFAULT '中国' FOR stuCountry;
-->3.测试
INSERT INTO stuInfo(stuName,stuAge,stuID,stuAddreass,stuSeat) VALUES ('天天',21,123321157854674354,'天津',2);
SELECT * FROM stuInfo;