八SQL Server(T-SQL)数据语言操作
Posted 摸爬滚打的程序媛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八SQL Server(T-SQL)数据语言操作相关的知识,希望对你有一定的参考价值。
1 T-SQL的运算符
1.1 介绍
- 算术运算符:+,-,*,/,%
- 赋值运算符:=
- 逻辑运算符:AND,OR,NOT
- 比较运算符:>,<,<=,>=,<>,=,!=(非SQL92标准)
- 连接运算符:“+”
运算符优先级:
()> 算术运算符 > 比较运算符 > 逻辑运算符(NOT,AND,OR) >连接运算符 > 赋值运算符
1.2 举例说明
(1)算术运算符
--算数运算符
--1、求和
SELECT 3+4 AS ADD_RESULT
GO
--2、除的结果
--左右两边都是整数,结果为整数
SELECT 5/2 AS DIVIDE_RESULT
GO
--左右两边有一个是非整数,结果为非整数
SELECT 5.0/2 AS DIVIDE_RESULT
GO
--3、取余/取模
SELECT 5%2 AS MODULE_RESULT
GO
(2)赋值运算符
--赋值运算符:将等号右边的值赋给等号左边的变量或表达式
DECLARE @age int
SET @age = 18
SELECT @age
GO
(3)比较运算符
--比较运算符 >,<,<=,>=,<>,=,!=(非SQL92标准)
DECLARE @x int,@y int
SET @x = 8
SET @y = 10
IF @x >= @y
SELECT '@x的值大于等于@y的值'
ELSE
SELECT '@y的值大'
GO
(4)逻辑运算符
--逻辑运算符 AND OR NOT
--优先级 NOT > AND > OR
IF (3 >5 OR 6 > 3 AND NOT 6 > 4)
SELECT 'TRUE(真)'
else
SELECT 'FALSE(假)'
GO
(5)连接运算符
--连接运算符 +
--如果+左右都是数值型,就是算术运算符
--如果+左右都是字符型,就是连接运算符
--如果+左右类型不一致,需要类型转换
DECLARE @color varchar(4)
SET @color = '白色'
SELECT '我最喜欢的颜色是' + @color
GO
2 使用SSMS操作数据
SSMS,全称为
SQL Server Managerment Studio
2.1 插入数据
- 插入数据的顺序:先插入主表中的数据,然后再插入引用表中的数据。
- 标识列(即主键列)不需要手动添加数据。
如下图中,Employee表外键引用了Post表中的主键PostId,则Employee表为引用表,Post表为主表。
2.2 修改数据
比较简单,没啥好说的。
2.3 删除数据
- 删除数据的顺序:先删除引用表中的数据,再删除主表中的数据。
3 使用T-SQL操作数据
3.1 插入数据(一行数据)
语法:
INSERT [INTO] <表名> [(列名)] VALUES (值列表)
[]里面的内容可以省略
注意事项
1、每次插入一行数据,不能只插入半行或者几列数据
2、每个数据值的数据类型、精度和小数位数必须与相应
的列匹配
3、不能为标识列指定值
4、如果在设计表的时候就指定了某列不允许为空,则必须插入数据
5、插入的数据项,要求符合检查约束的要求
6、具有缺省值的列,可以使用DEFAULT(缺省)来代替插入的数值
3.1.1 向含有标识列的表中插入数据,要求标识列不允许手动插入
--[1]向含有标识列的表中插入数据,要求标识列不允许手动插入
USE E_Market
GO
--向CommoditySort表中插入数据
INSERT INTO CommoditySort VALUES ('手机数码')
3.1.2 向表中所有的列插入数据,要求值的顺序必须与列的顺序一致,列名可省略
--[2]向表中所有的列插入数据,要求值的顺序必须与列的顺序一致,列名可省略
INSERT INTO UserInfo VALUES ('iloveyou','卢晓凤','1','lxf@sohu.com','北京海淀','010-82338233')
3.1.3 向表中非空列插入数据,要求列的个数和值的个数必须完全相同
--[3]向表中非空列插入数据,要求列的个数和值的个数必须完全相同
INSERT INTO CommodityInfo(SortId,CommodityName,InPrice,OutPrice,Amount)
VALUES(1,'索尼z3',3300,42999,100)
3.1.4 向含有默认值的表中插入数据,默认值使用DEFAULT
--[4]向含有默认值的表中插入数据,默认值使用DEFAULT
INSERT INTO OrderInfo(UserId,CommodityId,Amount,PayMoney,PayWay,OrderTime,SendGoods,Confirm)
VALUES(1,1,2,8589,DEFAULT,'2014-3-26',1,1)
3.2 插入数据(多行数据)
3.2.1 将现有表中数据插入到已存在的表中
语法
INSERT INTO <表名>(列名1,列名2...)
SELECT <列名1,列名2,...>
FROM <源表名>
举例,将UserInfo表中的UserId、UserName、UserAddress、Phone插入新表UserAddress中
--将UserInfo中的数据添加到一个新表中,UserAddress
--要求这个新表必须存在,需要新建一张表,
--而且表中的列的个数、顺序、数据类型必须与UserInfo中的数据类型一致
--UserId、UserName、UserAddress、Phone
--先创建新表
IF EXISTS(SELECT * FROM sysobjects WHERE name = 'UserAddress')
DROP TABLE UserAddress
GO
CREATE TABLE UserAddress
(
Uid int PRIMARY KEY(Uid) NOT NULL,
Uname varchar(50) NOT NULL,
Uaddress varchar(200),
Uphone varchar(20) NOT NULL
)
GO
--一次性将UserInfo中的数据UserId、UserName、UserAddress、Phone插入到新表UserAddress中
INSERT INTO UserAddress(Uid,Uname,Uaddress,Uphone)
SELECT UserId,UserName,UserAddress,Phone
FROM UserInfo
GO
3.2 修改数据
语法
UPDATE <表名> SET <列名> = 更新值
[WHERE 更新条件]
USE E_Market
GO
--更新数据:UPDATE <表名> SET <列名> = 更新值 [WHERE 更新条件]
--1、如果要更新的值为多个,用逗号分隔
--2、WHERE条件不写,则更新所有的数据
--3、WHERE条件为多个时,可以使用逻辑运算符(AND、OR、NOT)或连接运算符(+)
--3、可能更新一行或多行数据,或者不会更新任何数据
--[1]省略WHERE条件的更新,更新数据库中所有的数据
--更新性别
UPDATE UserInfo SET Gender = 1
--[2]更新一个值
UPDATE UserInfo SET UserName = '张三' WHERE UserId = 1
--[3]更新一个值,WHERE条件多个
UPDATE UserInfo SET UserName = '李平' WHERE UserId = 2 AND Gender = 1
--[4]更新多个值,,中间使用逗号分隔
UPDATE UserInfo SET UserName = '李四',UserAddress = '北京昌平' WHERE UserId = 1
3.3 删除数据
语法1
DELETE [FROM] <表名> [WHERE <删除条件>]
语法2
TRUNCATE TABLE <表名>
TRUNCATE 注意事项:
1、表结构、列、约束等不被影响
2、不能用于有外键约束的表
3、标识列重新开始编号
3.3.1 DELETE 删除数据
USE E_Market
GO
--删除:DELETE [FROM] <表名> [WHERE <删除条件>]
--[1]基本删除,省略WHERE 它将删除表中所有的数据
--使用DELETE删除数据后,标识列继续增长,不会从标识种子开始
DELETE FROM OrderInfo
--[2]带条件的删除,是否存在主外键关系,如果存在,先删除子表中的数据
DELETE FROM OrderInfo WHERE UserId = 1
DELETE FROM UserInfo WHERE UserId = 1
3.3.2 TRUNCATE 删除数据
USE E_Market
GO
--使用TRUNCATE TABLE 删除数据
--1、类似于没有WHERE条件的DELETE语句,删除表中所有数据
--2、删除数据之后,再插入数据,标识列从标识种子开始
--3、不能用于有外键的表
TRUNCATE TABLE OrderInfo
4 数据的导入导出
当处理的数据有上万条时,使用SQL语句处理肯定不行的。SQL server提供了数据的导入导出功能。
导入数据:
从SQL Server的外不数据源中检索数据,然后将数据插入到SQL Server表的过程。
导出数据:
将SQL Server中的数据导出指定格式的过程。
5 批处理
- 批处理是指从应用程序一次性地发送一组完整SQL语句到SQL Server上执行。
- 批处理的所有语句被当作一个整体,被成批地分析,编译和执行。
- 所有的批处理指令以GO作为结束的标志
GO的特点:
1、GO语句必须自成一行,只有注释可以在同一行上
2、每个批处理单独发送到服务器
3、GO语句不是T-SQL命令
以上是关于八SQL Server(T-SQL)数据语言操作的主要内容,如果未能解决你的问题,请参考以下文章