SQL Server复习语句

1.数据库的操作:
--创建:create database 库名
--删除:drop database 库名
--系统数据库:master 核心数据库 model:模型 msdb:警告日志 tempdb:临时数据库
--数据库文件分为:数据文件(.mdf/.ndf) 日志文件(.ldf)
--分离 附加 脱机 联机 导入 导出

--2.数据表的操作
--数据类型:整数(int) 小数(money/float) 字符串(varchar 超过8000字节用text) 图像(image) 布尔(bit)
--三个俗语:精度(除了小数点以外的所有数字) 小数位 长度(字节数 一个汉字占2个字节)
--六大约束:and/or
/*
主键:pk primary key 一个表只能有1个主键 但是这个主键可以由多个列名组成  主键一定是唯一且非空的
外键:fk 至少是2个及以上的表 插入数据先主后从 删除数据先从后主 设置关系是去从表中进行设置
检查:性别只能为男或者女 check 
唯一值:姓名不能重复
非空:不能为空
默认:性别默认为男
*/
--创建表
--create table 表名(
--    字段名 数据类型(长度),
--    字段名 数据类型(长度)
--)

--3.增删改查的基本语法
--增加:insert into 表名(字段) values(你要插入的数据)
/*
当我们插入的是全部数据时 字段可以省略不写
字段和后面的数据是必须保持个数、数据类型、顺序的一致
如果主键是标识列 那么不需要你手动维护
*/
insert into tb_stu(sid,sname,ssex,sage) values(1,'jkjk','男',23)
--多行插入
insert into tb_stu(sname,ssex,sage,saddress)
select 'jkjk','男',23 ,'dsfwc'
union
select 'jkjck','男',23 ,'dsfwdc'

--修改:update 表名 set 改成啥 where 改谁
--把马犬改成马疯犬,把年龄改成38岁
update tb_stu set sname='马疯犬',sage=38 where sname='马犬'

--删除:delete from 表名 where 条件
--删除学号为11的学生
delete from tb_stu where sid = 11

--查询
--1.基础查询
select * from tb_stu --查询全部 
select sname,ssex from tb_stu --查询部分 列名之间用逗号隔开
select * from tb_stu where saddress='马厩' and ssex='女' --where后面接条件 多个条件之间用and/or连接
SELECT * FROM tb_stu WHERE sid IN(1,7) --sid=1 or sid=7 
select sname 姓名 from tb_stu where sage is null --is not null 别名三种方式
select * from tb_stu where sname like '_疯%'--模糊查询 %任意字符 _代表单个字符
select * from tb_stu where LEFT(sname,1) = '马'
select * from tb_stu order by sage desc --降序desc 升序asc默认
select top 3 * from tb_stu --top前  50 percent
select * from tb_stu where sage between 15 and 25 --在两者之间
select * from tb_stu where sage>=15 and sage<=25
select distinct ssex from tb_stu --去重复

--2.高级查询
--统计:聚合函数(max min avg sum count) group by...having分组后过滤
--查询各个地方男女生各多少人
select ssex,saddress,COUNT(*) from tb_stu group by ssex,saddress
--查询男生人数在1人以上的地方
select saddress from tb_stu where ssex='男' group by saddress
having COUNT(*)>1

--联表:inner join
--内联的3种方式:学号 姓名 笔试 机试
select a.stuNo,a.stuName,b.writtenExam,b.LabExam from stuInfo as a
inner join stuMarks as b
on a.stuNo=b.stuNo

select a.stuNo,a.stuName,b.writtenExam,b.LabExam from stuInfo as a
join stuMarks as b
on a.stuNo=b.stuNo

select a.stuNo,a.stuName,b.writtenExam,b.LabExam from stuInfo as a,stuMarks as b
where a.stuNo=b.stuNo

--子查询:基本子查询 in子查询
--查询年龄比李斯文大的学生姓名和性别
select stuName,stuSex from stuInfo where stuAge>(
    select stuAge from stuInfo where stuName='李斯文'

--查询笔试成绩大于全班笔试平均分的学生姓名
select stuName from stuInfo where stuNo in (
    select stuNo from stuMarks where writtenExam>( 
        SELECT avg(writtenExam) from stuMarks 
    )
)

--函数
/*
日期:year/month/day getDate() datediff dateadd datepart
字符串:len()长度 left/right replace substring('abcd',2,2)
系统:datalength cast/convert转换数据类型
数学:abs sqrt power ceiling floor round
*/

--补充知识点
--1.复制表以及数据 select * into newTable from stuinfo
--2.复制表不要数据 select * into newTable from stuinfo where 1=2
--3.isnull(a,b):如果a是空的 就用b来替换
--4.可以把查询出来的结果集当做是一个新的表来查询
 
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值