2. select shuming 书名,zuozhe 作者,jiage*0.7 价格 from T_Book where chubanshe ='机械工业出版社'
3. select shuming 书名,zuozhe 作者,jiage 价格, chubanshe 出版社 from T_Book where jiage between 30 and 60
4. select top 3 shuming 书名,zuozhe 作者,chubanshe 出版社, jiage 价格 from T_Book order by jiage desc
6.select chubanshe 出版社,AVG(jaige) 平均价,MAX(jiage) 最高价 ,MIN(jaige) 最低价 from T_Book group by chubanshe order by SUM(jiage) desc
10.select top 1 chubanshe 出版社, count(*) 出版图书个数 from T_Book group by chubanshe order by COUNT(*) desc
book表的做好了 reader的自己做吧 字段名我用拼音做代替的 你自己替换成你表中的字段
--1.1创建新表 scorecreate table score
(
[学号] varchar(10)
,[课程号] varchar(10)
,[成绩] float
)
--1.2插入新表的值
insert into score values(103,'3-245',86)
insert into score values(105,'3-245',75)
insert into score values(109,'3-245',68)
insert into score values(103,'3-105',92)
insert into score values(105,'3-105',88)
insert into score values(109,'3-105',76)
insert into score values(101,'3-105',64)
insert into score values(101,'3-105',64)
insert into score values(101,'6-166',85)
insert into score values(107,'6-166',79)
insert into score values(108,'6-166',81)
--1.3 按排列顺序查看创建的表的内容
select* from score order by [课程号] asc,[成绩] desc --这样查看不舒服,可以修改下,如下面这句:
select [课程号],[成绩],[学号] from score order by [课程号] asc,[成绩] desc
--1.4
select y=sum([成绩]) --查找3-105 的分数之和,问题6-166的总分也是这个道理
, x=count([课程号]) from score where [课程号]='3-105'--查找3-105的课程个数
--计算平均分
select [3-105平均分]=y/x from(select y=sum([成绩])
, x=count([课程号]) from score where [课程号]='3-105')t
--1.5 查询成绩为定值的记录
select * from score where [成绩]='85' or [成绩]='86' or [成绩]='88'
--这里用and 的话没法查出内容,
--1.6 成绩在多少到多少的记录
select * from score where [成绩] between 60 and 79 order by [成绩] desc
--1.7查询每个学生的最高分
select * from score where [成绩] in(select max([成绩]) from score group by [学号])
--1.8课程最高分
select * from score where [成绩] in(select max([成绩]) from score group by [课程号])
--各门课程最高分大于90的就是在上面的内容上增加一个where 条件,自己尝试下
select * from(select * from score where [成绩] in(select max([成绩]) from score group by [课程号]))t
where [成绩]>=90
--注意数据库别名的用法't'
--1.9弟九个问题跳过,扯蛋的问题
--2.0课程次数及排序
select [课程号],[课程次数]=count([课程号]) from score group by [课程号] order by 课程次数 desc
--注意数据库自定义字段的使用
--升序 asc ,降序 desc
--2.1最后一个问题你自己考虑考虑,方法基本都在前面几个问题里面可以找到。
安装一个数据库服务器,建立一个库。然后先做这些练习吧,语句都加了注释了
/*
建立一个由3个文件组成的数据库,数据库名称为test。
主数据文件逻辑名称为test_data,物理文件名c:\test_data.mdf;
辅助数据文件逻辑名称为test_data2,物理文件名c:\test_data2.ndf
日至文件逻辑名称为test_log,物理文件名c:\test_log.ldf
所有文件初始尺寸为3mb,可以自动增长,最大尺寸为15mb。
*/
create database test on
primary
(
name=test_data,
filename='c:\test_data.mdf',
size=3mb,
maxsize=15mb,
filegrowth=1mb
),
(
name=test_data2,
filename='c:\test_data2.ndf',
size=3mb,
maxsize=15mb,
filegrowth=1mb
)
log on
(
name=test_log,
filename='c:\test_log.ldf',
size=3mb,
maxsize=15mb,
filegrowth=1mb
)
/*
创建一个名为employees的表,该表由5个字段组成:emp_id(员工编号)、ename(员工名称)、
age(年龄)、title(职务)、salary(薪水)。其中emp_id为该表的主键。该表存放在主文件组。
*/
use test
go
CREATE TABLE employees(
emp_id char (4) primary key,
ename nvarchar (10) NOT NULL,
age tinyint NOT NULL,
title nvarchar (10) NULL,
salary money NULL,
) ON [PRIMARY]
--向employees表插入部分数据
insert into employees values('0001','杨建新','22','经理','3000')
insert into employees values('0002','杨建新','23','职员','4000')
insert into employees values('0003','杨建新','24','总经理','5000')
insert into employees values('0004','杨建新','26','职员','2000')
--创建备份设备test_bak,其位置为c:\backup\test_bak.bak
sp_addumpdevice 'disk','test_bak','c:\backup\test_bak.bak'
--建立数据库test的完整备份到备份设备test_bak,并命名为test_full_bak1
backup database test to test_bak with name='test_full_bak1'
--向employees表插入新数据
insert into employees values('0005','王建新','24','总经理','1000')
insert into employees values('0006','刘建新','26','职员','2000')
--执行test数据库的事务日志备份,该备份追加到备份设备test_bak,命名为test_log_bak1
backup log test to test_bak with name='test_log_bak1'
--截断employees表,清空内容(记录此时的时间)
truncate table employees
--备份数据库的尾部日志
use master
go
backup log test to test_bak with name='test_log_recovery',norecovery
--恢复数据库的完整备份,并且不要执行还原进程(norecovery)
restore database test from test_bak with file=1,norecovery
--恢复第一个日志备份,如果此时执行recovery,将得到所有数据
restore log test from test_bak with file=2,recovery
--如果执行上述语句时,使用norecovery选项,则可以继续恢复第二个日志备份,即尾部日志
restore log test from test_bak with file=2,norecovery
restore log test from test_bak with file=3,recovery
--如果按照上述 *** 作,则恢复完成后employees表中没有任何数据,因为尾部日志中包含清空表的 *** 作
--若要恢复所有数据,也可以恢复到时间点到清空时间之前
restore log test from test_bak with file=3,stopat='2008-11-16 11:25:00'
--添加一个名为mike,密码为123456的login账户,该账户的默认数据库为northwind
sp_addlogin 'mike','123456','northwind'
--切换到northwind数据库
use northwind
go
--将登录账户mike映射为当前数据库中的用户
sp_grantdbaccess 'mike','mike' --或:sp_adduser 'mike','mike'
--建立数据库角色accessdata
sp_addrole tablecreate
--为数据库角色tablecreate赋予创建表的权限
grant create table to tablecreate
--将用户mike加入到角色tablecreate中
sp_addrolemember 'tablecreate','mike'
--赋予用户mike对products表的插入数据权限
grant insert on products to mike
--撤销用户mike对products表的权限
revoke insert on products from mike
--察看角色信息
sp_helprole tablecreate
--察看角色包括的成员
sp_helprolemember tablecreate
--在角色tablecreate中删除成员mike
sp_droprolemember 'tablecreate','mike'
--删除角色tablecreate
sp_droprole tablecreate
--删除数据库用户账户
sp_revokedbaccess 'mike'
--删除登录帐号
sp_droplogin 'mike'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)