SQL入门(1)
在表示列字段里插入字段内容
SET IDENTITY_INSERT 类别(表) ON;
GO
INSERT INTO 类别
(类别ID,类别名称)
VALUES (100,N’电器’)
GO
SELECT * FROM 类别
GO
从数据表中查询记录并插入到另一个表中
INSERT INTO 雇员通讯录 SELECT 雇员ID,姓氏,名字,邮政编码,城市,地址,家庭电话 FROM 雇员
其中雇员通讯录表中包含:雇员ID,姓氏,名字,邮政编码,城市,地址,家庭电话这些字段,直接将雇员的表里的记录插入到雇员通讯录表中。
INSERT INTO 雇员通讯录(雇员ID,姓氏,名字,邮政编码,城市) SELECT 雇员ID,姓氏,名字,邮政编码,城市 FROM 雇员
插入部分字段
其中把字段 城市 换成‘北京’ 就默认为所有的记录插入北京
在表中插入默认值
INSERT INTO 表 DEFAULT VALUES
UPDATE语句
引用其他表里的字段值更新记录
UPDATE 订单明细
SET 单价=产品.单价
WHERE (订单明细.产品=产品.产品ID)
AND (产品.产品名称=N’牛奶’)
SELECT语句
添加自动计算列
SELECT 订单ID as 订单编号,产品ID as 产品编号,单价*(1.折扣)*数量 as 总价
FROM 订单明细
查看不重复记录
SELECT DISTINCT 货主城市 FROM 订单
如果在货主城市后面再加个字段货主名称时,那么查询的是货主名称和货主城市不同时相同的记录
转换类型函数
CONVERT(DATETIME,’1991.1.1’,102)
获取当前年函数
YERA(Getdate()).YEAR(日期字段)
查询NULL值字段
SELECT * FROM 雇员 WHERE 上级 IS NULL
查询通配符
% 代替零个货多个字符的任意字符串
_ 代替任何单个字符
[] 代替制定范围([a.f])或集合([abcdef])中的任何单个字符
[^] 代替不属于制定范围[a.f])或集合([abcdef])中的任何单个字符
Join和Union的区别
Join是将两个结果集进行左右合并,一般来说是会水平增加字段数,而Union是上下增加数据条数,数据的条数会增加。
使用SELECT Into为查询结果建立新表
SELECT 产品ID,产品名称 INTO 缺货记录 FROM dbo.产品 where 库存量=0
使用SELECT INTO复制表结构
SELECT * INTO 订单记录 FROM 订单 where 0=1
如果只复制表结构,不复制表数据,使用where0=1,那么返回的是false,就不复制表数据
WITH 建立临时表
WITH 临时表(雇员ID,姓名) AS SELECT 雇员ID,姓名 FROM 雇员 )
CASE @变量 WHEN ‘饮料’ THEN ‘类别:饮料’
WHEN ‘点心’ THEN ‘类别:点心’
REPLICATE函数
REPLICATE ( character_expression , integer_expression )
SELECT REPLICATE(au_fname, 2)
FROM authors
ORDER BY au_fname
重复两遍作者的名字。
下面是结果集:
AbrahamAbraham
AkikoAkiko
AlbertAlbert
substring
substring
("abcdefg",2,4) 返回的是abcdefg字符串从第2位的b开始的后4位
也就是到e结束的字符串 即:bcde
JOIN用法
JOIN 分为:内连接(INNER JOIN)、外连接(OUTER JOIN)。其中,外连接分为:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)、全外连接(FULL OUTER JOIN),其中外连接的“OUTER”关键字可以省略不写。
例:
表A有列ID,值为:
1
2
3
4
表B有列ID,值为:
3
4
5
6
1.内连接(显示左右两表能完全匹配的数据):
select A.ID, B.ID from A INNER JOIN B ON A.ID = B.ID
结果为:
3 3
4 4
2.左外连接(显示左表所有数据,右表匹配不上的显示为NULL):
select A.ID, B.ID from A LEFT JOIN B ON A.ID = B.ID
结果为:
1 NULL
2 NULL
3 3
4 4
3.右外连接(显示右表所有数据,左表匹配不上的显示为NULL):
select A.ID, B.ID from A RIGHT JOIN B ON A.ID = B.ID
结果为:
3 3
4 4
NULL 5
NULL 6
4.全外连接(显示左右两量表所有数据,两表匹配不上的显示为NULL):
select A.ID, B.ID from A FULL OUTER JOIN B ON A.ID = B.ID
结果为:
1 NULL
2 NULL
3 3
4 4
NULL 5
NULL 6
left out join 左连接,用种简单的话来给你解释哈,若果是左连接.则保留左表所有的行,即使在右表 (Orders) 中没有匹配的行。同理,若果是right join ,则保留右表所有的行,即使在左表 (table_name1) 中没有匹配的行。
在执行SP时,如果存在判断某些条件,可以用IF EXISTS()执行
IF EXISTS ( SELECT TOP 1 SlipNo AS SlipNoCnt FROM GiftRecvSuppHdr
WHERE MoveTypeCode = 'S10'
AND ISNULL(RecvDecideChk, '') = ''
AND ISNULL(RecvUserID , '') = ''
AND LEFT(CreateDate, 7) <= LEFT(@pFinishedYearMonth, 4) + '-' + RIGHT(@pFinishedYearMonth, 2)
Begiin
End
浙公网安备 33010602011771号