今天对SQL的基础知识做个小结:
一,select
1,select [select_list]
from [table_name]
where [search_conditions]
group by [group_by_list]
(having [search_conditions])
order by [order_list]
(compute [function])
a.where
where子句的查询条件可以包括:
比较运算符:<,>,<=,>=,=,!=,!<,!>
范围说明:between A and b, not between A and b
可选值列表:in( ), not in()
模式匹配:like '_', not like'%'
是否为空值:is null, is not null
逻辑组合:and, or, not
b.group by
根据条件自动分组,上下分开。
having子句,和group by连用,对分组指定搜索条件。
eg.查询多个员工的工资不低于6000的部门编号。
select dept_id,count(*) from employee
where e_wage>=6000
group by dept_id
having count(*)>=1(多个)
c.order by [orderby_conditions] [desc,asc]
d.function 汇总函数(针对行)|(针对列)字段之间直接进行数学计算
Avg,Sum,Max,Min,Count
count([*]统计元组个数,[列名]统计一列中值的个数)
e.union(行连接)
将两个或两个以上的查询结果合并为一个结果集。
eg.查询计算机系的学生或者年龄不大于20的学生,按年龄倒序。
select * from department where sdept='计算机'
union
select * from student where sage<=20
order by sage desc
f.嵌套
eg1.查出与学号9500同龄的学生。
select * from students
where age=(select age from students
where sno='9500')
eg2.查出选修lesson1的学生的学号和姓名。
select sno, sname from students
where sno in(select sno from lesson
where lno='lesson1')
2.其他数据操作
a.update 修改列值
update 表名 set 列名1=表达式1, 列名2=表达式2 where 条件
只对单表操作;尽当事务提交(commit)后才生效;也可以通过回滚(rollback)来作废。
b.delete 清除列
delete from 表名 where 条件
无where则清空,表结构还在,整行删除
c.insert 插入行
insert into 表名 values( , , ,)
eg.select * from menu
insert into menu values (6,'高级人才','person/gaoji.asp')
update menu set url='person/default.html'
where menuid=2
delete from menu where menuid=6
3.数据表定义
create table
drop table
alter table 修改表:添加表列,重定义表列,更改存储分配
alter table add constraint 在以有的表上添加约束。
约束:
约束类型:主键约束
唯一性约束
检查约束
缺省约束
外键约束
4.数据控制语言
权限控制 grant 权限,角色授予
revoke 从用户或数据表收回权限
set role 禁止或允许一个权限
事务处理控制 commit work 把当前事务作为更改永久化
rollback 作废上次提交以来的所有更改
5.存储过程 stored procedure
6.sql server对象命名
a.三段式名字表识对象
<database>.<table>.<colmn>
b.别名 (as)
如果指定了别名,那么对数据表所有的操作都必须用别名。