MySQL数据库

删除MySQL

image-20220206165348467



一.数据库概述

1.概述

image-20220204195702784



2.DB DBMS SQL的关系

image-20220206165835610

3.什么是表

image-20220206170337908

4.对SQL的分类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m3f2BCYj-1650374375946)(D:\云顶(正式版,那个里面装的visio)\Java\学习笔记\MySQL笔记\MySQL数据库.assets\image-20220206170613832.png)]

5.导入初始化数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uaUWzb85-1650374375946)(D:\云顶(正式版,那个里面装的visio)\Java\学习笔记\MySQL笔记\MySQL数据库.assets\image-20220206171125580.png)]

image-20220207085228664

6.对SQL脚本的理解

文件以sql结尾,这样的文件被称为“sql脚本”。

当一个文件的扩展名是.sql,并且该文件中编写了大量的sql语句,我们称这样的文件为sql脚本。

image-20220207094726980

7.删除数据库

drop database bjpowernode;

8.查看表的结构

image-20220207095624136

image-20220207095639070

image-20220207095657893

image-20220207095722057

二,数据库中常用的命令

1.创建数据库

1.create database数据库的名称;

create database bjpowernode;

2.use数据库名称

use bjpowernode;

在数据库中建立表,因此创建表的时候必须要先选择数据库。

2.查询当前使用的数据库

image-20220207100417829

3.终止一条语句

如果想要终止一条正在编写的语句,可键入\c。

4.退出MySQL

image-20220207100605809

5.查看“演示数据”的表的结构

image-20220207100809423

image-20220207100824783

image-20220207100854736

image-20220207100901115

image-20220207100931462

image-20220207101201087

image-20220207101343154



三,查询

1.简单的查询

简单的查询(DQL)

image-20220207101531294

image-20220207101927626

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J8MuYGvS-1650374375951)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207102052496.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LXMqjfeb-1650374375952)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207102148887.png)]

1.查询一个字段

查询员工姓名

select ename from emp;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Se9bQCiq-1650374375952)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207102613854.png)]

2.查询多个字段

image-20220207102645506

3.查询全部字段

image-20220207102707531

4.计算员工的年薪

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yKm2Ye6o-1650374375953)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207102723679.png)]

5.将查询出来的字段显示为

image-20220207102802885

select * from emp;//实际开发中不建议使用 * ,效率较低。


2.条件查询

image-20220419211355349

语法格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-awXyphs1-1650374375954)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207103849010.png)]

image-20220207103914148

1.“=”

image-20220207103929958

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lwbehmUL-1650374375954)(MySQL数据库.assets/image-20220207103953500.png)]

2.“>”

image-20220207104000724

3.“!=或者<>”

image-20220207103434950

4.between and

image-20220207103652037

5.is null

image-20220207105506030

image-20220207105538532

image-20220207105610454

6.and和or优先级的问题

image-20220207105837343

image-20220207110003730

7.查询in

image-20220207115128607

8.not in

(不在这几个值当中)

image-20220207115254472

9.模糊查询like

image-20220207115442131

image-20220207115546096

image-20220207115636344

补充:关于查询结果的去重

image-20220207160820365

案例:统计岗位的数量

image-20220207160921136



四,排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O4UsKESk-1650374375959)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207143940428.png)]

注意:

image-20220207144028783

eg:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZcOtQseK-1650374375959)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207144718830.png)]

image-20220207144718830



五,分组函数

count 计数

sum 求和

avg 平均值

max 最大值

min 最小值

image-20220207145033633

分组函数一共5个。

分组函数还有另一个名字:多行处理函数。

多行处理函数的特点:输入多行,最终输出的结果是1行。

分组函数自动忽略NULL

image-20220207145915507

eg:
image-20220207150257220

image-20220207153154912

改正:

image-20220207153345810

count(*)和count(具体的某个字段),他们有什么区别?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y9pp8KZ2-1650374375961)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207150551143.png)]

分组函数也能组合起来用:

image-20220207150659845



六,单行处理函数

定义:输入一行,输出一行。

ifnull() 空处理函数;

image-20220207150027397



七,分组查询

1.group by

案例:找出每个工作岗位的最高薪资

select max(sal),job from emp group by job;

image-20220207153552076注意:分组函数一般都会和group by联合使用,这也是为什么它被称为分组函数的原因。

并且任何一个分组函数(count sum avg max min)都是在group by语句执行结束之后才会执行的。

当一条sql语句没有group by的话,整张表的数据会自成一组。

image-20220207153735826

案例:每个工作岗位的平均薪资

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nLht7nff-1650374375963)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207153846381.png)]

多字段分组查询:

image-20220207154133309

2.having

image-20220207160200907

image-20220207160147932

3.总结一个完整的DQL语句

image-20220207160349756

八,连接查询

1.定义

在实际开发中,大部分的情况下都不是从单张表中查询数据,一般都是多张表联合查询取出最终的结果。

在实际的开发中,一般一个业务都不会对应多张表。比如:学生和班级,起码两张表。

image-20220207162323583

2.分类

根据语法出现的年代划分:

SQL92(一些老的DBA可能还在使用这种语法。DBA:Database Administrator,数据库管理员)

SQL99(比较新的语法)

根据表的连接方式划分:

内连接:

​ 等值连接

​ 非等值连接

​ 自连接

外连接:

​ 左外连接(左连接)

​ 右外连接(右连接)

全连接

3.笛卡尔积现象。

案例:找出每一个员工的部门名称,要求显示员工名和部门名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MfP6t12z-1650374375964)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207163201263.png)]

image-20220207163222084

select ename,dname from emp,dept;

image-20220207163502642

笛卡尔积现象:当两张表进行连接查询的时候,没有任何的条件进行限制,最终结果条数是两张表记录条数的乘积。

关于表的别名:

select e.name,d.dname from emp e,dept d;

表的别名有什么好处

  1. 执行效率高
  2. 可读性好

4.避免笛卡尔积现象

案例:找出每一个员工的部门名称,要求显示员工名和部门名

image-20220207170155218

5.内连接之等值连接

最大特点:条件是等量关系。

案例:找出每一个员工的部门名称,要求显示员工名和部门名。

image-20220207170434608

image-20220207170845468

SQL语法结构更清晰一些:表的连接条件和后来的where条件分离了。

6.内连接之非等值连接

最大特点:连接条件中的关系是非等量关系。

案例:找出每一个员工的部门名称,要求显示员工名和工资,工资等级。

image-20220207171215621

image-20220207171224294

代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a44cgKKV-1650374375966)(MySQL数据库.assets/image-20220207171608768.png)]

结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TYbBa0Kd-1650374375967)(MySQL数据库.assets/image-20220207171531400.png)]

7.内连接之自连接

最大特点:一张表看作两张表。自己连自己。

案例:找出每个员工的上级领导,要求显示员工名和对应的领导名。

image-20220207171947016

image-20220207172102635

员工的领导编号=领导的员工编号

image-20220207172348597

结果:

image-20220207172406394

8.外连接

image-20220207172653703

外连接:

​ 左外连接(左连接)

​ 右外连接(右连接)

左连接有右连接的写法,右连接也会有对应的左连接的写法。

案例:找出所有员工的上级领导(所有员工必须全部查询出来)

image-20220207173202326

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B6cZZVHD-1650374375969)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207173213708.png)]

image-20220207173408943

image-20220207173445468

(左连接和右连接结果都相同)

结果:

image-20220207173322981

外连接最主要的特点是:主表的数据无条件的全部查询出来。

案例:找出哪个部门没有员工

image-20220207173757524

image-20220207173811107

代码:

image-20220207174045255

结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CqMsxuDJ-1650374375971)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207174103234.png)]

9.三张表以上的连接查询

案例:找出每一个员工的部门名称以及工资等级

image-20220207174521144

image-20220207174602230

image-20220207174612376

注意:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H55iSpLM-1650374375972)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207174730241.png)]

代码:
image-20220207174921807

结果:
image-20220207174958489

案例升级:找出每一个员工的部门名称以及工资等级,以及上级领导。

代码:

image-20220207175156395

结果:

image-20220207175224732

10.子查询

select语句当中嵌套的select语句,被嵌套的select语句是子查询。

image-20220207175818091

1.where中的子查询

案例:找出高于平均薪资的员工。

select*from emp where sal > avg(sal);//错误的写法,where后面不能直接使用分组函数。

image-20220207175939472

image-20220207180153594

2.from后面嵌套的子查询

案例:找出每个部门平均薪资的薪资等级。

image-20220207191000035

结果:

image-20220207191019808

案例:找出每个部门平均的薪水等级

image-20220207191320741

image-20220207191434597

结果:

image-20220207191516898

3.select后面嵌套的子查询

案例:找出每个员工所在的部门名称,要求显示员工名和部门名。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VWgWkPkc-1650374375975)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207192031903.png)]

d表:

image-20220207192139267

e表:

image-20220207192104352

11.union(可以将查询结果集相加)

案例:找出工作岗位是SALESMAN和MANAGER的员工

image-20220207192459274

结果:

image-20220207192526121

两张不相干的表中的数据拼接在一起

image-20220207192844013



九,limit的使用

1.limit

重点中的重点,以后分页查询全靠它

  1. limit是MySQL中特有的,其他数据库中没有,不通用。

  2. limit取结果集中的部分数据,这是它的作用

  3. 语法机制limit startIndex , lenth

    startIndex表示起始位置,从0开始0表示第一条数据。

    length表示取几个。

    案例:取工资前五名的员工(思路:降序取前5个)

image-20220207193757004

limit是sql语句执行的最后一个环节:

image-20220207194132426


2.通用的标准分页sql

每页显示3条记录:

第一页:0,3;

第二页:3,3;

第三页:6,3;

第四页:9,3;

第五页:12,3;

每页显示pageSize条记录:
第pageNo页:(pageNo-1),pageSize;

pageSize:每页显示多少条记录

pageNo:显示第几页

十,创建表

1.语法格式

建表语句的语法格式:
create table 表名(

​ 字段名1 数据类型,

​ 字段名2 数据类型,

​ 字段名3 数据类型,

);

注:字段名见名知意

2.MySQL中的数据类型

int 整数型

bigint 长整型

float 浮点型

char 定长字符串

varchar 可变长字符串

date 日期类型

BLOB 二进制大对象

CLOB 字符大对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FcOkplvj-1650374375977)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207202804803.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ZrCL1Qk-1650374375977)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220207202804803.png)]

表名在数据库中一般以:t_ 或者tbl_ 开始

创建学生表:

​ 学生信息包括:

​ 学号,姓名,性别,班级编号,生日

image-20220207204214782

3.向表中插入数据

image-20220207230327013

insert into student (no,name,sex,classno,birth) values(1,‘zhangsan’,‘1’,‘gaosan1ban’,‘a’);

结果:

image-20220207230346729

可以颠倒字段顺序

image-20220208010100445

可以只写部分字段

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cze4rtMA-1650374375979)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220208010100445.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ooV2UGU-1650374375979)(https://gitee.com/yan-chaochao/typora-library/raw/master/typora-library/image-20220208010244882.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xkiwa1Yo-1650374375979)(D:\云顶(正式版,那个里面装的visio)\Java\学习笔记\MySQL笔记\MySQL数据库.assets\image-20220208010820575.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iY8K2hCp-1650374375980)(D:\云顶(正式版,那个里面装的visio)\Java\学习笔记\MySQL笔记\MySQL数据库.assets\image-20220208010923994.png)]

4.表的复制

image-20220208011139447

5.将查询数据插入到一张表中

image-20220208011239573

create table student(no bigint,name varchar(255),sex char(1),classno varchar(255),brith char(10));

create database student;

drop database student;

insert into student (no,name,sex,classno,birth) values(1,‘zhangsan’,‘1’,‘gaosan1ban’,‘a’);

错误:

mysql>  create  table student(
    ->
    -> ​no bigint ,
    ->
    -> ​name varchar(255) ,
    ->
    -> ​sex char(1) ,
    ->
    -> ​classno varchar(255) ,
    ->
    -> ​brith char(10)
    ->
    -> );
ERROR 1046 (3D000): No database selected
mysql> use student;
Database changed
mysql>  create  table student(
    ->
    -> ​no bigint ,
    ->
    -> ​name varchar(255) ,
    ->
    -> ​sex char(1) ,
    ->
    -> ​classno varchar(255) ,
    ->
    -> ​brith char(10)
    ->
    -> );
Query OK, 0 rows affected (0.04 sec)
mysql> desc student
    -> ;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| ​no        | bigint       | YES  |     | NULL    |       |
| ​name      | varchar(255) | YES  |     | NULL    |       |
| ​sex       | char(1)      | YES  |     | NULL    |       |
| ​classno   | varchar(255) | YES  |     | NULL    |       |
| ​brith     | char(10)     | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

mysql>

6.修改数据update

image-20220208011452709

7.更新所有记录

image-20220208011618941

8.删除数据?

image-20220208011922664

11.约束

1.作用和常见的约束

image-20220208012507906

2.非空约束

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐