create database KCGL
on
(
name='KCGL',
filename='E:\班级\姓名+学号\KCGL.mdf',
size=5,
maxsize=25,
filegrowth=20%
)
log on
(
name='KCGL_log',
filename='E:\班级\姓名+学号\KCGL_log.ldf',
size=3,
filegrowth=10%
)
--三.
USE KCGL
GO
create TABLE STUDENT
(
S_NO VARCHAR(20),
S_NAME VARCHAR(20),
S_SEX CHAR(10),
S_AGE INT,
S_ADDRESS VARCHAR(100),
S_DEPT VARCHAR(40)
)
--若要插入所有数据按照下面的模式根据题依次插入
INSERT INTO student VALUES('20111001001','王敏','女',21,'武汉','IS')
create TABLE COURSE
(
C_NO VARCHAR(20),
C_NAME VARCHAR(20),
C_CREDIT INT,
C_TYPE VARCHAR(20)
)
--若要插入所有数据按照下面的模式根据题依次插入
INSERT INTO COURSE VALUES('001','VB程序设计',4,'专业课')
create TABLE SC
(
S_NO VARCHAR(20),
SEMESTER VARCHAR(20),
C_NO VARCHAR(20),
GRADE FLOAT
)
--若要插入所有数据按照下面的模式根据题依次插入
INSERT INTO COURSE VALUES('20111001001','201101','001',78.0)
--四.
--1.
--为表STUDENT,COURSE加主键
ALTER TABLE STUDENT ADD CONSTRAINT pk_STUDENT PRIMARY KEY(S_NO)
ALTER TABLE COURSE ADD CONSTRAINT pk_STUDENT PRIMARY KEY(C_NO)
--为表SC加2外键
alter table SC add constraint fk_S_NO foreign key (S_NO) references student (S_NO)
alter table SC add constraint fk_C_NO foreign key (C_NO) references student (C_NO)
--2.
ALTER TABLE STUDENT ADD CONSTRAINT DF_STUDENT_adress DEFAULT '湖北' FOR S_ADDRESS
--3.
Alter table SC add constraint CK_SC check (SEMESTER = '201101' OR SEMESTER = '201102')
--五.
--1.
SELECT S_NAME,A_AGE,S_DEPT FROM student WHERE S_NAME = '孟凡'
--2.
select COUNT(S.S_NO) FROM SC S,student ST WHERE s_sex='女' and GRADE >80
--3.
create view KCGLVL
as
SELECT S.SNO,S.SNAME,C.Cno ,C.Grade FROM stu S,SC C WHERE S.SNO = C.SNO
--4.
create procedure KCGLPRO
@S_NO varchar(20)
as
BEGIN
select COUNT(C_NO) from SC where Sno = @S_NO
END
execute KCGLPRO '20111001001'
PS:我用的数据库是SQL SERVER 2008,剩下几题自己想想办法,做这么多及格分数已经够了。
--) 用SQL语句建立P表。USE [SPJ]
GO
/****** Object: Table [dbo].[P] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME = 'P')
DROP TABLE P
GO
CREATE TABLE [dbo].[P](
[PNO] [nvarchar](50) NOT NULL,
[PNAME] [nvarchar](50) NOT NULL,
[COLOR] [nvarchar](50) NOT NULL,
[WEIGHT] [int] NOT NULL
)
GO
--2)用SQL语句找出所有零件的名称、颜色、重量。
SELECT PNAME,COLOR,WEIGHT FROM P
--3)用SQL语句把全部红色零件的颜色改为黄色。
UPDATE P SET COLOR = 'YELLOW' WEHRE COLOR = 'RED'
--4) 用SQL语句由S5供给J4的零件P6改为由S3供应。
UPDATE SPJ SET SNO = 'S3' WEHRE PNO = 'P6' AND JNO = 'J4' AND SNO = 'S5'
你还有马甲。。。第一个不对,更新的是学生的成绩,而不是c001得成绩
1.对选修了课程号为c001的学生成绩提高10%
此题本人做的答案请检查:updata 选课表 set 成绩=成绩*1.1 where 课程号='c001'
UPDATE 选课表 SET set 成绩=成绩*1.1 WHERE 学生号 IN (SELECT 学生号 FROM 选课表 WHERE 课程号='c001')
2.查询没有学生选修的课程名。
此题本人做的答案请检查:select 课程名 from 课程 where 课程名 not exists(select * from 选课表 where 选课表.课程号=课程表.课程号)
SELECT 课程名 from 课程 WHERE 课程号 NOT IN (SELECT DISTINCT 课程号 FROM 选课表)
3. correct
4.查询每个学生选修的门数及平均成绩。
此题本人做的答案请检查:select AVG(成绩),姓名 from 学生,选课 where 学生.学生号=选课.学生号 group by 姓名
SELECT COUNT(c.课程号), AVG(c.成绩)
FROM 学生 stu LEFT JOIN 选课 c ON stu.学生号 = c.学生号
GROUP BY stu.学生号
此题本人做的答案请检查:select 借书证号,姓名,单位 from 读者 where 借书日期<=2003 and 读者.借书证号=借书.借书证号
SELECT 借书证号,姓名,单位 FROM 读者 WHERE IN (SELECT 借书证号 FROM 借书 WHERE 借书日期<=2003)
6.查询电子系没有借书的读者姓名
此题本人做的答案请检查: select 姓名,职称 from 读者 where 职称='电子系' and 借书证号 NOT exists(select 借书证号 from 借书 where 读者.借书证号=借书.借书证号)
此题我一直有一个疑惑 我目前查询电子系没有借书的读者姓名 没有借书 也就是借书证号为空或NULL 那么读者也有一个借书证号 借书也有一个借书证号 2个是相对应的,
但是我没用到借书表 只有了读者表的借书证号 需要在where语句后写入:借书证号=借书.借书证号 这个条件吗?
SELECT 姓名
FROM 读者 t
WHERE 单位 = '电子系' AND NOT EXISTS(SELECT 1 FROM 借书 WHERE 借书证号 = t.借书证号)
7.查询出至少有两名学生所选修的全部课程。
此题我做的不怎么好:select 姓名 from 学生 where 课程名 in (select 课程名,count(*) as 课程数 group by 姓名 having count(*)>=2
SELECT * FROM 课程 WHERE 课程号 IN (SELECT 课程号 FROM 选课 GROUP BY 课程号 HAVING COUNT(*) >=2)
8
@a, @b, @c是参数, 譬如@a = '123', @b = 'c001', @c = 90
然后begin后面是执行一个update *** 作,将参数对应起来就可以了。
真个存储过程对例子要做的就是
UPDATE 选课
set 成绩=90
where 学号= 123 and 课程号='c001'
明白了么
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)