SQL 作业的答案与代码3:创建数据库superKTV,创建歌手表singer,创建歌手表staff

1. 一、创建数据库superKTV
--二、创建歌手表singer:
--歌手ID(SingerID):主键ID,自动增长,种子和增量为1
--歌手名称(SingerName):非空,nvarchar(50)
--歌手类型(SingerType):非空 nvarchar(10),只能为男歌手或女歌手
--歌手生日(Birthday):date类型
--歌手地区(Area):nvarchar(50)
--歌手图片路径(PhotoPath):nvarchar(200)
--存款(Cunkuan):decimal(18,2)
--三、创建歌曲表song
--歌曲id(SongID):主键ID,自动增长,种子和增量为1
--歌曲名称(Title):非空 nvarchar(50)
--歌手编号(SingerID):int 外键,参照完整性歌手表
--点播次数(Hit):int 默认值为0
create database superKTV
create table singer(
SingerID int primary key identity(1,1), (用了identity(1,1),或default(0)等单词的列名,不要出现在insert 语句中,不然会报错)
SingerName nvarchar(50) not null,
SingerType Varchar(2) check(SingerType ='男' or SingerType ='女') not null ,
Birthday date,
Area nvarchar(50),
PhotoPath nvarchar(200),
Cunkuan decimal(18,2)
)
create table song(
SongID int primary key identity(1,1),
Title nvarchar(50) not null,
SingerID int ,
Hit int default(0)
)
alter table song add foreign key (SingerID) references singer (SingerID)
insert into singer( SingerName,SingerType,Birthday,Area,PhotoPath,Cunkuan )
values('李胡','男','2000-1-1','湖南','https://pic2.zhimg.com/80/v2-c92cf40607f91c123d55ab2e2a37ea45_hd.jpg',1100999999999999.99)
insert into singer( SingerName,SingerType,Birthday,Area,PhotoPath,Cunkuan )
values('李云','女','2000-1-2','湖南','https://pic2.zhimg.com/80/v2-c92cf40607f91c123d55ab2e2a37ea45_hd.jpg',1200)
insert into singer(SingerName,SingerType,Birthday,Area,PhotoPath,Cunkuan )
values('孙一成','男','2000-1-3','湖南','https://pic2.zhimg.com/80/v2-c92cf40607f91c123d55ab2e2a37ea45_hd.jpg',1300)
insert into singer( SingerName,SingerType,Birthday,Area,PhotoPath,Cunkuan )
values('林笑','男','2000-1-4','湖南','https://pic2.zhimg.com/80/v2-c92cf40607f91c123d55ab2e2a37ea45_hd.jpg',1400)
insert into singer( SingerName,SingerType,Birthday,Area,PhotoPath,Cunkuan )
values('卫晴','女','2000-1-5','湖北','https://pic2.zhimg.com/80/v2-c92cf40607f91c123d55ab2e2a37ea45_hd.jpg',1500)
insert into song(Title ,SingerID)
values('男孩你快来',1)
insert into song( Title ,SingerID)
values('女孩你快来',2)
insert into song( Title ,SingerID )
values('男孩你别来',3)
insert into song( Title ,SingerID )
values('男孩你得来',4)
insert into song(Title ,SingerID)
values( '女孩你得来',5)
delete from singer where SingerID =5
update singer set Area= '湖南' where SingerID =5
select * from singer
select * from song
select SingerName as'姓名' ,Birthday as'生日' from singer where SingerType='男'
select '中国'as'国家' from singer (红字部分用了虚拟内容与虚拟列)
select * from singer where SingerType='男' and SingerID>3
select top 3* from singer decs
select * from singer where Area is null
select * from singer where SingerType='男' and SingerID between 2 and 4
select * from singer where SingerType='男' and SingerID = 2 or SingerID = 4
select PhotoPath as '路径', SingerName as '名称' ,'中国'as'国家' from singer where SingerID = 1 or SingerID = 3
2.赵龙 男 25 湖南省长沙市伍家岭江南苑9栋203号 0731-4230123 zl@163.net 2005/10/5
李云 女 23 湖南省长沙市东风路东风新村21栋502号 0731-4145268 ly@163.net 2003/7/3
孙一成 男 24 湖南省株洲市601厂宿舍15栋308号 0732-8342567 syc@163.net 2002/2/11
林笑 男 27 湖南省郴洲市人民医院20栋301号 0735-2245214 null 2006/1/5
卫晴 女 23 湖南省长沙市望月湖12栋403号 0731-8325124 wq@163.net 2007/3/5
张高 男 30 湖南省株洲市601厂宿舍18栋122号 0732-8342143 aee@163.net 2004/2/11
insert into EMP_DB values('赵龙','男',25,'湖南省长沙市伍家岭江南苑9栋203号','0731-4230123','zl@163.net','2005/10/5')
insert into EMP_DB values('李云','女',23,'湖南省长沙市东风路东风新村21栋502号','0731-4145268','zl@163.net','2003/7/3')
insert into EMP_DB values('孙一成','男',24,'湖南省株洲市601厂宿舍15栋308号','0732-8342567','zl@163.net','2002/2/11')
insert into EMP_DB values('林笑','男',27,'湖南省郴洲市人民医院20栋301号','0731-4230123',null,'2006/1/5')
insert into EMP_DB values('卫晴','女',23,'湖南省长沙市望月湖12栋403号','0731-4230123','zl@163.net','2007/3/5')
insert into EMP_DB values('张高','男',30,'湖南省株洲市601厂宿舍18栋122号','0731-4230123','zl@163.net','2004/2/11')
select * from EMP_DB
一
--查询前三条数据
--查询年龄大于25岁的员工的姓名和年龄,取前两条
--查询性别为男的员工信息,取前三条
--查询性别为男的员工年龄和姓名,要求使用别名,并增加一列常量列为
--地址是湖南 ,取前两条
--查询年龄在23到28之间的员工姓名和年龄,增加一个常量'称号'列为‘年轻员工’
--并按照员工的年龄倒序排序,取前三名
二
--查询前几条数据
--1.查询前三条数据
--2.查询年龄大于25岁的员工的姓名和年龄,取前两条
--3.查询性别为男的员工年龄和姓名,要求使用别名,
--并增加一列常量列为地址是湖南 ,取前两条
--4.查询年龄在23到28之间的员工姓名和年龄,
--增加一个常量'称号'列为‘年轻员工’
--并按照员工的年龄倒序排序,取前三名
--5.查询地址在长沙的的年龄大于25岁的男员工信息
--6.查询男员工的姓名包含‘一’的员工姓名和年龄
--7.查询以‘张’开头的员工信息
--8.查询姓名长度为2个字的员工信息
%:匹配0个到任意个字符
_:匹配一个字符,可以代表任意文字
三
--1. 查询所有职员的所有信息
--2. 查询所有职员的姓名,电话,地址
--3. 查询所有女职员的详细信息
--4. 查询年龄在24到26岁之间的男职员的姓名,性别
--5. 查询家住长沙的女职员的姓名,电话,地址
--6. 查询李云,孙一成,林笑的电话,地址
--7. 查询郴洲和株洲的职员的姓名,性别,年龄
--8. 查询家住长沙,年龄在25到28岁之间的男职员的姓名
--9. 查询邮件地址为空的职员
--10.根据员工的年龄进行排序(从高到低),并给每个列取别名
四
--查询姓‘孙’的人员
--查询所有内容根据年龄进行升序操作
--使用区间查询
--查询所有内容根据年龄进行降序操作
查询所有内容根据时间进行倒序操作
--查询年龄在25到28之间的数据
--查询姓名为孙一成和卫张的用户
--查询年龄在25到28之间的数据
--查询年龄为25,27岁的用户使用in进行操作
--将所有的用户年龄加3岁
(默认是升序操作)
create table staff(
EmpName Varchar(20) not null,
EmpSex Varchar(2) check(Empsex='男' or Empsex='女') not null ,
EmpAge Int,
U_address Varchar(50),
Tel Varchar(20),
E_mail Varchar(50),
EmpJoinTime Datetime
)
insert into staff( EmpName,EmpSex,EmpAge,U_address,Tel,E_mail,EmpJoinTime )
values( '赵龙','男',25,'湖南省长沙市伍家岭江南苑9栋203号','0731-4230123','zl@163.net','2005/10/5')
insert into staff( EmpName,EmpSex,EmpAge,U_address,Tel,E_mail,EmpJoinTime )
values('李云','女',23,'湖南省长沙市东风路东风新村21栋502号','0731-4145268','ly@163.net','2003/7/3')
insert into staff( EmpName,EmpSex,EmpAge,U_address,Tel,E_mail,EmpJoinTime )
values('孙一成','男',24,'湖南省株洲市601厂宿舍15栋308号','0732-8342567','syc@163.net','2002/2/11')
insert into staff( EmpName,EmpSex,EmpAge,U_address,Tel,E_mail,EmpJoinTime )
values('林笑','男',27,'湖南省郴洲市人民医院20栋301号','0735-2245214','null','2006/1/5')
insert into staff( EmpName,EmpSex,EmpAge,U_address,Tel,E_mail,EmpJoinTime )
values('卫晴','女',23,'湖南省长沙市望月湖12栋403号','0731-8325124','wq@163.net','2007/3/5')
insert into staff( EmpName,EmpSex,EmpAge,U_address,Tel,E_mail,EmpJoinTime )
values('张高','男',30,'湖南省株洲市601厂宿舍18栋122号','0732-8342143','aee@163.net','2004/2/11')
select * from staff
select Top 3 * from staff
select Top 2 EmpAge,EmpName from staff where EmpAge>=25
select Top 2 EmpAge,EmpName as'年龄','姓名','湖南'as'地址' from staff where Empsex='男'
select Top 3 EmpAge,EmpName as'年龄','姓名','年轻员工'as'称号' from staff where EmpAge>=23 and EmpAge<=28 order by EmpAge desc
select Top 2 EmpAge,EmpName as'年龄','姓名','湖南'as'地址' from staff where Empsex='男'
select * from staff where U_address like'%长沙%' and EmpAge>25
select EmpName ,EmpAge from staff where EmpName like'%一%' and EmpSex='男'
select * from staff where EmpName like'张%'
select * from staff where EmpName like'--'
select * from staff
select EmpName,Tel,U_address from staff
select Tel,U_address from staff where EmpName in ('李云','孙一成','林笑');
-- 查询郴洲和株洲的职员的姓名,性别,年龄
select EmpName,EmpSex,EmpAge from staff where U_address like '%郴洲%' or U_address like '%株洲%';
--查询家住长沙,年龄在25到28岁之间的男职员的姓名
select EmpName from staff where U_address like '%长沙%' and (EmpAge between 25 and 28) and EmpSex = '男';
-- 查询邮件地址为空的职员
select * from staff where E_mail is null
select * ,EmpAge as '年龄'from staff order By EmpAge desc (有列名时,要加逗号,没有列名时,不要加逗号,)
select * from staff where EmpName like'孙%'
select * from staff order By EmpAge asc
select * from staff order By EmpAge desc
select * from staff where EmpAge between 25 and 28;
select * from staff where EmpAge in( 25 ,28)
select * from staff
update staff set EmpAge = EmpAge + 3