文章目录
- 数据库常用操作命令(MySQL)
- 一、数据库相关操作
- 二、表相关的操作命令
- 三、单表的增、删、改、查
- 四、查询条件规则(where后的语句)
- 查询关键字总结
- 分组查询:
- 子查询(嵌套查询)
- 关联查询(重点)
- 五、表的约束
- 总结
数据库常用操作命令(MySQL)
一、数据库相关操作
- 查看所有数据库:
show databases; - 创建数据库:
create database 数据库名; - 查看数据库详情:
show create database 数据库; - 删除数据库
drop database 数据库名; - 使用数据库
use 数据库名;
注意:数据库MySQL中,操作命令均不区分大小写
二、表相关的操作命令
- 创建表:
create table 表名(字段1 类型1,字段2 类型2,…) - 查询所有表
show tables; - 查询表的详情:
show create table 表名; - 查看表字段(查看表各字段字符类型):
desc 表名; - 删除表
drop table 表名; - 清空表内容:
truncate table 表名 - 修改表
- 修改表名
rename table 原名 to 新名;
- 添加字段:
添加到最后一列:
alter table 表名 add 字段名 类型;
添加在第一列位置:
alter table 表名 add 字段名 类型 first;
在指定列后面添加:
alter table 表名 add 字段名 类型 after 列名;
- 删除表字段:
alter table 表名 drop 字段名;
- 修改表中的字段类型
alter table 表名 change 原始名 新名 新类型;
- 修改表中的字段位置:
alter table 表名 modify 字段名 新类型 first| after 字段名;
三、单表的增、删、改、查
- 添加数据:
insert into 表名 values(值1,值2,值3);
全表插入 [不需要进行列的声明 , 插入值要和列的顺序保持一致]
insert into 表名(字段1,字段2) values(值1,值2);
部分列插入 需要说明 - 批量插入数据
insert into 表名 values(值1,值2,值3),(值1,值2,值3),(值1,值2,值3); - 查询操作
select * from 表名;
select * from 表名 where 条件; - 修改操作
update 表名 set 字段名=值 where 条件;
在使用update语句时要添加where条件 - 删除操作
delete from 表名 where 条件;
空值的判断
is null
is not null (不使用等号)
四、查询条件规则(where后的语句)
查询关键字总结
1.模糊查询 like
- %:代表 0个或者多个字符
- _:代表一个未知字符
- 名称中以大写字母S开头的 : S%
- 名称中以大写字母S结尾的 : %S
- 名称中包含S的 : %S%
- 第三个字符为d的 : __d%
- 名字中倒数第三个是d的 : %d__
2.设置查找范围
- between and[表示一个区间范围]
- not between and [表示不在一个区间范围]
- in (select 语句) in通常连接一个子查询的结果
3.排序
– 降序 desc
– 升序 asc[默认值]
order by 字句是select 语句的最后一部分
4.limit:查询表中指定区间的数据
limit a,b
a:开始的记录数 a=0表示从第一条记录开始
b:查询的总数[从a开始要查询几条记录]
5.聚合函数(组函数)
- 平均值 :avg(字段名)
- 最大值:max(字段名)
- 最小值: min(字段名)
- 求和:sum(字段名)
- 统计数量:coun(*)
6 .字符串相关的函数
- 字符串拼接:concat
- 获取字符串长度:char_length()
- 替换:replace(str,old,new) replaceAll() [进行所有字符的替换]
分组查询:
- 出现每个|每种 就要按照每个|每种进行分组查询 group by …
示例1:查询每个部门的平均工资
select deptno,avg(sal) from emp006 group by deptno;
示例2:查询每个部门的人数 group by deptno 统计数量的组函数 count()
select deptno, count() from emp006 group by deptno;
示例3:查询工资>1000的员工中每个部门的最高工资
select deptno, count() from emp006 group by deptno; - 分组条件:
where 条件中不能出现组函数
where avg(sal)>2000: 【错误写法】
示例1:查询每个部门的平均工资,要求平均工资>2000
select deptno,avg(sal) avg_sal from emp006 group by deptno having avg_sal>2000;
示例2:查询emp表中每个部门的平均工资高于2000的部门编号,部门人数,平均工资,最后根据平均工资降序排列
select deptno,avg(sal) avg_sal,count(*) from emp006 group by deptno having avg_sal>2000 order by avg_sal desc;
子查询(嵌套查询)
示例1:查询emp表中工资最高的员工信息
select * from emp006 where sal=(select max(sal) from emp006);
示例2:查询高于平均工资的员工信息
select * from emp006 where sal>(select avg(sal) from emp006);
示例3:查询和JONES相同工作的其他员工信息(不包含JONES本人)
select * from emp006
where job =(select job from emp006 where ename=‘JONES’)
and ename <>‘JONES’;
小结:
1)子查询可以多层嵌套(不建议层次较深的嵌套)
2)子查询的位置
可以出现在查询列 | 可以充当表 | 可以充当查询条件
3)子查询的结果可以当做一张虚表(中间表)
关联查询(重点)
同时需要查询多张表的数据(>=2):称为关联查询。
- 等值连接[内连接]:查询的是两张表的交集数据,例如
相同条件为 emp 【deptno】 和 dept 【deptno】
----查询员工的所有信息
select * from emp, dept where emp.deptno = dept.deptno;
---- 给表添加别名 关联条件 deptno
select e.,d. from emp e, dept d where e.deptno = d.deptno;
- 外连接:
一张表中的全部数据和另外一张表的交集数据
on:专门用来表示连接条件
where子句表示查询条件
left join:左外连接
select * from A left join B on A.x = B.x where A=…
示例:查询A表的全部数据和B表中符合条件的数据
select * from emp006 e left join dept001 d on e.deptno = d.deptno
关联查询:
内连接:两张表的交集
外连接: 全部数据+ 符合条件的数据
五、表的约束
- 主键约束
用来保证表中字段的值唯一且非空
主键:表示数据唯一性的字段
通常创建表的时候会添加主键约束 primary key - 主键自增
auto_increment
在原始最大值的基础上+1 [由mysql数据库自动完成]
总结
此次总结了MySQL的基本操作命令,数据库和表的增、删、改、查关键字总结如下:
增加: create(增加数据库和表),insert into(添加单表数据)
删除:drop(直接删除数据库和表),truncate(清除表内容)
修改:alter(修改表字段),update(修改表数据/内容)
查看:show(查看所有表或者数据库),select(查找表中某一部分内容)