基本语法格式
select(聚合函数)的语句格式:(这个不会考试就危险
了)
select * from 表名
上面一句可以查出一张你指定表名的表里的全部东西,* 的位置可以替换其他的东西,比如:select 列 1 名, 列 2 名from 表名
这样你就可以只看表里列1,列2两列。
还可以加COUNT(),YEAR(等函数,具体看
书吧!!
在后面可以接where,group by,order by 等
where 的用法:
select * from 表名where 条件表达式
条件表达式就好比列 1 值>0 啊,列 2 值=0&0啊,之类的。
这样我们就之看符合条件的。
group by 的用法:
select 列名1,count(列名2) as ' 自定义列名' from 表名
group by 列名 1
这句就是把表里所有列名 1 相同的行集合成一行,顺便说下count(列名2) as ' 自定义列名' ,count()是总行数的意思,考试经常要和group by 一起用。
如果要求总合用sum()这个函数。
as '自定义列名’就是给列付个名字。
如果要进一步筛选就在语句的最后加"HAVING 条件表达式"就可以了。
ORDER BY勺用法:
select * from 表名[where 条件表达式]
ORDER BY列名N
这样就是依照列名N的顺序排列了,最后加上DESC就是降序排列
连表查询
Select需要的列名1,需要的列名 2 ,……需要的列名N from 表1,表2
Where表1.某列=表2.某列and其他要求的条件表达式
以上就是连两个表的Select 语句, 你也可以连 3 或多个表,只要每个表和其他的表有联系就可以了。
如果上面的看不太懂我举个例子:
我们有2张表:B1,B2。
B1里有“动画名称”和“时间”两列。
B2里有“动画名称” 和“制作公司”两列。
其中两个表的动画名称是对应的,现在要你显示出“动画名称”, “时间”和“制作公司” ,做法如下:
SELECT B1. 动画名称, 时间, 制作公司from B1,B2 where B1. 动画名称= B2. 动画名称
ps: “SELECT B1. 动画名称, 时间, 制作公司”里面我要求返回3项,第一项因为两个表列名重复所以要前面加“表名. ”
如果上面的题目还要加条件,比如我们只要“制作公司”是“A”公司的,就这样写where
语句:
where B1. 动画名称= B2. 动画名称AND 制作公司='A'
update (更新)的语句格式:
update 表名
set 列名 1 = xxx, 列名 2 = xx, ... 列名N = xx where 列名x =
insert(插入一列)的语句格式:
1,全部插入,也就是把表里每一条的记录都写一边,这样格式就要求和表的格式一样。
insert into 表名
values('列 1 值',1,' 列 3 值',....' 列N 值')
2,部分插入, 也就是插入某几列的数据,其他的里面不可以有不允许为空的又不会自动生产的,语句格式:insert into 表名(列 1 名, 列2名, 列3名) values(' 列 1 值',' 列2值',' 列3值')
deldte(删除)的语句格式:
deldte from 表名
where 条件表达式
条件表达式就好比列 1 值>0 啊,列 2 值=0&0啊,之类的。
视图创建
create view 视图名as
select * from 表名where 条件表达式
PS :最后一句是更具要求来的
游标声明
declare 游标名cursor
for
select * from 表名
游标的属性比较复杂,一般定义在for 前面,参考P1 1 2页,或其他资料。
Ps: 一般在for 前面加local(说明是全局游标),scroll(说明是可以前后移动的)游标的关键字:(也就是加在for 前面的)
Scroll 说明这游标是前后移动的(默认是单向的)
Local 说明这游标是局部游标
Global 说明这游标是全局的
Static 静态游标(就是不可以再修改了)
Dynamic 动态游标
打开游标
OPEN游标名
读取游标数据
FETCH NEXT或PRIOR或FIRST或LAST from 游标名
修改游标
update 表名set 列名=‘ 列值' where CURRENTOF 游标名
ps: 上面那一句只可以修改当前的一条游标的值,如果要修改多条就写循环语句+if 语句吧
关闭游标
Close 游标名
删除游标
Deallocate 游标名
存储过程
create proc 存储过程名
as
select语句或其他语句(比如:update (更新)的语句、deldte(删除)的语句)使用存储过程
EXEC存储过程名
带变量的存储过程
create proc 存储过程名@变量名 1 类型,@变量名 2 类型
as
select * from 表 1
where 列1=@变量名 1 and 列2=@变量名 2
使用带变量的存储过程
EXEC存储过程名@变量名1='某个值’,@变量名2='某个值’
PS: 某个值你按照要求定的,变量的数量,可以没有(如上一个例子),可以一个,也可以多个,如果类型是INT 就不需要加单引号。
创建触发器
CREATE TRIGGER触发器名
ON 表名AFTER INSERT 或UPDATE或DELETE
AS
BEGIN
END
触发器中间的语句(也就是BEGIN到END之间的语句)
BEGIN 与(插入之后), 一般也就是要求在其他的相关表上做添加或修改。
语句如下(加到
END之间):
UPDATE X 表SET 列1=列1 + (select 列1 from INSERTED )
WHERE 列2 = (select 列2 from INSERTED )上面两行的意思是,第一行“X 表” 的“列1”的值加上新添加的那条记录的“列1”(更具题目的要求也可能是不同列名)的值。
第二行表示只修改符合条件的那行(一般用主键关联, 如果不指定关联就全改了!!)。
2.UPDATE(更新之后),我(0&0)也不知道会怎么考,我就举个例子吧:当”表1”的” 列A”更新了,”表2”的”列5”就同时更新成”列A”的值。
CREATE TRIGGER触发器名
ON 表1 AFTER UPDATE
AS
BEGIN
UPDATE 表2 SET 列5= (select 列A from INSERTED )
WHERE ID列=(select ID 列from INSERTED )
END
这里我们也是用了INSERTED这个零时表,好像只有INSERTED和DELETED^个零时表。
(如果我错了,及时告诉我,谢谢)
3.DELETE (删除之后),删除一般就是要你同时删除另一张表的有关的信息.
CREATE TRIGGER触发器名
ON 表1 AFTER DELETE
AS
BEGIN
DELETE from 表2
WHERE ID 列in (select ID 列from DELETE D )
END
这里我们用了IN 而不是=,其实两个都可以,但有区别in(1,2,3)就是说明只要在()里的数都是范围里的,=一般就等于一个数。
具体用那个看考试题目。
声明变量
DECLAER @变量名类型
Set @ 变量名=某个值
Ps: 某个值的地方你可以直接付,也可以是select 语句。
Int 不需要加单引号,其他的好像都要。
变量前一定要加@
用户函数
CREATE FUNCTION!数名(@变量X名类型)RETURNS类型
AS
BEGIN
DECLAER 变@量1 名类型
SELECT砂量1名=(SELECT列X名FROM表名WHERE列Y名=@变量X名)
RETURN @变量1 名
AND 这样是创建了一个用户函数,调用的方法自己看书,不高兴打了。
全文索引
在sql server configuration manager 中启动sql server FullText Search 先打开某数据库的全文索引,打开查询,输入“ exec sp_fulltext_database 后面是界面操作,写不清楚,自己练吧。
聚合函数创建表
SELECT * INTO新表名FROM表名WHERE条件表达式
服务'enable'。