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_expressionWHEN 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]