黑马程序员_SQL Server语法
一、SQL Server常用语句
1 创建数据库 2 create database myDataBase 3 on 4 ( 5 --数据文件存放的地方-- 6 name = 'myDataBase.mdf', 7 filename = 'D:\db\myDataBase.mdf', 8 size = 3mb, 9 filegrowth = 1mb 10 ) 11 log on 12 ( 13 --日志文件存放的地方-- 14 name='myDataBase_log.ldf', 15 filename='D:\db\myDataBase_log.ldf', 16 size = 3mb, 17 filegrowth = 10% 18 )
1 创建表 2 use myDataBase 3 go 4 create table TBlStudent 5 ( 6 --identity(1,1)表示以1为种子,以1为自动增长的跨度。-- 7 --primary key表示这个是主键(默认表示不允许为空,不允许重复。)-- 8 Fid int identity(1,1) primary key, 9 FName nvarchar(10), 10 FSex bit, 11 FAge int 12 )
1 常用命令 2 alter table 表名 add constraint 字段名 约束类型与条件 添加约束 3 alter table 表名 drop constraint 约束名 删除约束 4 alter table 表名 drop column 列名 删除一列 5 alter table 表名 add 列名 类型 增加一列 6 alter table 表名 alter column 列名 类型 修改数据类型 7 insert into 表名(字段名) values(值) 插入数据 8 insert into 表名 values(值) 依次插入所有字段数据 9 print 字符串 消息框输出字符串 10 select getdate() 获取当前时间 11 select 1+1 语句计算结果 12 select * from 表名 检索所有字段 13 select 字段列表 from 表名 检索指定字段 14 select * from 表名 where 条件 条件检索字段 15 select * from 表名 order by 字段 asc(升序)/desc(降序) 排序 16 select top 3 * from 表名 order by 字段 asc 按数量返回指定数据 17 select top 5 percent * from 表名 按百分比返回指定数据 18 select * into 新表名 from 源表名 备份表(不会备份约束) 19 select * into 新表名 from 源表名 where条件 条件备份表 20 select distinct * from 表名 去重复显示数据 21 select distinct(需要去重字段),其他字段 from 表名 字段去重复显示 22 updata 表名 set 字段名=值 where条件 条件修改数据 23 updata 表名 set 字段1=值1,字段2=值2 where条件 条件修改多个值 24 updata 表名 set 字段=字段+值 where条件 条件追加值 25 drop database 数据库名 删除数据库 26 drop table 表名 删除一张表 27 delete from 表名 删除表中所有数据 28 delete from 表名 where 条件 条件删除一条数据 29 not[非] > and[与] > or[或] ,<>、!=,<,<=,>,>=,= 条件运算符
二、常用约束
常用约束 | |||
约束名 | 缩写 | 作用 | 演示 |
主键约束 | PK | 控制字段内容不能重复,主键在表中只允许出现一个。 | Fid int identity(1,1) primary key |
非空约束 | 控制字段内容不能为空(NULL)。 | FAge int not null | |
唯一约束 | UQ | 控制字段内容不能重复,一个表可以有多个。 | FWeiYi int unique |
默认约束 | DF | 设置新记录的默认值。 | FMoRen nvarchar(10) default('默认值') |
检查约束 | CK | 控制字段的值范围。 | FSex nvarchar(1) check(FSex='男' or FSex='女') |
外键约束 | FK | 建立两个表之间的数据链接。 | foreign key(FWaiJian) references MyAddress(Fid) |
三、聚合函数
聚合函数(是用来求值的) | ||
max | 最大值 | select max(english) from dbo.ScoreShiWan |
min | 最小值 | select min(ZhongHe) from dbo.ScoreShiWan |
avg | 平均值 | select ave(FAge) from dbo.StudentShiWan |
sum | 求和 | select sum(english)/100000 from dbo.ScoreShiWan |
count | 数量 |
select count(*) from TT /select count(FAge) from TT |
四、条件查询
条件查询 | |||
运算符 | |||
between ... and ... | 在...和...之间,包含两端。 | ||
like | 模糊查询运算符:像... | ||
not like | 模糊查询运算符:不像... | ||
通配符 | |||
% | 匹配任意字符任意次数。 | ||
_(下划线) | 匹配任意字符一次。 | ||
[] | 匹配一个字符,且必须是[]范围内的。 | ||
^ | 非 |
1 条件查询演示 2 select * from dbo.StudentShiWan where FName like '李%' 所有姓李的同学。 3 select * from dbo.StudentShiWan where FName like '[李王]%' 所有姓李、王的同学。 4 select * from dbo.StudentShiWan where FName not like '[李王]%' 所有不姓李,也不姓王的同学。 5 select * from dbo.StudentShiWan where FName like '[^李王]%' 所有不姓李,也不姓王的同学。 6 select * from dbo.StudentShiWan where FName like '[_]绍辉' 所有以绍辉结尾的同学。
五、空值处理
1.查询所有生日为NULL的姓名,select FName from T_Student Fbirthday is null
2.判断NULL只能使用 is 或 is not 。is null和 is not null
3.函数isnull(字段,替换值)。查询时为空值的字段显示处理。select isnull(字段,123) from 表名
4.空字符串与NULL含义不同,空字符串依旧有内容。
5.空值也可使用len()处理。
1 空值处理演示 2 select * from dbo.StudentShiWan where FAge is not null 所有年龄不为空的同学。 3 select Fid,FName,isnull(FAge,100),FSex from TT 所有年龄为空的用100替换。
六、数据排序
1.如果有where筛选,order总放在后面
2.多列排序(从左到右)select * from 表名 order by 字段1[desc],字段2[desc],字段3[desc]
3.datalength()系统函数,计算字节数。len()函数,计算字符数。
1 数据排序演示 2 1.select top 3 * from ScoreShiWan order by English asc 3 2.select datalength('我是一个汉字') 4 3.select len('我是一个汉字')
七、数据分组(order by 与having)
1.select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息。
2.在查询语句中使用了group by 子句后,能只select聚合函数与分组的字段。
3.查询列中使用聚合函数后,不允许出现除分组列外的其他列。
4.having是group by 的条件对分组后的数据进行筛选。(与where类似,都是筛选,只不过having是用来筛选分组后的组的。)
5.在where中不能使用聚合函数,必须使用having,having要位于group by 之后。
6.注意having中不能使用未参与分组的列,having不能替代where。作用不一样,having是对组进行过滤。
7.where与having都是进行筛选,但是where在select前,having在select后。
1 数据分组演示 2 1.select FSex from T_Student group by FSex 3 2.select FClass,count(*) as 班级总人数 from T_Student group by FClass 4 3.select FClass,count(*) as 班级人数 from T_Student group by FClass having count(*)>3 5 4.select Math,English from dbo.ScoreShiWan group by English 6 5.select FName,FGender from dbo.StudentShiWan group by FName,FGender 7 6.select count(*),FAddress from TT group by FAddress 8 7.select count(*),FAddress from TT group by FAddress having count(*)<3 //人数小于3的是哪些,如果有where,先筛选where,再select得到结果
八、联合结果集
1.union就是将多个结果集合并成一个结果集。查询语句1 union 查询语句2
2.union会自动合并重复的数据。
3.union all 会保留重复数据,一般都是使用union all,效率会高点。
4.联合需要注意类型一致。cast()函数可以实现数据的类型转换。