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

posted @ 2014-06-05 14:23  8932809  阅读(150)  评论(0)    收藏  举报