SQL常用语句
第四章:语言基础
数值型
◆定长(准确表达)
(一)整数:
(1) bigint: 8字节,(2)smallint(小整型):2字节
(3) int:4字节    (4)tinyint:1字节
(5)Bit:1位,存储1或0
(二)小数
numeric(p,q)或decimal(p,q),
其中:p为数字位长度,q:小数位长度。
(三)浮点(近似)数:
(1) float:8字节 (2)real:4字节
字符串型
(一)普通编码字符串类型
(1)char(n): 普通编码定长类型,n<=8000
(2)varchar(n):普通编码不定长类型(按实
际长度存储),长度最大不超过n , n<=8000
(3)text:存储大于8000字节的文本
(二)统一字符编码字符串类型
(1)nchar(n): 统一字符编码定长类型,
n<=4000
(2)nvarchar(n):统一字符编码不定长类型,
长度最大不超过n , n<=4000
(3)ntext:存储大于8000字节的文本
(三)二进制字符串类型
(1)binary(n):固定长度,n < 8000,占用n +
4个字节的存储空间
(2)varbinary(n) :可变长度,n < 8000 ,占
用实际长度 + 4个字节的存储空间
注:n为二进制数据的字节数
(3)image :大容量、可变长二进制字符数据,
可用于存储文件
日期时间型
(1)datetime:8字节,年月日时分秒毫秒
(例:‘2001/08/03 10:30:00.000’)
(2)smalldatetime(小整型时间型):4字节,
年月日时分(例:‘2001/08/03 10:30:00’)
货币类型
◆表示正的或负的货币值
(1)money:精确到货币单位的千分之十。存
储大小为 8 个字节。
(2)smallmoney:精确到货币单位的千分之
十。存储大小为 4 个字节。
◆限制到小数点后 4 位。
◆货币类型的数值可以带有适当的货币符
号。例如,若要指定100 英镑,使用
£100。
变量
一、种类
(1)局部变量:@变量名:用户使用
(2)全局变量:@@变量名:系统用于记录信息
二、声明局部变量: declare @变量名类型
三、赋值:  set @变量名=值| 表达式
或 select @变量名=值 | 表达式
四、显示变量的值
print @变量名或 select @变量名
流程控制语句
(1)语句块
begin语句序列 end
(2)分枝语句
if 条件表达式语句块
[ else  语句块  ]
(3)循环语句
while条件表达式语句块
多分枝语句
(1)简单case表达式
case 测试表达式
when 简单表达式1 then 结果表达式1
when 简单表达式2 then 结果表达式2
[else 结果表达式n +1 ]
end
(2)搜索case表达式
case
when 布尔表达式1 then 结果表达式1
when 布尔表达式2 then 结果表达式2
[ else 结果表达式n+1 ]
end
第五章:基本表的创建与管理
(1)create table <;表名> (列定义| 约束定义)(1)表名:表达本表应用语义的字串。
(2)列定义(单列定义序列):单列定义[,单列定义,… ]
单列定义由列名、列类型(尺寸)、列取值约束,列缺省值子句组成(用空格分隔)
(2)列定义各项含义
①列名:表达本列属性语义的字串。(必须填写)
②类型尺寸:本列数据存储规格。(必须填写)
③约束关键字:
unique:指明本列数据值不重
not null:指明本列数据值非空
primary key:指明本列为主码(单列主码)[forelgn key(外码列名)refeyences 主表名(列名):指明本列为外码
default <;常数>,指明本列数据缺省值。
check(<;取值范围条件>)
(3)修改表结构语句
Alter table <;表名>
add <;列名类型> |
drop column 列名|
allter column <;列名新类型>
第六章数据查询与修改
一、SQL查询语句的基本结构
select <;目标列名序列>(需要哪些列)
from<;数据源>(从哪些表)
[where <;检索条件表达式>](根据什么条件)[group by <;分组依据列>]
[having<;分组提取条件>]
[order by <;排序依据列>]
Distinct:去掉重复(在select后面)
二、查询满足条件的元组
(1)比较:=,>,>=,<=,<,<>,!=,!>,!<,not+上述比较运算符
(2)确定范围:between and,not between and
--作用:查属性值在或不在指定范围内的元组--说明:between后是范围的下限(低值)and后是范围的上限(高值)
(3)确定集合:in,not in
--作用:用来查属性值属于指定集合的元组。--格式:列名[not] in(常量[,…])
(4)字符匹配:like,not like
--一般形式为:
--列名[not ] like 匹配串
-- 作用:查指定列名与匹配串常量匹配的
元组。
--匹配串类型:匹配串可以是字符串常量,
也可以含有通配符。
--通配符种类:
%(百分号):匹配0个或多个字符。
_(下划线):匹配一个字符。
[ ]:匹配括号中的字符
[^ ]:不匹配括号中的字符
(5)空值:is null,is not null
--空值是未确定的值或其值尚不知道
--例如,学生选课,在开学初学生只有选课记录,没有修课成绩,这时成绩一项的值就是空值。
--不能用=或<>,只能用is null或is not null
--空值不是一个确定的值,所以不可以用等
于或不等于来比较或衡量;
--空值只能说是空值(is null)或不是空值
(is not null)。
(6)多重条件:and,or
三、简单查询(单表查询)
(一)对查询结果进行排序:
--排序子句为:
Order by <;列名> [asc | desc ] [,<;列名> … ]
字符串常量是由什么括起来的字符序列--说明:按<;列名>进行升序(asc)或降序
(desc)排序。
四、使用计算函数进行查询
(1)count( * ):统计表中元组个数
(2)count(<;列名>):统计本列非空列值个数
(3)sum(<;列名>):计算列值总和(必须是
数值型列)
(4)avg(<;列名>):计算列值平均值(必须是
数值型列)
(5)max(<;列名>):求列值最大值
(6)min(<;列名>):求列值最小值
五、对查询结果分组
--作用:可以控制计算的级别:对全表还是对一组。
--目的:细化计算函数的作用对象。
--分组语句的一般形式:
[where <;条件> ]
[group by <;分组条件>]
[having <;组过滤条件>]
having用于对分组自身进行限制,它有点象where子句,但它用于组而不是对单个记录。
六、内连接
from表1[inner]join表2 on<;连接条件>
七、外连接
--外连接会返回from 子句中提到的至少一个表的所有行,只要这些行符合任何where 或having 搜索条件。
--分类:
(1)left outer join 或left join:左外连接左向外连接运算符left outer join 指明,不管第二个表中是否有匹配的数据,结果将包含第一个表中的所有行。
(2)right outer join 或right join:右外连接
右外连接运算符right outer join指明:不管第一个表中是否有匹配的数据,结果将包含第二个表中的所有行。
八、合并多个结果集
将两个或更多查询的结果集组合为一个结果集,该结果集包含联合查询中的所有查询的全部行。
union语句形式
九、select into
-- select into 语句创建一个新表,并用select 的结果集填充该表。新表的结构由选择列表中表达式的特性定义。
select into子句的大致格式为:select 选择列表
into 新表名
from 子句…
十、使用top限制结果集
top 子句限制返回到结果集中的行数。
格式:
[ top n [ percent ] [ with ties ] ]
top n:取前n个结果
top n percent:取前n%个结果
with ties:取前n个结果,包括并列的行。
必须同order by一起使用
十一、子查询
--在sql语言中,一个select-from-where语句称为一个查询块。
--子查询是一个select 查询,它嵌套在select、insert、update、delete 语句的where
或having子句内,或其它子查询中
--子查询的select查询总是使用圆括号括起来
包括子查询的语句通常采用以下格式中的一种
(1)where 列名[not] in (子查询)
(2)where [not]exists (子查询)
十二、嵌套查询
(1)带IN的子查询
子查询的结果往往是一个集合,IN就是在这个集合中进行操作。
(2)带有比较运算符的子查询
--带比较运算符的子查询指父查询与子查询之间用比较运算符连接,
--当用户能确切知道内层查询返回的是单值时,可用>、<、=、>=、<=、<>运算符
十三、相关子查询
--相关子查询在子查询的where子句中关联外部表
--经常用exists ( )函数引导
-
-exists代表存在量词,带exists函数的子查询不返回结果数据,只产生逻辑真值和
逻辑假值。
十四、单行数据的插入
--插入单行记录的insert语句的格式为:
-- insert into <;表名> [(<;列名表>)]
values(值表)
--功能:新增一个符合表结构的数据行,将值表数据按表中列定义顺序[或列名表顺序]赋给对应列名。
十五、多行插入(插入子查询的结果)
--格式:insert into <;表名>
[(<;列名表>)]select语句
--功能:将(结构与列名表相同的)子查询结果数据插入<;表名>指示的表中,新行中列名表以外各列置null。
--用途:
①提取库中数据,生成新表数据。
②表结构变更后,原有数据重新置入。
十六、更新数据
update<;表名>set <;列名= 表达式>[,…n]
where< 更新条件>
十七、删除数据行
delete from <;表名>
[where <;删除条件>]
(1) 无条件删除(无where子句)
删除表中全部数据,但保留表定义
(2)有条件删除
删除满足条件的数据行
①基于本表条件的删除
②基于其它表进行删除
(3)基于其它表进行删除
--用子查询实现
Delete from 删除表名
where 列名in(子查询)
--用多表连接实现
delete from删除表名
from 连接表名1 join 连接表名2
on 连接条件
where 删除条件
十八、基本表数据更新
update <;表名>
set <;列名=常量值| 表达式>
[,<;列名=常量值| 表达式>…]
[where <;更新条件>]
第七章实现数据完整性
一、实现约束
(1)primary key 约束
--保证实体完整性
-
-每个表有且只有一个primary key 约束
--格式:
primary key ( 列名[, … n ] )
(2)unique 约束
-- 确保在非主键列中不输入重复值。
--应用在客观具有唯一性质的列上,如身份证号、社会保险号等。
--格式
unique ( 列名[, … n] )
(3)foreign key约束
--用于建立和加强两个表数据之间的连接的一列或多列
--格式:
Foreign key (本表列名)
references 引用表名( 引用列名) (4) default 约束
--当向表中插入数据时,如果没有为定义了default 的列提供值,则是隐式要求为此列使用默认值。
--一个default只能约束一列
--格式:
default 约束表达式for 列名
(5) check约束
--通过限制输入到列中的值来强制域的完整性。
--可定义同表多列之间的约束关系--格式
check (约束表达式)
二、查看约束信息
sp_helpconstraint 表名
三、删除约束
alter table 表名
drop constraint 约束名
第八章视图
一、定义视图
create view 视图名
[ ( 列名[ ,...n ] ) ]
as
select语句
二、删除视图
drop view 视图名

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。