Python学习 Day48 MySQL数据库 13

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

(2count()函数
    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的人数

(3sum()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的人的平均薪水

(4max()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;

在这里插入图片描述

Guess you like

Origin blog.csdn.net/ShengXIABai/article/details/116104323