2020-12-22

SQL sever 复习

除了表中数据用delete ,文件用remove ,其余都用drop来删除,表数据用update修改,文件用modify修改,其余用alter修改

库的增删改查
查库是否存在exsits:
判断数据库文件是否已经存在 :数据库的记录都存储在master库中的sysdatabases表中
use master
–exists 函数判断()中的查询语句是否返回结果集,如果返回了结果集则得到true,否则得到false
exists( select * from sysdatabases where name=‘想搜索的数据库’)。

创建库
语法:
create database 数据库名称
on primary –默认在主文件组上
(
name=’逻辑名称_data’ ,
size=初始大小,–数值不包含在‘’以内
filegrowth=文件增长 ,
maxsize=最大容量,(无限制为unlimited)
filename=’物理路径’
)
log on
(
name=’逻辑名称_log’ , –当你发现它不是一句完整的sql语句,而仅仅是一个处理结构中的某一句的时候,就需要添加 ,
size=初始大小,–数值不包含在‘’以内
filegrowth=文件增长 ,
maxsize=最大容量, –一般来说日志文件不限制最大容量
filename=’物理路径’
)
多个文件创建时
create database School
on primary
(
name=‘School_data’,–逻辑名称.说明最多能够存储100mb数据,如果没有限制就可以将硬盘存储满
size=3mb,–初始大小
maxsize=100mb,–最大容量
filegrowth=10%,–文件增长一次增长10%
filename=‘f:\project\School_data.mdf’ (主要文件mdf)
),(用逗号!加文件组)
–创建文件组
filegroup mygroup
(
name=‘School_data1’,–逻辑名称.说明最多能够存储100mb数据,如果没有限制就可以将硬盘存储满
size=3mb,–初始大小
maxsize=100mb,–最大容量
filegrowth=10%,–文件增长一次增长10%
filename=‘F:\qiyi\School_data1.ndf’ (次要文件ndf)
)
log on
(
name=‘School_log’,–逻辑名称
size=3mb,–初始大小
–maxsize=100mb,–最大容量
filegrowth=10%,–文件增长一次增长10%
filename=‘f:\project\School_log.ldf’ (日志文件ldf)
),(多个日志文件用逗号隔开)
(
name=‘School_log1’,–逻辑名称
size=3mb,–初始大小
–maxsize=100mb,–最大容量
filegrowth=10%,–文件增长一次增长10%
filename=‘F:\qiyi\School_log1.ldf’
)
例子:
创建新的数据库指定文件组合文件(文件组里有多个文件)

CREATE DATABASE MultipleFileGroups
ON PRIMARY
(
– Primary File Group
NAME = ‘MultipleFileGroups’,
FILENAME = ‘C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\MultipleFileGroups.mdf’,
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1024KB
),
– Secondary File Group
FILEGROUP FileGroup1(除主文件外,多个数据文件肯定要文件组的形式)
(
– 1st file in the first secondary File Group
NAME = ‘MultipleFileGroups1’,
FILENAME = ‘C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\MultipleFileGroups1.ndf’,
SIZE = 1MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1024KB
),
(
– 2nd file in the first secondary File Group
NAME = ‘MultipleFileGroups2’,
FILENAME = ‘C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\MultipleFileGroups2.ndf’,
SIZE = 1MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1024KB
)
LOG ON(日志文件多个时,不用创建文件组,直接逗号接着写)
(
– Log File
NAME = ‘MultipleFileGroups_Log’,
FILENAME = ‘C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\MultipleFileGroups.ldf’,
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1024KB
)
GO

删库: drop database 库名(注意需要在其他库中去删除)
改库:
(删除文件) alter database 库名
remove file 文件名
(修改文件内容)alter database 库名
modify file (name=‘文件名’
要修改的内容)

----把辅数据文件myDB_Dat1的最大大小改为不受限制,增长方式改为每次1MB;
alter database myDB
modify file (name=‘myDB_Dat1’,
maxsize=unlimited,
filegrowth=1mb
)

添加文件:
use 进入当前操作数据库
go
alter database 想操作的数据库 add filegroup 文件组名 --向 数据库添加 文件组
go --批处理标示

alter database 库名
modify filegroup 组名 default --设置FG1文件组为默认文件组
go

alter database 想操作的数据库 add file --向新建的文件组中添加数据文件
(
name=‘文件名’,
filename=‘e:\project\FG1’,
size=5MB,
filegrowth=10%
)to filegroup 组名
go

表的创建增删改查:
查看表是否存在:
判断表文件是否已经存在 :
use 当前库
exists(select * from sysobjects where name=‘想搜索的表’)
创建表
语法:
create table 表名
(
字段名称 字段类型 字段特征(是否为null,默认值 标识列 主键 唯一键 外键 check约束),
字段名称 字段类型 字段特征(是否为null,默认值 标识列 主键 唯一键 外键 check约束)
)
例子:create table 表名(注意所有命名均要符合标识符的命名规范,且必须找一个主键)
(字段名 字段类型[primary key][not null])//sno varchar(10) primary key,注意字符型varchar应该指定大概长度
在存在的表中添加、删除字段:

(添加)alter table 表名
add 列名 varchar(20)

(删除)alter table 表名
drop column 列名
更改列的属性
ALTER TABLE 表名 ALTER COLUMN 列名 NVARCHAR(200)
插入数据语句:
insert into 表名[字段格式] values(’’,’’(按照相应的表中字段格式来加入))//注意1:必须按照表中字段格式
注意2:字段的数据类型为date时插入应该为2000-02-02格式。例子:insert into sc values(‘001’,‘c01’,78);

删除数据语句:
delete
from 表名
where 删除的限制条件(往往伴随着查询)
//例子: 请删除商品名称为’商品6’的销售记录。
delete
from SP
where pno in (//这个语句重点记忆 某某 in([里面是查询(包含了种种条件)])
select pno
from P
where pname=‘商品6’)
改数据语句:
update 表名
set 所改数据(如把男变女,你变马保国)
where 关于数据的限制条件或者查询特定数据的限制(找特定)
例子:
请把商店编号为003,商品名称为’商品4’的销售数量减2。
update SP
set numbers=numbers-2
where pno in( select pno
from P
where pname=‘商品4’)
新例子
把“张小明”的年龄加1岁,性别改为女。
/*update student
set sage+=1 ,ssex=‘f’//更改两项,直接用逗号隔开
where sname=‘张小明’
*/
查询之排序
order by 列名 desc/ASC(排序方式)
查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。
select sno,sname,sage
from student
where sage > 19 and sage< 21 and ssex=‘f’
order by sage desc//order by 字段名 排序方式–ASC递增(默认),desc递减
例子
查询“c01”课程没有成绩的学生学号、姓名。
select sc.sno,sname
from sc,student
where sc.sno=student.sno and cno=‘c01’ and grade is null
消除重复记录
查询student表中的学生分布在哪几个系中。(distinct)
select distinct sdept
from student //select distinct 字段名
模糊查询(关键字like,not like)
例子
查询姓名中第2个字为“明”字的学生学号,姓名,性别。
select sno,sname,ssex
from student
where sname like '明%’//1.""可以放在查询条件的任意位置,但只能代表一个字符,%可以代表任意长度的字符串,最好不要两个%连在一起,但可以可放置两个如%8%[]:通配符,可以用来查询一定范围数据,其中的数据为范围内的任意值且数据范围包括两端数据如‘[1-5]345’表示1-5任意一个数加之345
[^]:用于表示不再某范围内的任意单个字符,包括两端数据2.not like (不包含什么。。)
查询之聚合函数

max()最大值,min()最小值,count([distinct]*)计数,avg()平均数,sum()求和,()里均为字段名,除count
例子:2、计算“JSJ”系的平均年龄及最大年龄。
select AVG(sage),MAX(sage)
from student
where sdept=‘JSJ’

分别计算“c01”,“c02”课程的平均分。
select AVG(grade)
from sc
group by cno
having cno=‘c01’ or cno=‘c02’

查询平均分大于80分的学生学号及平均分。
/select sno 学号,AVG(grade)平均分
from sc
group by grade,sno–这两个缺一不可,方法:把select后包含的字段都加上
having AVG(grade)>80
/

查询之左右外连接
在内连接中只有满足连接条件的元组才能作为结果输出。但有时希望输出那些不满足连接条件的元组信息,这就需要使用外连接。外连接可分为左外连接、右外连接、完全外连接。
1)左外连接(LEFT JOIN 或 LEFT OUTER JOIN)
左外连接包含LEFT JOIN左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为空(NULL)。
2)右外连接(RIGHT JOIN 或 RIGHT OUTER JOIN)
右外连接包含RIGHT JOIN右表所有行,如果右表中某行在左表没有匹配,则结果中对应行左表的部分全部为空(NULL)。
–7、查询“CS”系学生学号、姓名、课程号、成绩。(一门课程也没有选修的学生也要列出,不能遗漏)
select student.sno,sname,sc.cno,grade
from student
LEFT outer join sc on ( Student.sno=sc.sno)–因为sc表比student表的数据长,
如果右连接会使,没有选修的数据被覆盖,而左连接,student表的数据就能真实显示,数据长的放在左边
– 涉及到两个表有同一个属性时,要区分开来,不然会说不明确。
select student.sno,sname,cno
from student join sc
on student.sno = sc.sno
如有不对,请指正。
学习交流,也可以,本人大二,可能知识还不充分,但成长的路上有一起进步的人,总是好的。
觉得有用的点个赞哦!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值