//题目要求:
/*
建立一个数据库名字叫LZYSQL;
两个数据文件
名字:LZYCARD_1 物理名字:LZYCARD_1.MDF(10MB。最大大小不限制,按2MB增长)
名字:LZYCARD_2 物理名字:LZYCARD_2.NDF(10MB。最大大小不限制,按2MB增长)
分别在不同的文件组中;
新建用户文件组LZY1,存储LZYCARD_2
2个日志文件
名字:LZYLOG_1 物理名字:LZYLOG_1.LDF(大小为1MB,最大大小为30MB,按10%增长)
名字:LZYLOG_2 物理名字:LZYLOG_2.LDF(大小为1MB,最大大小为30MB,按10%增长)
*/
数据库操作
-------------------------------------------------------------------
//创建数据库
CREATE DATABASE LZYSQL
ON
(
NAME='LZYCARD_1',
FILENAME='F:\DATA\LZYCARD_1.MDF',
SIZE=10,
MAXSIZE=unlimited,
FILEGROWTH=2MB
),
FILEGROUP LZY1
(
NAME='LZYCARD_2',
FILENAME='F:\DATA\LZYCARD_2.NDF',
SIZE=10,
MAXSIZE=unlimited,
FILEGROWTH=2MB
)
LOG ON
(
NAME='LZYLOG_1',
FILENAME='F:\DATA\LZYLOG_1.LDF',
SIZE=1,
MAXSIZE=30MB,
FILEGROWTH=10%
),
(
NAME='LZYLOG_2',
FILENAME='F:\DATA\LZYLOG_2.LDF',
SIZE=1,
MAXSIZE=30MB,
FILEGROWTH=10%
)
//增加辅助数据文件 LZUYSQL_3 物理名字:LZYCARD_3.NDF(5MB。最大大小不限制,按10%增长)
ALTER DATABASE LZYSQL
ADD FILE
(
NAME='LZYSQL_3',
FILENAME='F:\DATA\LZYLOG_3.NDF',
SIZE=5MB,
MAXSIZE=unlimited,
FILEGROWTH=10%
)
//删除LZYLOG_2
ALTER DATABASE LZYSQL
REMOVE FILE LZYLOG_2
//修改文件参数
ALTER DATABASE LZYSQL
MODIFY FILE
(
NAME=STUDENY_DATA,
SIZE=30MB
)
//改名
ALTER DATABASE LZYSQL
MODIEY NAME=LZYSQLNB
②表操作
------------------------------------------------------------------------------
用SQL语句完成下列操作
先建立数据库Students
CREATE DATABASE Students
ON
(
NAME="STU_1",
FILENAME="F:\DATA\STU_1.MDF",
SIZE=5,
MAXSIZE=unlimited,
FILEGROWTH=10%
)
LOG ON
(
NAME="STULOG_1",
FILENAME="F:\DATA\STULOG_1.LDF",
SIZE=1,
MAXSIZE=UNLIMITED,
FILEGROWTH=10%
)
1、创建表“学生”、“成绩”表,并添加两条记录数据,如QQ群发的图所示:
USE Students
CREATE TABLE 学生
(
学号 char(8) NOT NULL PRIMARY KEY,
姓名 char(20) NOT NULL,
性别 char(2) NOT NULL CONSTRAINT ck_chj CHECK(性别 in('男','女')),
出生日期 date NOT NULL,
专业 char(30),
总分数 int
)
CREATE TABLE 成绩
(
学号 char(8) NOT NULL PRIMARY KEY,
课程号 char(8) NOT NULL,
成绩 int
)
INSERT
学生(学号,姓名,性别,出生日期,专业) values('121001','无极剑圣','男','1990-02-21','无极剑道专业'),
('121002','卡尔琳娜','女','1990-02-21','死亡莲华专业')
2、向学生表中添加一条记录,学号为122005,姓名为张丽,性别为女,专业是计算机
INSERT
学生(学号,姓名,性别,出生日期,专业) values('122005','张丽','女','1990-02-21','计算机')
3、删除第2题添加的记录。
DELETE 学生 WHERE 学号='122005'
3.1、删除学生表的“学号”列上删除主键约束
ALTER TABLE 学生
DROP CONSTRAINT ck_chj
4、在学生表的“学号”列上添加主键约束
ALTER TABLE 学生
ADD CONSTRAINT fk_st
PRIMARY KEY(学号)
5.1、在学生上添加总学分
ALTER TABLE 学生
ADD 总学分 int
5、在总学分列上添加约束,取值范围为0~100
ALTER TABLE 学生
ADD CONSTRAINT ck_xf
CHECK(总分数 like '[0-100]')
6、设置性别的默认值是女
ALTER TABLE 学生
ADD CONSTRAINT DF_rsrq
DEFAULT '女' FOR 性别
7、添加姓名不能有重名的约束
ALTER TABLE 学生
ADD CONSTRAINT UK_name
UNIQUE(姓名)
8、设置总学分取值范围为0~100
ALTER TABLE 学生
ADD CONSTRAINT ck_xf
CHECK(总学分 like '[0-100]')
9、建立成绩表的 “学号”和学生表的“学号”之间的参照关系。
ALTER TABLE 成绩
ADD CONSTRAINT fk_sk
foreign key (学号)references 学生(学号)
--------------------------------------------------------------------------------------
1.
创建学生信息表,内容有:学号char(6)为主键;姓名char(8)不可为空;性别设置"默认值"为男性;身份证后四位设置"唯一";
课程号char(4);成绩 设置取值范围 为 0到100.
use students
create table 学生信息
(
学号 char(6) primary key,
姓名 char(8) not null,
性别 char(4) constraint df_xb default '男',
身份证号后四位 char(4) not null constraint uq_sfzh unique ,
课程号 char(4),
成绩 int constraint ck_cj check(成绩>=0 and 成绩<=100)
)
-------------------------------------------------------------------
create table score
(
stno char(8) not null,
cno char(3)not null,
grade int
)
alter table score
add constraint pk_stno primary key(stno),pk_cno primary key(cno)
建立课程表
use stsc
create table course
(
课程号 char(3) primary key,
课程名 char(16) not null,
学分 int,
教师号 char(6)
)
插入数据
insert course values('102','数字电路','3','102101'),('103','数据库系统','3','204101')
2.查询已有表的前三列
select 课程号,课程名,学分 from course;
--------------------------------------------
3.查询前三行
select distinct top 3 * from course;
----------------------------------------------
4.查询学生选课的课程号(不允许出现重复记录)
select distinct 课程号 from course;
--------------------------------------------
5.查询每位学生的学号、姓名、年龄
select stno,stname,datediff(year,stbriday,getdate())年龄 from student;
select stno,stname,(year(getdate())-year(stbriday))年龄 from student;
-------------------------------------------
6.查询最高分
select max(tc) as 最高分 from student;
-----------------------tno----------
7.查询总学分大于等于50的学生信息
select * from student
where tc>=50;
---------------------------------------------
8.查询含‘机’的信息
select * from course where 课程名 like '%机%'
9.查询121001成绩信息,降序排列
select grade from score where stno='121001'
order by grade desc
--------------------------------------------
10.统计各个专业的人数
select speciality,count(*) as '人数' from student
group by speciality
-----------------------------------------------
11.查询选修两门及两门以上课程的成绩信息
select stno,grade from score
where stno in(select stno from score
group by stno
having count(cno)>=2)
----------------------------------------------
12.查找122002的“801”保存在xx表中
select * into score1 from score
where stno='122002' and cno='801'