MySQL数据库
一、MySQL数据库概述
- MySQL是一种关系型数据库,是一种开源软件
- 由瑞典MySQL AB公司开发,2008年1月16日被SUN公司收购。2009年,SUN又被Oracle收购
- MySQL软件采用双授权政策,分为社区版和商业版。由于体积小、速度快、总体拥有成本低,尤其是开发源码特点,一般中小型网站的开发都选择MySQL作为网站数据库。
- 由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境,所以MySQL能够工作在众多不同的平台上
二、MySQL数据库的安装
网址:https://www.jb51.net/article/167782.htm
注意事项:
- 1.端口号:3306
- 2.默认用户:root
- 字符集:默认字符集Latin1,应设置为gbk或utf-8
三、MySQL数据库的基本操作
1.启动MySQL服务
-
方式一:此电脑-管理-服务华为应用程序-服务
-方式二:: net start mysql80
-
2.登录MySQL服务器:mysql -h127.0.0.1 -uroot -proot -P3306
- 3.关闭MySQL服务:net stop mysql80
四、MySQL的数据类型
数据类型 | 描述 |
---|---|
数值类型 | int(四个字节)、integer(与int同义词)、float(4个字节)、double(8个字节) |
字符串类型 | char(固定长度字符串)、varchar(可变长度字符串) |
日期/时间类型 | Date:YYYY-MM-DD;Datetime:YYYY-MM-DD HH:MM:SS;Time:HH:MM:SS |
- MySQL支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,int(4)),显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的制定宽度的值的显示
五、常用的SQL语句
SQL语言包含四个部分:
- 1.数据定义语言:create、drop、alter等(针对数据库或表)
- 2.数据查询语言:select
- 3.数据操纵语言:insert、delete、update(针对表中数据)
- 4.数据控制语言:grant、revoke、commit、rollback等
(一)数据定义语言
1.创建数据库
- create database 数据库名
2.显示所有数据库
- show databases
3.使用指定数据库
- use 数据库名
4.删除表
- drop table 表名
5.删除数据库
-
drop database 数据库名
修改表结构 -
初始表结构
-
1.增加列:
alter table 表名 add 列名 数据类型(长度)
-
2.修改列的数据类型:
alter table 表名 modify 列名 数据类型(长度)
-
3.修改列的名称:
alter table 表名 change 原列名 新列名 数据类型(长度)
-
4.删除列:
alter table 表名 drop 列名
(二)数据操纵语言
1.向表中插入数据
- insert into 表名[(字段列表)] values (值列表)
2.修改表中的数据
- update 表名 set 字段1=值1,字段2=值2… [where]
3.删除表中的数据
- delete from 表名 [where]
(三)数据查询语言
单表查询
- select … from 表名 [where] … [group by]…[having]…[order bv asc/desc]
1.查询表中的全部数据
select * from emp;
2.查询表中的部分数据
(1)部分列:查询所有员工的编号、姓名、薪水
mysql> select empno,ename,sal from emp;
(2)部分行:查询薪水大于2500的员工信息
select * from emp where sal>2500;
(3)查询部分行和列:查询薪水大于2500的员工编号、姓名、薪水
select empno,ename,sal from emp where sal>2500;
3.查询结果的排序
select * from emp order by sal asc/desc;
模糊查询
1.只能与字符串型一起使用的like关键字
(1)查询员工姓名中含有M的员工信息
select * from emp where ename like '%M%';
(2)查询员工姓名以M开头的员工信息
select * from emp where ename like'M%';
(3)查询员工姓名中第二个字母是M的员工信息
select * from emp where ename like'_M%';
2.区间范围: between…and…
- 查询员工的薪水在2000到3000之间的员工信息
select * from emp where sal between 2000 and 3000 order by sal desc;
3.在指定的值中进行选择 :in
查询职位为’CLERK’,‘MANAGER’
select * from emp where job in (CLERK','MANAGER') order by job;
聚合函数:带函数的查询
count()、sum()、avg()、max()、min()
(1)查询表中的所有行和列
select * from emp
(2)count()函数
select count(*) from emp; 查询一共有多少员工
select count(1) from emp; 查询一共有多少员工
select count(*) from emp where deptno=20; 查询20号部门的人数
select count(*) from emp where job='CLERK'; 查询职位为clerk的人数
(3)sum()和avg()函数
select sum(sal) from emp; 查询员工的总薪水
select sun(sal) from emp where deptno=20; 查询20号部门的总薪水
select sum(sal) from emp where job='CLERK'; 查询职位为clerk的人的总薪水
select avg(sal) from emp; 查询员工的平均薪水
select avg(sal) from emp where deptno=20; 查询20号部门的平均薪水
select avg(sal) from emp where job='CLERK'; 查询职位为clerk的人的平均薪水
(4)max()和min()函数
select max(sal) from emp; 查询员工的最高薪水
select max(sal) from emp where deptno=20; 查询20号部门的最高薪水
select max(sal) from emp where job='CLERK'; 查询职位为clerk的人的最高薪水
select min(sal) from emp; 查询员工的最低薪水
select min(sal) from emp where deptno=20; 查询20号部门的最低薪水
select min(sal) from emp where job='CLERK'; 查询职位为clerk的人的最低薪水
分组查询 group…by…having 与聚合函数一起使用
(1)查询每个部门的部门编号及总人数
select deptno,count(*) from emp group by deptno;
(2)查询每个部门的总人数不低于4人的部门编号及部门总人数
select deptno,count(*) from emp group by deptno having count(*)>3;
表链接查询
select…from 表1 inner join 表2 on 连接条件 …[where]…
select…from 表1 left/right join 表2 on 连接条件 …[where]…
(1)查询员工的编号、姓名、薪水、员工的部门名称
select empno,ename,sal,dname from emp inner join dept on emp.deptno=dept.deptno;
2)查询薪水大于2000的员工的编号、姓名、薪水、员工的部门名称
select empno,ename,sal,dname from emp inner join dept on emp.deptno=dept.deptno where sal >2000 order by sal;
(3)查询所有部门员工的编号、姓名、薪水、员工的部门名称,包含没有员工的部门
select empno,ename,sal,dname from emp right join dept on emp.deptno=dept.deptno;