传智播客我的SqlServer脚本--很全面哦!

 

======================SqlServer大部分知识都在我这脚本里===============

如果你能把数据结构画出来的话,那么你就入门了!!呵呵!!

--查看konwyoumore库是否存在
USE master
IF exists(SELECT * FROM sysdatabases WHERE name='KnowYouMore')
BEGIN
DROP DATABASE knowyoumore;
END
GO
--创建konwyoumore数据库
CREATE DATABASE KnowYouMore
GO
USE KnowYouMore
GO
--创建角色表
CREATE TABLE roles
(
rno INT PRIMARY KEY IDENTITY(1,1),
rname VARCHAR(12) NOT NULL
);
GO
--创建注册表
CREATE TABLE users
(
uno INT PRIMARY KEY IDENTITY(1,1),
uname VARCHAR(32) NOT NULL UNIQUE,
upwd VARCHAR(32) NOT NULL ,
star INT,
trueName VARCHAR(16) NOT NULL,
rno INT FOREIGN KEY REFERENCES roles(rno)
);
GO
--创建班级表
CREATE TABLE classes
(
cno INT PRIMARY KEY IDENTITY(1,1),
cname VARCHAR(32) NOT NULL UNIQUE,
   cdescribe VARCHAR(100)
);
GO
--创建学生表
CREATE TABLE students
(
sno INT PRIMARY KEY IDENTITY(1,1),
sname VARCHAR(16) NOT NULL UNIQUE,
sex CHAR(2) NOT NULL CHECK(sex='男'or sex='女') DEFAULT('男'),
birth DATETIME NOT NULL DEFAULT getdate(),
nativeplace VARCHAR(16) NOT NULL,
address VARCHAR(100) NOT NULL,
QQNo VARCHAR(32) NOT NULL,
phoneNo VARCHAR(12) NOT NULL,
nowTerm VARCHAR(5) NOT NULL,
selfPic VARCHAR(100) DEFAULT '6666.jpg',
selfDescribe VARCHAR(100) NOT NULL,
cno INT FOREIGN KEY REFERENCES classes(cno)
);
GO
--创建教师表
CREATE TABLE teachers
(
tno INT PRIMARY KEY IDENTITY(1,1),
tname VARCHAR(16) NOT NULL UNIQUE,
sex CHAR(2) NOT NULL CHECK(sex='男'or sex='女') DEFAULT('男'),
birth DATETIME NOT NULL DEFAULT getdate(),
nativeplace VARCHAR(16) NOT NULL,
taddress VARCHAR(100) NOT NULL ,
tQQNo VARCHAR(32) NOT NULL,
tphoneNo VARCHAR(12) NOT NULL,
selfPic VARCHAR(100),
selfDescribe VARCHAR(100) NOT NULL,
nowTerm VARCHAR(5) NOT NULL,
cno INT FOREIGN KEY REFERENCES classes(cno)
);
GO
--创建意见表 每天学习评分
CREATE TABLE stuQuestion
(
sname VARCHAR(16),
cname VARCHAR(32) FOREIGN KEY REFERENCES classes(cname),
todayGoal INT NOT NULL,
konwledge VARCHAR(100) NOT NULL,
diffPoint VARCHAR(100) NOT NULL,
unknow VARCHAR(100) NOT NULL,
stuIdea VARCHAR(100),
mywords VARCHAR(800),
nowterm VARCHAR(100),
emdate DATETIME DEFAULT getdate(),
);
GO
--创建每天学习规划表
CREATE TABLE everyDayLayout
(
sname VARCHAR(16),
cname VARCHAR(32) FOREIGN KEY REFERENCES classes(cname),
konwledge VARCHAR(100) NOT NULL,
diffPoint VARCHAR(100) NOT NULL,
mywords VARCHAR(800),
myidea VARCHAR(200),
nowterm VARCHAR(100),
emdate DATETIME DEFAULT getdate(),
);
GO
--创建老师满意度表
CREATE TABLE oktoTea
(
tname VARCHAR(16) FOREIGN KEY REFERENCES teachers(tname) ON DELETE CASCADE ON UPDATE CASCADE,
choicecount INT DEFAULT 0,
choiceNo INT,-- 1-》很差 2-》一般 3-》较好 4-》不错
);
GO
--当有老师添加时就自动给生成四种状态的记录 -->触发器
CREATE TRIGGER addFourthingstoTeacher
ON teachers
AFTER INSERT
AS
DECLARE @tname VARCHAR(16)
SELECT @tname=tname FROM inserted;
INSERT INTO oktoTea VALUES(@tname,0,1);
INSERT INTO oktoTea VALUES(@tname,0,2);
INSERT INTO oktoTea VALUES(@tname,0,3);
INSERT INTO oktoTea VALUES(@tname,0,4);
GO
--查看老师满意度的视图
CREATE VIEW query_teaInfor
AS
SELECT tname '姓名', choicecount '票数',
CASE choiceNo
WHEN 1 THEN '很差'
WHEN 2 THEN '一般'
WHEN 3 THEN '很好'
WHEN 4 THEN '不错'
END '评价'
FROM oktoTea
GO
SELECT * FROM query_teaInfor
--创建学校满意度表
CREATE TABLE oktoSchool
(
choicecount INT DEFAULT 0,
choiceNo INT -- 1-》很差 2-》一般 3-》较好 4-》不错
);
GO
--创建学生的豆豆表
CREATE TABLE myBeans
(
sname VARCHAR(16) REFERENCES students(sname) ON DELETE CASCADE ON UPDATE CASCADE,
beancount INT DEFAULT 0
);
GO
--创建投豆豆表
CREATE TABLE sendBean
(
whosend VARCHAR(32),
sendwho VARCHAR(32),
reason VARCHAR(256),
emdate DATETIME DEFAULT getdate()
);
GO
--当有学生注册自动给生成个自己豆豆记录--》触发器
CREATE TRIGGER addMyBeanInfor
ON students
AFTER INSERT
AS
DECLARE @sname VARCHAR(16)
SELECT @sname=sname FROM inserted
INSERT INTO myBeans VALUES(@sname,0);
GO
--当有学生删除自动给消除自己豆豆记录信息--》触发器
CREATE TRIGGER deleteMyBeanInfor
ON students
AFTER DELETE
AS
DECLARE @sname VARCHAR(16)
SELECT @sname=sname FROM deleted
DELETE FROM myBeans WHERE sname=@sname ;
GO
--当有用户投豆豆给自己则豆豆数量加1--》触发器
CREATE TRIGGER addBeanCount
ON sendBean
AFTER INSERT
AS
DECLARE @name VARCHAR(32)
SELECT @name=sendwho FROM inserted
UPDATE myBeans SET beancount=beancount+1 WHERE sname=@name
GO
--当有用户被删除投豆豆信息删除--》触发器
--CREATE TRIGGER deleteBeanCount
--ON students
--AFTER DELETE
--AS
-- DECLARE @name VARCHAR(32)
-- SELECT @name=sendwho FROM deleted
-- DELETE FROM sendBean WHERE sname=@name
--GO

--------数据插入地带-----------------
--角色插入
INSERT INTO roles VALUES('学生');
INSERT INTO roles VALUES('教师');
INSERT INTO roles VALUES('校长');
SELECT * FROM roles
--用户插入
INSERT INTO users VALUES('飞跃无限','nibuzhidao',5000,'何骏飞',1);
INSERT INTO users VALUES('teacher','nihao',100,'杨莹',2);
SELECT * FROM users
--班级插入
INSERT INTO classes VALUES('02IT010808011','以后的精英,加油各位!');
SELECT * FROM classes
--学生插入
INSERT INTO students VALUES('何骏飞','男','1990-01-13','江西','江西省九江市彭泽县上十岭','394201098','15010831383','二期','6666.jpg','加油!明天会更好!',1);
INSERT INTO students VALUES('何飞','男','1990-01-13','江西','江西省九江市彭泽县上十岭','394201098','15010831383','二期','012.jpg','加油!明天会更好!',1);
SELECT * FROM students
--教师插入
INSERT INTO teachers VALUES('杨莹','女','1986-06-06','沈阳','沈阳某地方','12345678','15901211436','teaYang.jpg','大家加油!','二期',1);
SELECT * FROM teachers
--意见分析
INSERT INTO stuQuestion VALUES('何骏飞','02IT010808011',7,'学到了很多类','布局绝的不怎么好看','同步','让我们看些漂亮的布局','synchronized','二期','2008-11-11');
SELECT * FROM stuQuestion
--规划表
INSERT INTO everyDayLayout VALUES('何骏飞','02IT010808011','C#???','软件还不了解','synchronized','今天很热','二期','2008-11-11');
SELECT * FROM query_teaInfor
--满意度表
INSERT INTO oktoSchool VALUES(0,1);
INSERT INTO oktoSchool VALUES(0,2);
INSERT INTO oktoSchool VALUES(0,3);
INSERT INTO oktoSchool VALUES(0,4);
SELECT * FROM oktoSchool;
SELECT * FROM myBeans;
SELECT * FROM sendBean;
GO


---------------------------存储过程(学生版)--------------------------
--返回角色存储过程
CREATE PROCEDURE return_Roles
AS
BEGIN
SELECT rname FROM roles
END
GO
--返回班级名存储过程
CREATE PROCEDURE return_cname
AS
BEGIN
SELECT cname FROM classes
END
GO
--返回老师姓名存储过程
CREATE PROCEDURE return_tname
AS
BEGIN
SELECT tname FROM teachers
END
GO
--登录存储过程
CREATE PROCEDURE Query_user
@uname VARCHAR(32),
@upwd1 VARCHAR(32),
@rname VARCHAR(12),
@result INT OUTPUT
AS
BEGIN
IF exists(SELECT * FROM users WHERE uname=@uname )
BEGIN
   DECLARE @upwd2 VARCHAR(32),@rno1 INT,@rno2 INT
   SELECT @rno1=rno FROM roles WHERE rname=@rname
   SELECT @upwd2=upwd,@rno2=rno FROM users WHERE uname=@uname
   IF @upwd2=@upwd1
   BEGIN
    IF @rno2=@rno1
    BEGIN
     UPDATE users SET star=star+1
     SET @result=0 RETURN--输入都正确
    END
    ELSE SET @result=-3 RETURN
   END
   ELSE SET @result=-2 RETURN--密码不对
END
ELSE
BEGIN
   SET @result=-1--用户名不存在
   RETURN
END
END
GO
--注册存储过程
CREATE PROCEDURE login
@uname VARCHAR(32),
@upwd VARCHAR(32),
@trueName VARCHAR(16),
@rname VARCHAR(12),
@result INT OUTPUT
AS
BEGIN
IF exists(SELECT * FROM users WHERE uname=@uname )
BEGIN
   SET @result=-1--用户名已存在
   RETURN
END
ELSE
BEGIN
   DECLARE @rno INT
   SELECT @rno=rno FROM roles WHERE rname=@rname
   INSERT INTO users VALUES(@uname,@upwd,1,@trueName,@rno)
   SET @result=1 RETURN
END
END
GO
--添加学生存储过程
CREATE PROCEDURE addStudent
@sname VARCHAR(16),
@sex CHAR(2),
@birth VARCHAR(16),
@nativeplace VARCHAR(16),
@address VARCHAR(100),
@QQNo VARCHAR(32),
@phoneNo VARCHAR(12),
@nowTerm VARCHAR(5),
@selfPic VARCHAR(100),
@selfDescribe VARCHAR(100),
@cname VARCHAR(32),
@result INT OUTPUT
AS
BEGIN
DECLARE @cno INT
SELECT @cno=cno FROM classes WHERE cname=@cname
INSERT INTO students(sname,sex,birth,nativeplace,address,QQNo,phoneNo,nowTerm,selfPic,selfDescribe,cno) VALUES(@sname,@sex,@birth,@nativeplace,@address,@QQNo,@phoneNo,@nowTerm,@selfPic,@selfDescribe,@cno)
SET @result=1 RETURN
END
GO
--添加教师存储过程
CREATE PROCEDURE addTeacher
@tname VARCHAR(16),
@sex CHAR(2),
@birth VARCHAR(16),
@nativeplace VARCHAR(16),
@taddress VARCHAR(100),
@tQQNo VARCHAR(32),
@tphoneNo VARCHAR(12),
@nowTerm VARCHAR(5),
@selfPic VARCHAR(100),
@selfDescribe VARCHAR(100),
@cname VARCHAR(32),
@result INT OUTPUT
AS
BEGIN
DECLARE @cno INT
SELECT @cno=cno FROM classes WHERE cname=@cname
INSERT INTO teachers(tname,sex,birth,nativeplace,taddress,tQQNo,tphoneNo,nowTerm,selfPic,selfDescribe,cno) VALUES(@tname,@sex,@birth,@nativeplace,@taddress,@tQQNo,@tphoneNo,@nowTerm,@selfPic,@selfDescribe,@cno)
SET @result=1 RETURN
END
GO
--查询同学信息存储过程
CREATE PROCEDURE query_classmate
@sname VARCHAR(16),
@result INT OUTPUT
AS
BEGIN
IF exists(SELECT * FROM students WHERE sname=@sname )
BEGIN
   DECLARE @no INT
   DECLARE @cname2 VARCHAR(32)
   SELECT sname,sex,cname,birth,nativeplace,address,QQNo,phoneNo,nowTerm,selfPic,selfDescribe FROM students,classes WHERE sname=@sname AND classes.cno=students.cno
   SET @result=1 RETURN
END
ELSE
BEGIN
   SET @result=-1 RETURN--不存在此学生
END
END
GO
--查看老师信息
CREATE PROCEDURE query_AllTeachers
AS
BEGIN
SELECT tname,sex,birth,nativeplace,tQQNo,tphoneNo,nowTerm,cname FROM teachers,classes WHERE teachers.cno=classes.cno
END
GO
--查询等级存储过程
CREATE PROCEDURE query_Star
@uname VARCHAR(32)
AS
BEGIN
SELECT star FROM users WHERE uname=@uname
END
GO
--返回当前用户所在的班级的同学存储过程
CREATE PROCEDURE return_NowUserClassmate
@uname VARCHAR(32)
AS
BEGIN
DECLARE @name VARCHAR(32);
DECLARE @cno INT;
SELECT @name=trueName FROM users WHERE uname=@uname ;
SELECT @cno=cno FROM students WHERE sname=@name ;
SELECT sname FROM students WHERE cno=@cno ;
END
GO
--返回当前用户的班级名称存储过程
CREATE PROCEDURE return_NowUserCName
@uname VARCHAR(32)
AS
BEGIN
DECLARE @name VARCHAR(32);
DECLARE @cno INT;
SELECT @name=trueName FROM users WHERE uname=@uname ;
SELECT @cno=cno FROM students WHERE sname=@name ;
SELECT cname FROM classes WHERE cno=@cno ;
END
GO
--返回当前用户的个人图片名称存储过程
CREATE PROCEDURE return_NowUserPic
@uname VARCHAR(32)
AS
BEGIN
DECLARE @name VARCHAR(32);
SELECT @name=trueName FROM users WHERE uname=@uname ;
SELECT selfPic FROM students WHERE sname=@name ;
END
GO
--每天学习评分存储过程
CREATE PROCEDURE addEveryDayGrade
@sname VARCHAR(16),
@cname VARCHAR(32),
@todayGoal INT,
@knowledgePoint VARCHAR(100),
@diffPoint VARCHAR(100),
@unknow VARCHAR(100),
@stuIdea VARCHAR(100),
@myWords VARCHAR(800),
@nowTerm VARCHAR(100),
@emDate VARCHAR(100),
@result INT OUTPUT
AS
BEGIN
IF exists(SELECT * FROM stuQuestion WHERE emdate=@emDate )
BEGIN
   SET @result=-1 RETURN
END
ELSE
BEGIN
   INSERT INTO stuQuestion VALUES(@sname,@cname,@todayGoal,@knowledgePoint,@diffPoint,@unknow,@stuIdea,@myWords,@nowTerm,@emDate);
   SET @result=1 RETURN
END
END
GO
--每天学习规划存储过程
CREATE PROCEDURE addEveryDayLayout
@sname VARCHAR(16),
@cname VARCHAR(32),
@knowledgePoint VARCHAR(100),
@diffPoint VARCHAR(100),
@myWords VARCHAR(800),
@myIdea VARCHAR(100),
@nowTerm VARCHAR(100),
@emDate VARCHAR(100),
@result INT OUTPUT
AS
BEGIN
IF exists(SELECT * FROM everyDayLayout WHERE emdate=@emDate )
BEGIN
   SET @result=-1 RETURN
END
ELSE
BEGIN
   INSERT INTO everyDayLayout VALUES(@sname,@cname,@knowledgePoint,@diffPoint,@myWords,@myIdea,@nowTerm,@emDate);
   SET @result=1 RETURN
END
END
GO
--老师查看学生当天表现、建议
CREATE PROCEDURE query_StuBehave
AS
BEGIN
SELECT sname,cname,todayGoal,diffPoint,unknow,stuIdea,emdate FROM stuQuestion,teachers WHERE teachers.cno=(SELECT cno FROM classes WHERE cname=stuQuestion.cname)
END
GO
--学生学期总结时给老师的评分存储过程
CREATE PROCEDURE ticketToTea
@tname VARCHAR(16),
@choice VARCHAR(10)
AS
BEGIN
IF @choice='很差' UPDATE oktoTea SET choicecount=choicecount+1 WHERE tname=@tname AND choiceNo=1;
ELSE IF @choice='一般' UPDATE oktoTea SET choicecount=choicecount+1 WHERE tname=@tname AND choiceNo=2;
ELSE IF @choice='很好' UPDATE oktoTea SET choicecount=choicecount+1 WHERE tname=@tname AND choiceNo=3;
ELSE IF @choice='不错' UPDATE oktoTea SET choicecount=choicecount+1 WHERE tname=@tname AND choiceNo=4;
END
GO
--学生学期总结时给学校的评分存储过程
CREATE PROCEDURE ticketToSchool
@choice VARCHAR(10)
AS
BEGIN
IF @choice='很差' UPDATE oktoSchool SET choicecount=choicecount+1 WHERE choiceNo=1;
ELSE IF @choice='一般' UPDATE oktoSchool SET choicecount=choicecount+1 WHERE choiceNo=2;
ELSE IF @choice='很好' UPDATE oktoSchool SET choicecount=choicecount+1 WHERE choiceNo=3;
ELSE IF @choice='不错' UPDATE oktoSchool SET choicecount=choicecount+1 WHERE choiceNo=4;
END
GO
--投豆豆存储过程
CREATE PROCEDURE sendBeanTo
@uname VARCHAR(32),
@sendwho VARCHAR(32),
@reason VARCHAR(256),
@emdate VARCHAR(32),
@result INT OUTPUT
AS
BEGIN
DECLARE @whosend VARCHAR(32)
SELECT @whosend=trueName FROM users WHERE uname=@uname
IF exists(SELECT * FROM sendBean WHERE emdate=@emdate and whosend=@whosend )
BEGIN
   SET @result=-1 RETURN;
END
ELSE
BEGIN
   INSERT INTO sendBean VALUES(@whosend,@sendwho,@reason,@emdate);
   SET @result=1 RETURN;
END
END
GO
--返回当前用户豆豆数
CREATE PROCEDURE return_Beancount
@uname VARCHAR(32)
AS
BEGIN
DECLARE @name VARCHAR(32)
SELECT @name=trueName FROM users WHERE uname=@uname ;
SELECT beancount FROM myBeans WHERE sname=@name ;
END
GO
--查看是谁给我豆豆存储过程
CREATE PROCEDURE whogiveMeBean
@uname VARCHAR(32)
AS
BEGIN
DECLARE @name VARCHAR(32)
SELECT @name=trueName FROM users WHERE uname=@uname ;
SELECT whosend,reason,emdate FROM sendBean WHERE sendwho=@name
END
GO
--返回用户的信息存储过程
CREATE PROCEDURE userInfor
@uname VARCHAR(32)
AS
SELECT upwd,trueName,rname FROM users,roles WHERE users.rno=roles.rno and uname=@uname
GO
--返回用户当前学期存储过程
CREATE PROCEDURE userNowTerm
@uname VARCHAR(32)
AS
DECLARE @trueName VARCHAR(16)
SELECT @trueName=trueName FROM users WHERE uname=@uname
SELECT nowTerm FROM students WHERE sname=@trueName
GO
--用户修改自己信息(用户表的修改)的存储过程
CREATE PROCEDURE updateSelfUserInfor
@unameAgo VARCHAR(32),
@uname VARCHAR(32),
@upwd VARCHAR(32),
@trueName VARCHAR(16),
@rname VARCHAR(12)
AS
BEGIN
DECLARE @rno INT
SELECT @rno=rno FROM roles WHERE rname=@rname
UPDATE users SET uname=@uname,upwd=@upwd,trueName=@trueName,rno=@rno WHERE uname=@unameAgo
END
GO
--用户学生修改时修改学生表
CREATE PROCEDURE updateSelfStudentInfor
@sname VARCHAR(16),
@sex CHAR(2),
@birth VARCHAR(16),
@nativeplace VARCHAR(16),
@address VARCHAR(100),
@QQNo VARCHAR(32),
@phoneNo VARCHAR(12),
@nowTerm VARCHAR(5),
@selfPic VARCHAR(100),
@selfDescribe VARCHAR(100),
@cname VARCHAR(32),
@snameAgo VARCHAR(16)
AS
BEGIN
DECLARE @cno INT
SELECT @cno=cno FROM classes WHERE cname=@cname
UPDATE students SET sname=@sname,sex=@sex,birth=@birth,nativeplace=@nativeplace,address=@address,QQNo=@QQNo,phoneNo=@phoneNo,nowTerm=@nowTerm,selfPic=@selfPic,selfDescribe=@selfDescribe,cno=@cno WHERE sname=@snameAgo
END
GO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值