SQL语句笔记
创建部门表
deptno |
dname |
location |
1 |
技术部 |
一楼A区 |
create table dept( --dept部门
deptno int primary key, --deptno部门编号,primary key主键
dename varchar(9), --dname部门名称,varchar长度变化的字符串
loc varchar(10); --loc部门位置
); --varchar是最长多少,char是固定长度多少位
创建员工表
empno |
name |
deptno |
manager |
hiredate |
salary |
1 |
张三 |
1 |
2 |
2011-03-03 |
4400.00 |
create table employees(
empno int primary key,
name char(10) not null, --not null不能为空
deptno int,
manager int,
hiredate date,
salary numeric(7,2) --总长7位,小数点后2位
);
创建经理表
create table managers(
empno int primary key
title varchar(16)
);
常用数据类型
数据类型 |
说明 |
int |
整数类型 |
char(n) |
字符/字符串,固定长度n |
varchar(n) |
字符/字符串,可变长度,最大长度n |
numeric(a,b) |
精确数值,总位数a,小数点后位数b |
date |
储存年,月,日的值 |
insert插入
- 为表中所有字段添加值时不需要字段名称,但要确保值的顺序与表中字段顺序相同
insert into 表名 values (字段1的值,字段2的值,....);
- 为指定的字段插入数据时,要把字段名和字段值都列出,并一一对应
insert into 表名 (字段1,字段2,...) values (字段1的值,字段2的值,....);
主键
select查询
select * from 表名;
select 字段1,字段2,... from 表明;
distinct去重复值
- 同一字段种可能会出现重复值,使用关键词distinct去掉重复值
select distinct 字段名 from 表名;
where条件过滤
- 如果要从表中选取指定的数据,将where子句添加到select语句
select 字段名 from 表名 where 字段 运算符 值;
and和or运算符
select 字段名 from 表名 where 字段n 运算符 值n and|or 字段m 运算符 值m;
like搜索匹配的字符串
- 在where子句中使用like运算符来搜索匹配字符串中的指定模式,百分号(%)匹配零个,一个或多个字符
select 字段名 from 表名 where 字段 like 字符串;
in匹配多个值
- 在where子句中指定多个搜索条件可以匹配的值,in实际是多个or条件的合并
select 字段名 from 表名 where 字段名 in (值1,值2,...);
between指定范围
select 字段名 from 表名 where 字段名 between 值1 and 值2;
order by排序
select 字段名 from 表名 order by 字段1,字段2,...asc|desc
update更新数据
update 表名 set 字段1=值1,字段2=值2,...where子句;
- where子句指定记录更新,没有where将更新表中所有记录
delete删除记录
delete from 表名 where子句;
- where子句指定记录更新,没有where将更新表中所有记录
view视图
- 视图是基于SQL语句的结果集的可视化表,视图中的字段就是来自一个或多个数据库中的真实的表中的字段
- 视图总是显示当前的数据,每当用户查询视图时,数据库引擎通过使用SQL语句来重建数据
create view 视图名 as select语句;
null值
字段和表的别名
select 字段名 as 别名 from 表名 as 别名; --as可以省略
join连接
- join连接是基于多个表之间的共同字段把它们结合起来进行查询的一种方法
- 内连接(inner join) : 列出两个表中都存在的记录
- 左连接(left join) : 即使没有匹配也列出左表中的所有记录
- 右连接(right join) : 即使没有匹配也列出右表中的所有记录
select 字段名 as from 表1 join 表2 where子句;
SubQuery子查询
- 也称嵌套查询,是一种嵌套在其他SQL语句的where子句中的查询.子查询用于为主查询返回其所需数据,或者对检索数据进行进一步的限制
select 字段1,字段2,...from 表名 where 字段名 操作符 (子查询) ;
常用函数
count函数
- 统计符合条件的记录数
- count(*)统计表中的记录总数
- count(字段名)统计指定字段不为null的记录数
select count(*) from employees; --统计员工表中所有员工
select count(deptno) from employees;
select * from employees where deptno is null;
max函数
min函数
avg函数
sum函数
group by分组
- 用于结合统计函数,根据一个或多个列对结果集进行分组
select 字段名,统计函数 from 表名 where子句 group by 字段名;
having过滤分组
- 与where类似,它们的过滤对象不同,where对被选择的列进行过滤,having子句对group by产生的组进行过滤
select 字段名,统计函数 from 表名 where子句 group by 字段名 having 统计函数 运算符 值;
SQL语句的书写顺序
- select
- from
- where
- group by
- having
- order by
- limit