微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

传智播客我的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,
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,
cname VARCHAR(32) NOT NULL UNIQUE,
   cdescribe VARCHAR(100)
);
GO
--创建学生表
CREATE TABLE students
(
sno INT PRIMARY KEY IDENTITY(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,
tname VARCHAR(16) NOT NULL UNIQUE,
taddress VARCHAR(100) NOT NULL,
tQQNo VARCHAR(32) NOT NULL,
tphoneNo VARCHAR(12) NOT NULL,
selfPic VARCHAR(100),
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),
myidea VARCHAR(200),
);
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,1);
INSERT INTO oktoTea VALUES(@tname,2);
INSERT INTO oktoTea VALUES(@tname,3);
INSERT INTO oktoTea VALUES(@tname,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('何飞','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('何骏飞','C#???','软件还不了解','今天很热','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),
@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),
@taddress VARCHAR(100),
@tQQNo VARCHAR(32),
@tphoneNo VARCHAR(12),
@result INT OUTPUT
AS
BEGIN
DECLARE @cno INT
SELECT @cno=cno FROM classes WHERE cname=@cname
INSERT INTO teachers(tname,taddress,tQQNo,tphoneNo,cno) VALUES(@tname,@taddress,@tQQNo,@tphoneNo,@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,cname,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,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),
@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,@emDate);
   SET @result=1 RETURN
END
END
GO
--每天学习规划存储过程
CREATE PROCEDURE addEveryDayLayout
@sname VARCHAR(16),
@myIdea 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,@myIdea,@emDate);
   SET @result=1 RETURN
END
END
GO
--老师查看学生当天表现、建议
CREATE PROCEDURE query_StuBehave
AS
BEGIN
SELECT sname,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),
@rname VARCHAR(12)
AS
BEGIN
DECLARE @rno INT
SELECT @rno=rno FROM roles WHERE rname=@rname
UPDATE users SET uname=@uname,rno=@rno WHERE uname=@unameAgo
END
GO
--用户学生修改修改学生表
CREATE PROCEDURE updateSelfStudentInfor
@sname VARCHAR(16),
@snameAgo VARCHAR(16)
AS
BEGIN
DECLARE @cno INT
SELECT @cno=cno FROM classes WHERE cname=@cname
UPDATE students SET sname=@sname,cno=@cno WHERE sname=@snameAgo END GO

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐