黑马程序员_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
计算时NULL不是最大,也不是最小,和NULL计算结果也是NULL。

四、条件查询

条件查询
运算符  
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()函数可以实现数据的类型转换。

posted @ 2014-03-22 15:36  dlwcg  阅读(503)  评论(0编辑  收藏  举报