SQL Server学习进程(四)--T-SQL语句

1.数据定义语句(DDL)

CREATE、ALTER、DROP为DDL语句关键字。前面对于database、table中CREATE、ALTER、DROP的使用已经进行了说明。此处不再重复。

2.数据操作语句(DML) 

注意DML语句中没有关键字COLUMN

INSERT、UPDATE、DELET

2.1 INSERT

INSERT的基本用法:可以向建好的表中插入一行或多行数据

INSERT INTO table_naem(column_name,column_name1......) VALUES (value_list);

value_list中的值可以为DEFAULT、NULL或者是表达式。

insert into 饲养员 
values ('1','Tom',null,10,null),

('2','Frank','Boy',12,'Newyork');

2.2UPDATE

UPDATE:当表中存在数据后,可以对数据进行修改。

UPDATE table_name

SET column_name1=value1,column_name2=value2,column_name3=value3 ......

WHERE serch_condition

2.2.1.指定修改条件

update 饲养员

set 年龄=20 where ID=2

2.2.2修改所有记录

update 饲养员
set 年龄=30

select * from 饲养员

2.3DELETE

DELETE:删除数据表中的数据

DELETE FROM table_name

[WHERE condition] --没有此句删除所有记录

delete from 饲养员
where ID='1'

select * from 饲养员

2.4SELECT语句

select [all | distinct] --all 结果集中可包含重复行,distinct则相反
[top n [percent]]
{* | <字段>}  --不能缺少
[into 表名] 
from table_name | view_name | from 表1 别名1,表2 表名2 [,...n]
[where <condition>]
[group by <字段名>] [having <expression>]

[order by <字段名>] [asc | dec]

语句实例

select * from 饲养员; --查询表中所有记录

select top [n | percent] * from table_name;--显示前n个或百分比的结果   select top 1 * from 饲养员

select distinct 性别 from 饲养员

select * from students where not 性别='男'  --显示非男性成员姓名

select ID,年龄 from 饲养员; --选择表中部分字段显示

select a.学生编号,a.成绩编号,a.成绩编号+10 (as) 新成绩编号 from 成绩信息 a  --把表达式内容作为as后面字段的值,as可省略

select 班级名 as class,辅导员 as teacher from 班级信息  --  使用as修改标题

 select * from students where 姓名 like ’刘%' --显示姓刘的学生的信息

 select * from students where 姓名 not like ’刘%' --显示不姓刘的学生的信息

select '姓名:',班级名,'辅导员编号:',辅导员 from 班级信息 --加入字符串为字段添加注释


select * from 饲养员 where 年龄 between 10 and 20 --查询年龄大于等于10,小于等于20的记录

select * from 饲养员 order by 年龄 DESC;--按年龄降序排列记录

3.数据控制语句(DCL)

关键字:GRANT、REVOKE、DENY

GRANT UPDATE,DELETE ON 饲养员 TO guest WITH GRANT OPTION 

--guest 为用户名称 with grant option 表示该用户可以向其它用户授予其自身所拥有的权限。

REVOKE DELETE ON 饲养员 FROM guest;

DENY UPDATE ON 饲养员 TO guest CASCADE;

4.其它语句

4.1数据声明---DECLARE、SET、PRINT

DECLARE 

{ { @local_variable [AS] data_type} | [=value ] } [,...n] --as 一般省略;如果不声明数值,则初始化为NULL。

数据赋值---SET

SET { @local_variable = value | expression}

SET 选项 [ ON | OFF ]

语句实例:

declare @i int

set @i=10 --select @i=10效果相同

print @i

4.2IF---ELSE语句

declare @age int 
set @age=30
if @age<18
print 'He is not an adult'
else
begin
print 'He is an adult'

end  --begin end之间加上语句块

4.3CASE---END语句

/*

CASE input_expression
  WHEN when_expression1 THEN result_expression1
  WHEN when_expression2 THEN result_expression2
  [...n]
  [ELSE else_result_expression]
END
*/
select s_id,s_name,
case s_name                   --case input expression
  when 'Tom' then '班长'      --没有分隔号
  when 'Tim' then '学习委员'
  else '无'
end                           --case 以 end 结尾
as '职位'
from students

--另一种形式
select s_id,s_name,s_score
case                         --没有input expression
  when score>90 then '优秀'  --when then 语句
  when score>80 then '良好'
  when score>70 then '一般'
  when score>60 then '及格'
  else '不及格'
end                         --以end结尾
as '评价'

from students

4.4WHILE语句

/*
while 语句模板
while boolean_expression
{
sql_statement | statemet_block
}
{
break | continue
}
*/
declare @num int;
select @num=10
while @num>-1 --while后跟多语句,使用begin end
begin
  if @num>5
    begin
 print '@num等于' + convert(varchar(4),@num)+'大于5循环继续执行';
 select @num=@num-1;
 continue;
end
  else
    begin
 print '@num等于'+convert(varchar(4),@num);
 break;
end

end

4.5GOTO语句

/*
label:
GOTO label
*/
select * from students 
goto jump

print 'good!'--改行不处理,直接处理下一句

jump:

print 'not good!'

4.6WAITFOR语句

/*
WAITFOR
{
DELAY 'time_to_pass'
| TIME 'time_to_execute'
| [(recerive_statement) | (get_conversation_group_statement)]
[,TIMEOUT timeout]
}
*/
--延迟时间和时刻的格式为“HH:MM::SS”;在waitfor语句中不能指定日期,且时间长度不能超过24小时
declare @name varchar(50);
set @name='admin'
begin
waitfor delay '00:00:05'
print @name
end
----
declare @name1 varchar(50);
set @name1='admin'
begin
waitfor time '16:46:20'
print @name1
end

4.7RETURN 语句

--除非另有说明,所有系统存储过程均返回0值。0值表示成功,而非零值表示失败。
--return 语句不能返回空值
--return [integer_expression]


猜你喜欢

转载自blog.csdn.net/qq_40951833/article/details/80715232