SQLSERVER命令总结(一)

2015-07-24 07:31:17 · 作者: · 浏览: 5

SQL SERVER命令总结

查询语句:

SELECT [ALL/DISTINCT][TOP]

<目标列> [as 别名][,<目标列1> as 别名]…

FROM <表名或视图名>[as 别名]…

[WHERE 条件表达式…]

[GROUP BY <列名1>[HAVING<条件表达式>]]

[ORDER BY<列名2>[ASC/DESC]]

应该注意:SELECT语句的顺序:

SELECT-->FROM-->WHERE-->GROUP BY-à HAVING àORDER BY

SELECT INTO:生成新表格

DISTINCT:唯一

GROUP BY:分组汇总

ORDER BY:排序,默认情况下为升序.

ASC:升序

DESC:降序

AS:起别名

HAVING:筛选分组汇总后的行

SELECT TOP nFROM<表名>:表示查询前N行

SELECT TOP n PERCENT*FROM<表名>:表示按一定的百分比提取

LIKE:模糊查询,仅于CHAR或是VERCHAR以及通配符连用

其他模糊查询:

IN:用于返回给定的值与列表中的值相匹配的行

BETWEEN…AND…:在..之间查询

IS NOT NULL:查询不为空的数据

查询中使用的常量:一般与 “+”连用.起到一个组合的目的

注意

1. SELECT后面的字段如果不包括聚合函数,必须参加分组(GROUP BY

2. GROUP BY后面不能使用聚合函数

3. 查询时,可以使用2个聚合函数

使用INSERT插入数据

ü 添加完整记录:

INSERT [INTO]<目标表名>VALUES

VALUES:字段值列表(顺序与建表的顺序必须一样)

ü 添加不完整记录:

INSERT [INTO]<目标表名>(字段名列表)VALUES<字段值列表>

特别的记住:字段名列表和字段值列表是一一对应的.即后面的字段值随着前面的字段名的改变而改变.

另一种方法:

语法:INSERT<表名>SELECTFROM<表名2)

还可以将数据有选择性的添加到另一个表中

语法:INSERT INTO Sales(Stor_id)SELECT stor_id FROM Stores

UPDATE语句

更新一行:

UPDATE<新表名>SET<目标列=值>[WHERE<条件>](范围)

更新多行:

UPDATE<表名>SET<目标列=值>;{<---没有WHERE}

更新一行和更新多行的区别在于有没有WHERE的存在

DELETE语句

1:删除一行:

语法:DELETE FROM<表名>[WHERE<条件>]

2:删除多行:

语法:DELETE FROM<表名>

删除一行和删除多行区别在于有没有WHERE的存在

3:TRUNCATE TABLE

用于删除表中所有行的命令.DROP删除表

与DELETE的区别在于:TRUNCATE不写日值文件,无法恢复数据

JOIN语句 联接信息:

Table_a AS table_alias_a JOIN table_b AS table_alias_b

On

table_alias_a .=table_alias_b.< common_field>

?--------------------公共字段---------------------------à

A:内联接

INNER JOIN:查询两个表中的公共部分

B:外联接

左外联接:left OUTER JOIN

右外联接:right OUTER JOIN

完整联接:FULL OUTER JOIN

C:自联接

创建表的结构

1.名称:表名 字段名

2.数据类型: 系统定义的

用户定义的: exec sp_addtype 用户定义的数据类型名 , 数据类型(系统有的),not null(是否允许为空)

3.大小:

4.约束:

主键约束 PRIMARY KEY create table 表名(字段 数据类型 primary key /

primary key(字段…))

唯一约束 UNIQUE create table 表名(字段数据类型 unique)

默认约束DEFAULT create table 表名(字段 数据类型 default ‘值/表达式’)

检查约束 CHECK create table 表名(字段 数据类型 check (字段的表达式)

外键约束 FOREIGN KEY create table表名(字段 数据类型 foreign key references(应用) 另一个表名(字段))

更新表的结构

1.修改数据类型:alter table 表名 alter column 列名 数据类型

2.添加一列: alter table 表名 add 列名数据类型

3.删除一列: alter table 表名 drop column 列名

4.增加约束: alter table 表名 add constraint 约束名 约束表达式

主键约束: primary key(列名列表)

唯一约束: unique(列名)

默认约束: default ‘值’for 列名

检查约束: check (列的检查约束表达式)

外键约束: foreign key(列名)references 表名(列名)

删除表的结构

drop table 表名

子查询

Select 字段 from 表(select查询)

子查询就是内层查询产生一个用于外层查询的条件

子查询经常使用的是条件运算符(>,<,<=,>=,=,!=)

子查询与in联合使用经常用于判断一列数据

子查询与exists联合使用经常用于判断一张表的字段

触发器

1。触发器:是一种特殊存储过程,它能对有触发器的表中的数据进行保护.

2。触发器主要通过操作事件(insert,update,delete)进行触发而被自动执行,

不能被调用,也不能传递参数

3。a)触发器根据数据修改语句可分为:insert触发器,update触发器,delete触发器

b)根据引起触发时刻可分为after触发器,instead触发器。

i.after触发器是在执行数据操作之后激发

ii.instead of 触发器是在执行数据操作之前激发

iii.一个表可以建立多个after触发器,可以建立一个instead of触发器

触发器中的inserted表和deleted表

1。触发器运行后在内存中自动创建。

2。他们用于对触发器执行后某些数据的测试条件

3。用户不能直接操作2个表

4。delete触发器将删除的内容放在deleted表中。

insert触发器将添加的内容存在inserted表中。

update触发器将替换前的内容放在deleted表中,将替换后的新内容放在inserted表中。

创建触发器:

CREATE TRIGGER 触发器名
ON 表名/视图名

FOR 触发器类型

AS

……T-SQL语句

例如:

/*如果被删除的学生有考试成绩的话,就不允许删除这个学生*/

create trigger t_stu

on tbl_stu

for delete

begin

declare @id int

select @id = stuid from deleted

if exists(select * from tbl_cj where stuid = @id)

begin

print '学生有成绩,不可删除!!'

rollback transaction

end

end

delete tbl_stu where stuid = 1007—当删除时,看消息框提示

删除触发器:drop trigger 触发器名

例如:drop trigger t_stu

修改触发器:将创建触发器的create关键字更换成alter

存储过程

存储过程:是存储在salserver服务器中的一组预编译过的t-sql语句,当第一次调用后,就驻留在内存中,以后调用时不必再进行编译。优点在于一次编写,多次调用。调用