一、增删改表中数据
insert into 表名(列名1,列名2,...,列名n) values(值1,值2,...,值n)
insert into 表名 values(值1,值2,...,值n)
delete from 表名 [where 条件]
update 表名 set 列1 = 值1,列2 = 值2,...,列n = 值n where 条件
二、查询语句
select 列 from 表名 distinct
order by 排序字段1 排序方式1,排序字段2 排序方式2...
group by 分组字段
where 和 having 的区别?
where在分组之前进行限定,如果不满足条件,则不参与分组,后面不可以跟聚合函数
having在分组之后进行限定,如果不满足结果,则不会被查询出来,后面可进行聚合函数判断
三、链接查询
Ⅰ. 内连接查询
语法:select 字段列表 from 表列表 where 条件
语法:select 字段列表 from 表1 [inner] join 表2 on 条件
1. 从哪些表中查询数据
2. 条件是什么
3. 查询哪些字段
Ⅱ. 外链接查询
语法:select 字段列表 from 表1 left [outer] join 表2 on 条件
查询的是表1(左表)所有数据以及其交集部分
语法:select 字段列表 from 表1 right [outer] join 表2 on 条件
查询的是表2(右表)所有数据以及其交集部分
Ⅲ. 子查询
例如:查询表1中工资最高的员工的信息
select * from 表1 where Salary = (select max(Salary) from 表1)
1.子查询的结果是单行单列的:
子查询可以作为条件,使用运算符去判断。 运算符:> >= < <= =
2.子查询的结果是多行单列的:
子程序可以作为条件,使用预算符in来判断
3.子查询的结果是多行多列的:
子查询可以作为一张虚拟表参与查询
四、建表与操作约束
create table Department{
DepartmentID int primary key,
Name varchar(50) not null
}
create table Student(
ID int primary key identify(1,1),
Gender varchar(1) not null default('M') check(Gender = 'M' or Gender = 'F'),
CardID varchar(18) unique key,
DepartmentID int references Department(DepartmentID)
)
alter table 表名 add constraint 约束名
primary key (列)
unique (列)
default(值) for (列)
check(条件)
foreign key(列) references 外键表(外键列)