头歌java实训答案集
头歌MySQL数据库实训答案 有目录
暂无参考代码
--********** 创建数据库student **********--
--********** Begin **********--
create database student
--********** End **********--
go
--********** 创建数据库student **********--
--********** Begin **********--
create database student
on
(name=studentdata1,
filename='/home/studentdata1.mdf',
maxsize=10MB
),
(name=studentdata2,
filename='/home/studentdata2.mdf',
maxsize=10MB
)
--********** End **********--
go
--********** 创建数据库student **********--
--********** Begin **********--
create database student
--********** End **********--
Go
--********** 添加数据文件 **********--
--********** Begin **********--
alter database student
add file
(
name=studentdata1,
filename= '/home/studentdata1.ndf',
size=6MB,
maxsize=20MB,
filegrowth=1MB
)
--********** End **********--
Go
--********** 添加日志文件 **********--
--********** Begin **********--
alter database student
add log file
(
name=studentlog1,
filename= '/home/studentdata1.ldf',
maxsize=20MB,
filegrowth=1MB
)
--********** End **********--
Go
--********** 创建数据库student **********--
--********** Begin **********--
create database student
--********** End **********--
go
--**********新建文件组**********--
--********** Begin **********--
alter database student
add filegroup stufilegroup
--********** End **********--
go
--**********向文件组中新增文件**********--
--********** Begin **********--
alter database student
add file
(
name='studentdata',
filename= '/home/studentdata.ndf'
)
to FILEGROUP stufilegroup
--********** End **********--
go
--**********设置默认文件组**********--
--********** Begin **********--
alter database student
MODIFY FILEGROUP stufilegroup DEFAULT
--********** End **********--
go
--********** 创建数据库student **********--
--********** Begin **********--
create database student
--********** End **********--
go
--********** 删除数据库student **********--
--********** Begin **********--
drop database student
--********** End **********--
Go
--********** 创建数据库 **********--
--********** Begin **********--
create database teach
--********** End **********--
go
use teach
--********** 创建数据表 **********--
--********** Begin **********--
create table c
(
cno varchar(10),
cname varchar(10),
credit float default 2.0
)
--********** End **********--
go
--********** 评测数据 **********--
--********** Begin **********--
use teach
exec sp_columns c
--********** End **********--
go
--********** 创建数据库 **********--
--********** Begin **********--
drop database teach
create database teach
--********** End **********--
go
use teach
--********** 创建数据表 **********--
--********** Begin **********--
create table s
(
sno varchar(50),
sname varchar(50),
age int,
dept varchar(50)
)
--********** End **********--
go
use teach
--********** 增加新列 **********--
--********** Begin **********--
alter table s
add birthday date
--********** End **********--
go
--********** 测试数据 **********--
--********** Begin **********--
use teach
--显示列信息--
exec sp_columns s
--********** End **********--
Go
--********** 创建数据库 **********--
--********** Begin **********--
drop database teach
create database teach
create table s
(
sno varchar(10),
sname varchar(10),
age int,
dept varchar(10)
)
--********** End **********--
go
use teach
--********** 创建数据表 s **********--
create table s
(
sno varchar(10),
sname varchar(10),
age int,
dept varchar(10)
)
go
use teach
--********** 修改列定义 **********--
--********** Begin **********--
alter table s
alter column sname varchar(50)
alter table s
alter column age char(10)
--********** End **********--
go
--********** 测试数据 **********--
--********** Begin **********--
use teach
--显示列信息--
exec sp_columns s
--********** End **********--
Go
--********** 创建数据库**********--
--********** Begin **********--
drop database teach
create database teach
--********** End **********--
go
use teach
--********** 创建数据表 **********--
--********** Begin **********--
create table s
(
sno varchar(10),
sname varchar(10),
age int,
dept varchar(10)
)
--********** End **********--
go
use teach
--********** 删除列定义 **********--
--********** Begin **********--
alter table s
drop column age
--********** End **********--
go
--********** 评测数据 **********--
--********** Begin **********--
use teach
exec sp_columns s
--********** End **********--
go
--********** 创建数据库**********--
--********** Begin **********--
create database teach
--********** End **********--
go
use teach
--********** 创建数据表 s **********--
--********** Begin **********--
create table s
(
sno char(6) CONSTRAINT sno_pk PRIMARY KEY,
sname varchar(8) CONSTRAINT sn_uq UNIQUE,
age int ,
dept varchar(20)
)
--********** End **********--
--********** 创建数据表 sc **********--
--********** Begin **********--
create table sc
(
sno char(6) NOT NULL,
cno varchar(10) NOT NULL,
grade int ,
CONSTRAINT sno_cno_pk PRIMARY KEY(sno,cno)
)
--********** End **********--
go
--********** 评测数据 **********--
--********** Begin **********--
use teach
--主键约束--
select b.column_name 主键名
from information_schema.table_constraints a
inner join information_schema.constraint_column_usage b
on a.constraint_name = b.constraint_name
where a.constraint_type = 'PRIMARY KEY' and a.table_name = 's'
go
--主键约束--
select b.column_name 主键名
from information_schema.table_constraints a
inner join information_schema.constraint_column_usage b
on a.constraint_name = b.constraint_name
where a.constraint_type = 'PRIMARY KEY' and a.table_name = 'sc'
go
--唯一约束--
SELECT
idx.name AS 唯一约束名,
col.name AS 列名
FROM
sys.indexes idx
JOIN sys.index_columns idxCol
ON (idx.object_id = idxCol.object_id
AND idx.index_id = idxCol.index_id
AND idx.is_unique_constraint = 1)
JOIN sys.tables tab
ON (idx.object_id = tab.object_id)
JOIN sys.columns col
ON (idx.object_id = col.object_id
AND idxCol.column_id = col.column_id)
where object_name(idx.object_id)='s'
go
--********** End **********--
--********** 创建数据库 **********--
--********** Begin **********--
create database teach
--********** End **********--
go
use teach
--********** 创建数据表s **********--
--********** Begin **********--
CREATE TABLE s
(
sno char(6) PRIMARY KEY,
sname varchar(8) UNIQUE,
age int NOT NULL,
dept varchar(20) NOT NULL
)
--********** End **********--
--********** 创建数据表sc **********--
--********** Begin **********--
create table sc
(
sno char(6) foreign key references s(sno),
cno char(10) NOT NULL,
grade int check (grade>=0 and grade<=100) NOT NULL,
PRIMARY KEY(sno,cno)
)
--********** End **********--
go
--********** 测试数据 **********--
--********** Begin **********--
use teach
select
d.name as 外键列,
object_name(b.parent_object_id) as 外键表,
c.name as 主键列,
object_name(b.referenced_object_id) as 主健表
from sys.foreign_keys A
inner join sys.foreign_key_columns B on A.object_id=b.constraint_object_id
inner join sys.columns C on B.parent_object_id=C.object_id and B.parent_column_id=C.column_id
inner join sys.columns D on B.referenced_object_id=d.object_id and B.referenced_column_id=D.column_id
where object_name(B.referenced_object_id)='s'
SELECT
col.name AS check列名,
chk.definition
FROM
sys.check_constraints chk
JOIN sys.tables tab
ON (chk.parent_object_id = tab.object_id)
JOIN sys.columns col
ON (chk.parent_object_id = col.object_id
AND chk.parent_column_id = col.column_id)
where object_name(chk.parent_object_id)='sc'
--********** End **********--
Go
--********** 创建数据库 **********--
--********** Begin **********--
create database teach
--********** End **********--
go
use teach
--********** 创建数据表 **********--
--********** Begin **********--
CREATE TABLE s
(
sno varchar(50) PRIMARY KEY,
sname varchar(50) ,
age int ,
dept varchar(50) ,
)
--********** End **********--
go
use teach
--********** 增加新约束 **********--
--********** Begin **********--
ALTER TABLE s
ADD check (age between 19 and 23)
--********** End **********--
go
--********** 测试数据 **********--
--********** Begin **********--
use teach
--显示列信息--
exec sp_columns s
--check约束--
SELECT
col.name AS check列名,
chk.definition
FROM
sys.check_constraints chk
JOIN sys.tables tab
ON (chk.parent_object_id = tab.object_id)
JOIN sys.columns col
ON (chk.parent_object_id = col.object_id
AND chk.parent_column_id = col.column_id)
where object_name(chk.parent_object_id)='s'
--********** End **********--
Go
--********** 创建数据库**********--
--********** Begin **********--
DROP database teach
create database teach
--********** End **********--
go
use teach
--********** 创建数据表 **********--
--********** Begin **********--
CREATE TABLE s
(
sno varchar(10) CONSTRAINT sno_pk PRIMARY KEY,
sname varchar(10) ,
age int ,
dept varchar(10)
)
--********** End **********--
go
use teach
--********** 删除完整性约束 **********--
--********** Begin **********--
ALTER TABLE s
DROP CONSTRAINT sno_pk
--********** End **********--
go
--********** 评测数据 **********--
--********** Begin **********--
use teach
exec sp_columns s
--主键约束--
select b.column_name 主键名
from information_schema.table_constraints a
inner join information_schema.constraint_column_usage b
on a.constraint_name = b.constraint_name
where a.constraint_type = 'PRIMARY KEY' and a.table_name = 's'
go
--********** 创建数据库**********--
--********** Begin **********--
DROP database teach
create database teach
--********** End **********--
go
use teach
--********** 创建数据表 **********--
--********** Begin **********--
create table s
(
sno char(6) primary key,
sname varchar(8),
age int,
dept varchar(20)
)
create table sc
(
sno char(6) foreign key references s(sno),
cno varchar(10),
grade int,
primary key(sno,cno)
)
--********** End **********--
--********** 删除数据表 **********--
--********** Begin **********--
DROP TABLE sc
DROP TABLE s
--********** End **********--
go
--********** 评测数据 **********--
--********** Begin **********--
use teach
--显示数据库中的所有表名--
SELECT * FROM INFORMATION_SCHEMA.TABLES
--********** End **********--
go
create database teach
go
use teach
create table s
(
sno char(10) primary key,
name varchar(20) unique,
sex char(2) default 'm',
age int check(age between 19 and 23),
dept varchar(20) not null
)
insert into s
values('001','tom','m',20,'cs'),('002','jerry','m',19,'cs'),('003','amy','f',22,'is')
go
use teach
--********** 查询指定列 **********--
--********** Begin **********--
select name,dept
from s
--********** End **********--
--********** 查询所有列 **********--
--********** Begin **********
select *
from s
--********** End **********--
--********** 目标列名改为显示列名 **********--
--********** Begin **********
select name as 姓名
from s
--********** End **********--
--********** 取消重复行 **********--
--********** Begin **********
select distinct dept
from s
--********** End **********--
go
drop database teach
create database teach
go
use teach
create table c
(
cno char(10) primary key,
cname varchar(50) not null,
credit float default 2.0
)
insert into c
values('c01','database system',3.5),('c02','software system design',4),('c03','math',3)
go
use teach
--********** 1、比较大小 **********--
--********** Begin **********--
select cname
from c
where credit >3
--********** End **********--
--********** 2、确定范围 **********--
--********** Begin **********--
select cno,credit
from c
where credit not between 2.0 and 3.0
--********** End **********--
--********** 3、确定集合 **********--
--********** Begin **********--
select *
from c
where cno in ('c01','c02')
--********** End **********--
--********** 4、字符匹配 **********--
--********** Begin **********--
select cname
from c
where cname like '%system%'
--********** End **********--
go
drop database teach
create database teach
go
use teach
create table sc
(
sno char(10),
cno char(10),
grade int check(grade between 0 and 100),
primary key(sno,cno)
)
insert into sc
values('001','c01',90),('001','c02',87),('002','c01',85),('002','c02',92),('003','c01',89)
go
use teach
--********** 1、最大值和最小值**********--
--********** Begin **********--
select max(grade) ,min(grade)
from sc
--********** End **********--
--********** 2、总和**********--
select sum(grade) as 总分
from sc
where sno = '001'
--********** End **********--
--********** 3、统计元组个数**********--
select count(distinct sno) as 人数
from sc
--********** End **********--
go
drop database teach
create database teach
go
use teach
create table sc
(
sno char(10),
cno char(10),
grade int check(grade between 0 and 100),
primary key(sno,cno)
)
insert into sc
values('001','c01',90),('001','c02',87),('002','c01',85),('002','c02',80),('003','c01',89)
go
use teach
--********** 1、无分组结果筛选**********--
--********** Begin **********--
select cno,avg(grade) as 平均分
from sc
group by cno
--********** End **********--
--********** 2、有分组结果筛选+排序**********--
select cno,avg(grade) as 平均分
from sc
group by cno
having avg(grade) > 85
order by avg(grade) ASC
--********** End **********--
go
drop database teach
create database teach
go
use teach
create table s
(
sno char(10) primary key,
name varchar(20) unique,
sex char(2) default 'm',
age int check(age between 19 and 23),
dept varchar(20) not null
)
create table sc
(
sno char(10) foreign key references s(sno),
cno char(10),
grade int check(grade between 0 and 100),
primary key(sno,cno)
)
insert into s
values('001','tom','m',20,'cs'),('002','jerry','m',19,'cs'),('003','amy','f',22,'is')
insert into sc
values('001','c01',90),('001','c02',87),('002','c01',85),('002','c02',92)
go
use teach
--********** 1、where 等值连接查询所有值**********--
--********** Begin **********--
select s.*,cno,grade
from s,sc
where s.sno=sc.sno
--********** End **********--
--********** 2、left join 等值连接查询所有值**********--
select s.*,cno,grade
from s left join sc
on s.sno=sc.sno
--********** End **********--
--********** 3、 加复合条件的 where 等值连接查询指定值**********--
select name,cno,grade
from s,sc
where s.sno=sc.sno and dept = 'cs'
--********** End **********--
go
drop database teach
create database teach
go
use teach
create table s
(
sno char(10) primary key,
name varchar(20) unique,
sex char(2) default 'm',
age int check(age between 19 and 23),
dept varchar(20) not null
)
create table c
(
cno char(10) primary key,
cname varchar(50) not null,
credit float default 2.0
)
create table sc
(
sno char(10) foreign key references s(sno),
cno char(10) foreign key references c(cno),
grade int check(grade between 0 and 100),
primary key(sno,cno)
)
insert into s
values('001','tom','m',20,'cs'),('002','jerry','m',19,'cs')
insert into c
values('c01','database system',3.5),('c02','software system design',4)
insert into sc
values('001','c01',90),('001','c02',87),('002','c01',85),('002','c02',92)
go
use teach
--********** 1、 where 多表连接查询指定值**********--
--********** Begin **********--
SELECT s.sno, name,cname, credit, grade
FROM s, c,sc
WHERE s.sno = sc.sno
AND sc.cno = c.cno
--********** End **********--
--********** 2、加复合条件的 where 多表连接查询指定值**********--
SELECT name,cname, grade
FROM s, c,sc
WHERE (s.sno = sc.sno
AND sc.cno = c.cno)
and s.sno = '001'
--********** End **********--
go
drop database teach
create database teach
go
use teach
create table s
(
sno char(10) primary key,
name varchar(20) unique,
sex char(2) default 'm',
age int check(age between 19 and 23),
dept varchar(20) not null
)
insert into s
values('001','tom','m',20,'cs'),('002','jerry','m',19,'cs'),('003','amy','f',22,'is')
go
use teach
--********** 自身连接查询指定列**********--
--********** Begin **********--
SELECT X.name, X.age
FROM s AS X ,s AS Y
WHERE X.age> Y.age AND Y.name='jerry'
--********** End **********--
go
create database teach
go
use teach
create table s
(
sno char(10) primary key,
name varchar(20) unique,
sex char(2) default 'm',
age int check(age between 19 and 23),
dept varchar(20) not null
)
create table sc
(
sno char(10) foreign key references s(sno),
cno char(10),
grade int check(grade between 0 and 100),
primary key(sno,cno)
)
insert into s
values('001','tom','m',20,'cs'),('002','jerry','m',19,'cs'),('003','amy','f',22,'is')
insert into sc
values('001','c01',90),('001','c02',87),('002','c01',85),('002','c02',92)
go
use teach
--********** 1、返回单值的子查询(等值) **********--
select cno,grade
from sc
where sno =
(
--********** 补充子查询的内容*********--
--********** Begin **********--
select sno
from s
where name="tom"
--********** End **********--
)
--********** 2、返回单值的子查询(不等值) **********--
--********** 补充父查询的内容*********--
--********** Begin **********--
select sno,name,age
from s
where age >
--********** End **********--
(
select age
from s
where name = 'jerry'
)
go
drop database teach
create database teach
go
use teach
create table c
(
cno char(10) primary key,
cname varchar(50) not null,
credit float default 2.0
)
create table sc
(
sno char(10) ,
cno char(10) foreign key references c(cno),
grade int check(grade between 0 and 100),
primary key(sno,cno)
)
insert into c
values('c01','database system',3.5),('c02','software system design',4)
insert into sc
values('001','c01',90),('001','c02',87),('002','c01',88),('002','c02',92)
go
use teach
--********** 1、 使用 in 的子查询**********--
--********** 补充父查询的内容**********--
--********** Begin **********--
select cname,credit
from c
where cno in
--********** End **********--
(
select cno
from sc
where sno = '001'
)
--********** 2、带 all 谓词的子查询**********--
select cno,grade
from sc
where cno != 'c01' and grade < all
(
--********** 补充子查询的内容**********--
--********** Begin **********--
select grade
from sc
where cno ='c01'
--********** End **********--
)
go
create database teach
go
use teach
create table s
(
sno char(10) primary key,
name varchar(20) unique,
sex char(2) default 'm',
age int check(age between 19 and 23),
dept varchar(20) not null
)
create table sc
(
sno char(10) foreign key references s(sno),
cno char(10),
grade int check(grade between 0 and 100),
primary key(sno,cno)
)
insert into s
values('001','tom','m',20,'cs'),('002','jerry','m',19,'cs'),('003','amy','f',22,'is')
insert into sc
values('001','c01',90),('001','c02',87),('002','c01',85),('002','c02',92)
go
use teach
--********** 1、插入子查询的结果 **********--
create table sc_avg
(
sno char(10),
avg_grade int /*平均分*/
)
--********** 补充 insert into 内容*********--
--********** Begin **********--
insert
into sc_avg(sno,avg_grade)
select sno,avg(grade)
from sc
group by sno
--********** End **********--
select * from sc_avg --评测子查询的插入结果
--********** 2、修改指定元组的值 **********--
--********** Begin **********--
update sc
set grade=grade+5
where grade>=90
--********** End **********--
select * from sc --评测更新后的结果
--********** 3、删除所有元组的值 **********--
--********** Begin **********--
delete
from sc
--********** End **********--
select * from sc --评测删除后的结果
go
drop database teach
create database teach
go
use teach
create table s
(
sno char(10) primary key,
name varchar(20) unique,
sex char(2) default 'm',
age int check(age between 19 and 23),
dept varchar(20) not null
)
insert into s
values('001','tom','m',20,'cs'),('002','jerry','m',19,'cs'),('003','amy','f',22,'is')
go
--********** 1、创建视图 **********--
--********** Begin **********--
create view cs_m_s
as
select sno,name,age
from s
where dept='cs' and sex='m'
--********** End **********--
go
select * from cs_m_s --评测创建视图后的结果
go
--********** 2、查询视图 **********--
--********** Begin **********--
select *
from cs_m_s
where age>=20
--********** End **********--
go
--********** 3、删除视图 **********--
--********** Begin **********--
delete
from cs_m_s
--********** End **********--
go
select * from cs_m_s --评测删除后的结果
go
drop database teach
create database teach
go
use teach
create table sc
(
sno char(10),
cno char(10),
grade int check(grade between 0 and 100)
)
go
--********** 1、创建索引 **********--
--********** Begin **********--
create index sno_cno_index
on sc
(
sno asc,
cno asc
)
--********** End **********--
go
exec sp_helpindex sc
go
--********** 2、删除索引 **********--
--********** Begin **********--
drop index sno_cno_index on sc
--********** End **********--
go
exec sp_helpindex sc
go
drop database teach
create database teach
go
use teach
create table s
(
sno char(10) primary key,
name char(20) unique,
age int check(age between 19 and 23),
)
insert into s
values('001','tom',20),('002','jerry',19),('003','amy',22)
use teach
go
--********** 1、 创建不带参数的存储过程 insertrecord **********--
--********** Begin **********--
CREATE PROCEDURE insertrecord
(
@sno char(10),
@name char(20),
@age int
)
AS
INSERT INTO s
VALUES(@sno,@name,@age)
--********** End **********--
go
--********** 3、 执行存储过程 insertrecord **********-
--********** Begin **********--
EXECUTE insertrecord
@sno='004',@name='tony',@age=19
--********** End **********--
go
use teach
select * from s
drop database teach
create database teach
go
use teach
create table s
(
sno char(10) primary key,
name varchar(20) unique,
sex char(2) default 'm',
age int check(age between 19 and 23),
dept varchar(20) not null
)
create table sc
(
sno char(10),
cno char(10),
grade int check(grade between 0 and 100),
primary key(sno,cno)
)
insert into s
values('001','tom','m',20,'cs'),('002','jerry','m',19,'cs'),('003','amy','f',22,'is')
insert into sc
values('001','c01',90),('001','c02',87),('002','c01',85),('002','c02',92)
go
--********** 1、创建触发器********--
--********** Begin **********--
create trigger delete_s on s
after delete
as
delete from sc
where sno in (select sno from deleted)
--********** End **********--
go
use teach
--********** 2、使用触发器*********--
delete from s where sno ='002'
--********** End **********--
go
select * from s
select * from sc