DDL(数据库定义语言)>>> 库 database,表 table
create 创建
create database 库名;
create table 表名(
字段名 数据类型(范围) 约束条件,
字段名 数据类型(范围) 约束条件,
字段名 数据类型(范围) 约束条件,
字段名 数据类型(范围) 约束条件
primery key(字段)
foreign key 字段 REFERENCES 表(字段)
);
alter 修改
-- 修改名字
alter database 库名 rename 新名
-- 添加字段
alter table 表名 add id int(11) not null
-- 删除字段
alter table 表名 drop id
-- 修改字段名
alter table 表名 modify 字段名 类型 约束
drop 删除
drop table 表名;
drop database 库名;
DML(数据库操作语言)>>> 数据
insert 添加数据
insert into 表(字段列表) values (值列表);
insert into emp values(1,'张三','1999-04-14');
update 更新数据
update 表 set 字段 = 新值 【where 条件】
-- 更新张三的成绩为60
update student set score = 60 where sname = '张三';
delete 删除数据
delete from 表 【where 条件】
delete from student where ename = '张三';
DQL (数据库查询语言)>>> 数据
关键字 | 含义 |
---|---|
where | 查询条件 |
group by | 分组查询 |
having | (必须和group by 一起使用) 分组期间筛选条件 |
order by | 排序 |
asc | 升序 |
desc | 降序 |
like | 模糊查询 |
_ | 单字符 |
% | 任意字符(没有,一个,多个) |
as | 起别名 (可省略) |
case…end | 做条件判断(分支语句) |
when…then | 当条件成立,则… |
in | 包含范围内 in(值,值,值) |
not in | 不在 |
is null | 判断是null |
is not null | 判断不是null |
distinct | 去重 |
limit | 限制,分页 |
not | 非 |
and | 与 |
or | 或 |
between min and max | 在min和max之间,min和max可取 |
【inner】 join | 内连接 |
left【outer】 join | 左外连接 |
right 【outer】 join | 右外连接 |
on | 连接条件 |
完整语法
select [distinct] 字段 from
表名 [ [left] join] 表
on 连接条件
where … group by … having … order by … limit
emp : 表
-- 查询所有
select * from emp;
-- 条件查询
select 字段 from 表 where 条件;
-- 当where后面条件中出现了聚合函数(min,max,sum,count,avg),那么应该用having来进行判断
-- 一旦聚合函数被当作条件使用的时候,就要使用having来进行条件判断
-- 统计各部门人数,查找哪个部门人数大于5
select * from dept group by deptno having count(*)>5
-- 模糊查询
select * from emp where 字段 like '%xx%';
-- 分页查询: a 表示起始位置(从0开始),b 表示查询的条数
select * from emp limit a,b
-- 分页语句语法拼接(当前页 page)
-- 注意以下的这个语法只能在java语言中进行使用
select * from emp limit (page-1)*b,b
-- 多表联查
select * from emp as e join dept as d on e.deptno = d.deptno
-- 左外连接 (会对左表进行补null值操作)
select * from emp as e left join dept as d on e.deptno = d.deptno
--子查询
将一个查询语句作为另一个查询语句的条件或者是一张临时表作为查询操作。
注意如果作为表存在from后面,那么必须要给该查询语句提供别名
select * from
(
select dept_name,ename
from emp right join dept on emp.deptno = dept.deptno
) a