SQL 数据库备、还,附、分,数据查询,聚合函数

时间:2023-03-08 22:04:37
SQL 数据库备、还,附、分,数据查询,聚合函数

认识数据库备份和事务日志备份

数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点。

数据库备份

数据库备份可以手动备份和语句备份

手动备份数据库

1.鼠标右键选择你要进行备份的数据库-任务-备份,可以在常规选项页面你可以选择备份类型是进行完整数据库备份还是差异数据库备份

2.点击添加选项,选择数据库文件的存放路径注意文件名记得加后缀.bak,便于恢复时的查找

数据库还原

右键数据库-还原数据库-添加需要进行还原的数据库文件路径

在还原源选项中你可以选择‘源数据库’,‘源设备’。

1.选择源数据库工具会自动显示该数据库之前的一些备份,然后直接选择需要还原的数据库备份集。

2.选择源设备点击后面的...,添加需要还原的数据库文件,点击确认还原数据库

数据库的附加和分离

分离:找到数据库,点击右键--任务--分离,确定 分离之后,可以复制数据库的文件到其他电脑D:\Program Files\Microsoft SQL Server  \MSSQL10.MSSQLSERVER\MSSQL\DATA

附加:选中数据库,右键--附加--弹出对话框--选择附加的文件--点击添加找到要附加的文件--确定

查询数据(关键字:select)

(1)简单查询

select * from 表名

select 列名 from 表名

select 列名 as 别名 from 表名

(2)条件查询 (where  or  and)

select * from 表名 where 条件1

select * from 表名 where 条件1 or 条件2

select * from 表名 where 条件1 and 条件2

(3)范围查询 (between  and)

select * from 表名 where 列名 between 值1 and 值2

(4)离散查询 (in  not in)

select * from 表名 where 列名 in(数据列表)

select * from 表名 where 列名 not in(数据列表)

(5)模糊查询  (like   %任意多个字符    _任意一个字符)

select * from 表名 where 列名 like ‘%_’

(6)排序查询 ( order by    desc降序   asc升序)

select * from 表名 order by 列名 ——默认升序,也可在列名后面加asc

select * from 表名 order by 列名 desc

(7)分组查询  (group by     having)

select * from 表名 group by 列名 having  条件 ——having需要跟在group by 后使用

(8)分页查询  (top  n 取前n个值)

select  top n * from 表名

(9)去重查询  (关键字: distinct )

select distinct 列名 from 表名

聚合函数(统计函数)

select count(*) from 表名

select sum(列名) from 表名

select avg(列名) from 表名

select max(列名) from 表名

--最高语文成绩 和最低语文成绩
select MAX(yuscore),MIN(yuscore) from xuesheng
--最高数学成绩和最低数学成绩
select MAX(shuscore) as 数学最高分,MIN(shuscore) as 数学最低分 from xuesheng
--每个班级的平均分
select banji 班级,avg(shuscore) 数学平局分 from xuesheng group by banji
--所有男生的姓名
select name from xuesheng where sex='男'
--一班的数学最高分和数学最低分
select MAX(shuscore) as 数学最高分,MIN(shuscore) as 数学最低分 from xuesheng where banji='一班'
--数学成绩最高的同学的信息
select top 1 *from xuesheng order by shuscore desc
--女生的人数
select COUNT(*) from xuesheng where sex='女'
--平均分超过81的班级、人数
select banji,COUNT(*),avg(shuscore) from xuesheng group by banji having AVG(shuscore)>81
--数学成绩大于75的 班级的人数
select banji,COUNT(*)from xuesheng where shuscore>75 group by banji order by COUNT(*) desc
--一班数学成绩大于75的学生信息
select *from xuesheng where shuscore>75 and banji='一班'