数据库脚本代码
创建数据量
create database dbtast--数据库名称
on primary
(
name = 'dbtest', --主数据文件逻辑名称
filename = 'D:\stuDB_data.mdf', --主数据文件物理名称
size = 5mb, --主数据文件的初始大小
maxsize = 100mb, --主数据文件最大值
filegrowth = 15% --主数据文件的增长率
)
log on
(
name = 'dbtest_log',
filename = 'D:\stuDB_log.ldf',
size = 2mb,
filegrowth = 1mb
)
删除数据库
drop database dbtest
在指定数据库添加数据表
use dbtest
create table ClassInfo
(
cId int not null primary key identity(1,1),
cTitle nvarchar(10)
)
主键:primary key
非空:not null
唯一:unique
默认:defalut()
检查:check()
外键:foreign key(当前表列名) references 表明(引用列名)
简单查询数据表
select * from ClassInfo --表名
增加单个数据
insert into ClassInfo(cTitle) values('100')
insert into 表名(列名) values('值')
增加多个数据
insert into ClassInfo(cTitle)
values ('青龙'),('白虎'),('朱雀'),('玄武')
1.要求值的列名与值要位置对应
2.如果所有列都要插入值,则可省略列名按顺序插入
修改整列数据
update ClassInfo set cTitle = 'admin', cTitle = 'admin'
为指定行修改列数据
update ClassInfo set cTitle = 'admin'
where ClassInfo=1 --修改第"1"行第cTitle列数据
删除数据表中的数据
delete (from) ClassInfo where cId = 1 --显示表中第1行的数据
清空数据表中所有行列数据(框架不变)
truncate table ClassInfo
别名
select UserName as name
from UserInof ui
设置别名之后使用必须使用别名
单行查询
select top 1 * from ClassInfo --查询前1条数据
比例查询
select top 2 * from ClassInfo --查询前2%的数据
对数据进行重新排序
select * from ClassInfo
order by cid desc,sId desc --asc表示从小到大,desc表示从大到小
查询cid数据并消除重复行
select distinct cid from ClassInfo --消除cid重复的行数只保留重复的第一行
where语句
select name from ClassInfo where Cid=1 --查询Cid=1的名字是什么
where返回的值为bool,查询到数据则为true查询不到则为false
比较运算符包括=,<,>,<=,>=,!=,<>(泛型)
区间查询语句
select * from ClassInfo
where Cid>=3 and Cid<=8
select * from ClassInfo
where Cid between 3 and 8 --显示Cid在3到8之间的数据
select * from ClassInfo
where Cid=1 or Cid=3
select * from ClassInfo
where Cid in(1,3) --显示Cid为1或者3的数据
逻辑运算符:and(与) or(或) not(非)
模糊查询
select * form ClassInfo
where Name like '1[5-9]%' --查询所有15...,16...,17....,18...,19...的数字
%为一个字符或者多个_为固定一个字符
[]表示一个约束,[1-5]为范围,[123]为123,[!123]不是123
select * from ClassInfo
where Cid is null --查询Cid数据等于null的数据
不是null则为is not null
优先级:小括号>not>比较运算符>逻辑运算符
连接查询(当需要的结果不在一张表的时候考虑使用)
select * form StudentInof
inner join ClassInfo on Student.Cid=ClassInfo.Cid
select * form StudentInof as si
inner join ClassInfo as ci on si.Cid=ci.Cid --查询学生信息和班级信息
select * form StudentInof as si
left join ClassInfo as si on ci.Cid=si.Cid
select * form StudentInof as si
right join ClassInfo as si on ci.Cid=si.Cid
内连接 inner join 两表中的完全匹配的数据
左外连接 left outer join 两表中完全匹配数据,左表中特有的数据
右外连接 right outer join 两表中完全匹配数据,右表中特有的数据
完全外连接 full outer join 两表中为安全匹配的数据,左表中特有的数据,右表中特有的数据
聚合函数
select COUNT(*) from ClassInfo --查询当前表有多少行
select MAX(Cid) from ClassInfo --查询当前表最大Cid值
select MIN(Cid) from ClassInfo --查询当前表最小Cid值
AVG() 求平均值函数
select ClassInfo.*,AVG(Cid) over() from ClassInfo --将结果显示在每一行的后面
分组
select SGender,COUNT(*) from ClassInfo
group by sGender --性别分组 两组 0/1
select sGender,Cid,COUNT(*) form StudentInof
group by sGender,Cid --每个班的男生是多少分组
分组之后进行筛选
select Cid,sGender,COUNT(*) from StudentInof
where Sid>2 group by Cid,
sGender having COUNT(*)>3 --在分组之后进行筛选之后的信息
联合查询
union
union all
except --差集
intersect --交集
备份操作(向一个不存在的表中插入数据)
select * into test1 from ClassInfo --备份表里面的数据和结构
select * into test2 from ClassInfo
where 1=2 --只备份结构不备份数据
(向一个存在的表中插入数据)
insert into test2(cTitle)
select cTitle from ClassInfo --对主键列无法操作插入
类型转换
select CAST(89.000000 as decimal(4,1))
89.0
select CONVERT(decimal(4,1),89.000000,)
89.0
select CAST(1 as CHAR(1))+'1'
11(字符串)