八、SQL Server(T-SQL)数据语言操作

1 T-SQL的运算符

1.1 介绍

  1. 算术运算符:+,-,*,/,%
  2. 赋值运算符:=
  3. 逻辑运算符:AND,OR,NOT
  4. 比较运算符:>,<,<=,>=,<>,=,!=(非SQL92标准)
  5. 连接运算符:“+”

运算符优先级:
()> 算术运算符 > 比较运算符 > 逻辑运算符(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命令

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值