《SQL SERVER 2008数据库学习笔记(一)——Clown》

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

《SQL SERVER 2008数据库学习笔记(一)——Clown》 最近看了一本SQL SERVER2010的教材,顺便记录了一下笔记(PS:此书暂时没有看完、所以暂时更新一下内容)!一下内容为本人自己整理、如有错误还请大家指出以免影响别人的学习。

1、 创建一个表TestDB

DROP TABLE TestDB

CREATE TABLE TestDB(

id varchar(15) NOT NULL,

name varchar(15) NOT NULL,

sex int NOT NULL,

CONSTRAINT pk_id PRIMARY KEY(id)

);

2、 向TestDB表中插入一条数据

INSERT INTO TestDB (id,name,sex) VALUES ('001','Clown',1);

3、 查询TestDB中全部数据

SELECT * FROM TestDB;

4、 给查询的列名起个自定义的别名

SELECT id AS c1,name AS c2,sex AS c3 FROM TestDB;

也可以不加[AS]

SELECT id c1,name c2,sex c3 FROM TestDB;

也可以对别名加[“”],则可以使用关键字做别名

SELECT id "AS",name "SUM",sex "CHAR" FROM TestDB;

5、 使用DISTINCT消除重复的行(计算量大、一般情况不建议使用)

SELECT DISTINCT name,sex FROM TestDB;

6、 ORDERY BY进行升序排列

SELECT * FROM TestDB ORDER BY sex

7、 ORDERY BY CASE按照条件排序

SELECT id c1,name c2,sex c3

FROM TestDB

ORDER BY CASE -- ORDER BY为一个隐式游标(CURSOR)

WHEN name='Clown' -- 如果[name]列的值全部为[Clown]

THEN sex -- 则按照[sex]排序

ELSE id -- 否则按照[id]排序

END;

8、 ORDERY BY [column] DESC降序排列

SELECT * FROM TestDB ORDER BY id DESC;

9、 WHERE进行数据筛选

-- 筛选出[id]为[001]的所有行的所有列

SELECT * FROM TestDB WHERE id='001';

注:不能在WHERE中使用SUM()或者COUNT()等聚合函数!

比较运算符最快的为相等[=]其次是不相等[<、<=、>、>=]最慢的为不等于[<>或!=]

表中选择特定行的操作称为[限制]

WHERE语句不能用[列名]的[别名]、必须用原列名

WHERE在SELECT之前进行计算

10、多条件查询连接符:AND 、OR 、NOT

AND:查询多个条件同时为[真]

OR:一个条件成立即可以

NOT:取与条件相反的结果

-- 筛选出[id]为[001]的所有行的所有列

SELECT * FROM TestDB WHERE NOT id<>'001';

注:同时使用是AND、OR、NOT优先级:NOT最高其次是AND最后为OR

11、LIKE模糊查询

-- 查询[name]字段含有[C]的数据

SELECT * FROM TestDB WHERE name LIKE '%C%'

-- 查询[name]字段含有6位长度的数据

SELECT * FROM TestDB WHERE name LIKE '_____%'

-- 查询[name]字段[C]或[a]或[b]开头并[lown]结尾的数据

SELECT * FROM TestDB WHERE name LIKE '[Cab]lown%'

-- ESCAPE '\' 此句声明[\]为转义字符相当于查询的是[_Clown]关键字

SELECT * FROM TestDB WHERE name LIKE '\_Clown%' ESCAPE '\'

-- 不是以[A]开头的[6]位或以上的关键字

SELECT * FROM TestDB WHERE name LIKE '[^A]Clown%'

注:LIKE仅试用于字符串

12、BETWEEN筛选出大于等于并小于等于的一个段

-- 筛选出[id]大于等于并且小于等于的数据

SELECT * FROM TestDB WHERE id BETWEEN 1 AND 2

13、IN关键字筛选值是否等于给定的值

-- 筛选出[id]为[001]和[003]的值

SELECT * FROM TestDB WHERE id in ('001','003')

14、IS NULL值是否为[NULL](PS:[NULL]不代表字面量)

-- 筛选出[name]为[NULL]的数据;[NULL]不代表字面量而是说明是否为空

SELECT * FROM TestDB WHERE name IS NULL

-- 筛选出[name]为非空的数据;[NULL]不代表字面量而是说明是否为空

SELECT * FROM TestDB WHERE name IS NOT NULL

15、SUBSTRING(Column,position,length)提取字符串

-- 提取[name]列值、从第[1]位开始共[1]位

SELECT SUBSTRING(name,1,1) FROM TestDB

16、UPPER(string)、LOWER(string)大小写转换函数

-- [name]列转换为小写

SELECT LOWER(name) FROM TestDB

-- [name]列转换为大写

SELECT UPPER(name) FROM TestDB

17、获取当前时间戳

-- 获取当前时间戳

SELECT CURRENT_TIMESTAMP

18、类型转换CAST(expression AS type)

-- 将[sex]列转换为[varchar]类型

SELECT CAST(sex as varchar) FROM TestDB

19、CASE函数相当于IF ELSE

-- CASE相当于IF ELSE

SELECT id, ColumnName =

CASE id

WHEN '001' THEN 'Road'

WHEN '002' THEN 'Mountain'

WHEN '003' THEN 'Touring'

ELSE 'Not for sale'

END

FROM TestDB

ORDER BY id;

20、INNER JOIN 内链接

-- 内链接->返回[TestDB]表中[id]等于[TestDB2]表中[OrderId]

SELECT * FROM TestDB t1

INNER JOIN TestDB2 t2

ON t1.id = t2.OrderId

21、sp_help 查看表的结构

-- [G_GAMEList]为表名称

sp_help G_GAMEList

22、UPDATE SET更新数据

-- [G_GAMEList]为表名,[GG_Date]为需要修改的字段以及值,如不加WHERE则修改全部

UPDATE G_GAMEList

SET GG_Date = '2014-10-28'

WHERE GG_Id = '1';

23、DELETE 删除,不删除表结构

-- 删除[G_GAMEList]表、有删除记录可以恢复

DELETE G_GAMEList

-- 删除[G_GAMEList]表中[GG_AddId]字段为[1]的行

DELETE FROM G_GAMEList WHERE GG_AddId='1';

24、DROP TABLE 删除,删除表结构以及表

-- DROP删除表不可恢复,但速度比DELETE快

DROP TABLE G_GAMEList

25、TRUNCATE 删除可以使自增字段归零但数据不可恢复,不删除表结构

TRUNCATE TABLE dbo.a;

26、约束

NOT NULL 阻止向列中插入空值

PRIMARY KEY 设置表的主键

FOREIGN KEY 设置表的外键

UNIQUE 阻止向列中插入重复的值

CHECK 使用逻辑(布尔)表达式限制插入列中的值

列约束:是列定义的一部分,它设置作用于列的条件。

表约束:是有别于列定义并加强于表中多个列的条件。

27、CREATE TABLE t_Name 创建表

-- 创建一张新表

CREATE TABLE t_TestTable(

id varchar(10),

name varchar(10)

)

28、DEFAULT设置列的默认值

-- 创建一张新

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航