学JavaWeb第五天——MySQL

一、什么是数据库DB

SQL指令----->>>数据库管理系统DBMS识别并执行指令---------->>>数据库有所改动

只要是关系型数据库,SQL语言的指令都适用。

二、如何安装MySQL

MySQL安装文档 - 飞书云文档 :该链接里面有安装教程。

我们自己学习的时候mysql的数据库是存放在电脑中的,但是在企业开发的时候,是存放在服务器中,而服务器是存放在机房当中的,公司所在的地方和机房可能不在一个省市。

---------->>>>所以我们要远程连接服务器 cmd命令要有 -h: 服务器的IP地址和 -P:端口号。

如果命令里没有写 -h 和 -P,那就是连接的本机的3306端口的MySQL数据库。

三、MySQL数据模型

我们的电脑上安装了MySQL,所以我们的电脑现在就是数据库服务器,要通过客户端连接这个MySQL,就通过上述的命令:mysql -u用户名 -p密码

连接上MySQL之后,就要创建数据库DB,命令:create database db01; 此时数据库的data文件夹就有了一个空文件夹db01.

可以有多个数据库,一个数据库也可以有多张表,一张表有多行数据(一行数据也叫 记录)

四、SQL(重点)

4.1 DDL

4.1.1 数据库操作------创建数据库

  1. 数据库 名字不能重复。
  2. 加上 if not exist之后,存在就不会报错,不存在就创建数据库。
  3. 刚开始没有使用 use XXX 时,select database();是查询当前数据库,是NULL
命令行客户端------->>>图形化界面客户端

MySQL自带的命令行客户端操作不方便,因此想到利用其它操作数据库的管理工具来图形化客户端。

下载安装DataGrip:

这样,创建、删除、变更、查看时哪个数据库,都可以图形化界面的工具来实现。

要想让SQL语句执行,就必须先选中这些SQL语句,并点击运行。

4.1.2 表操作------创建表

代码示例:

sql 复制代码
-- 创建一个数据库
create database db04;

-- 创建一个表
create table user(
    id int primary key auto_increment comment '唯一标识符',
    username varchar(10) not null unique comment '用户名',
    name varchar(10) not null comment '名字',
    age int comment '年龄',
    gerder char(1) default '男' comment '性别'
)comment '用户信息表'

添加数据时,点 ➕,要上交数据时,点⬆。

4.1.3 字段的数据类型

1)数值类型

根据数值能取到的最大值来决定使用哪个。age----tinyint unsigned id----int unsigned

2)字符串类型

  1. blob是二进制,存储视频音频,但是视频音频不存储在数据库中。
  2. text是描述语句,用于一大段话。

主要用到 char 和 varchar:

长度固定:用char 长度不固定用varchar 例如:

3)日期事件类型

4.1.4 项目案例

页面原型要求:

代码:

sql 复制代码
-- 创建表
create table employee(
    id int unsigned primary key auto_increment comment 'ID,主键',
    username varchar(20) not null  unique comment '用户名,唯一',
    name varchar(10) not null comment '姓名',
    gender tinyint unsigned not null comment '性别:1,男;2,女',
    phone char(11) not null unique comment '手机号',
    job tinyint unsigned comment '职位:1班主任,2讲师,3学生主管,4教研主管,5咨询师',
    salary int unsigned comment '薪资',
    image varchar(255) comment '头像,访问链接',
    entry_data date comment '入职日期',
    create_time datetime comment '创建该员工记录的时间',
    update_time datetime comment '最后操作时间'
)comment '员工表';
  1. 必填:not null;;;唯一:unique
  2. 最后一定要补充基础字段:

4.1.5 表操作-增加+修改+删除

代码示例:

sql 复制代码
-- 修改+添加+删除 表字段
alter table employee add weixin varchar(15) unique comment '微信号';

alter table employee modify weixin varchar(18) comment '微信';

alter table employee change weixin weixin_num varchar(18) comment '微信号';

alter table employee drop column weixin_num;

alter table employee rename to emp;

drop table emp;

图形化界面操作:

1)鼠标放到响应SQL语句上就会显示弹窗有答案。

2)修改表结构,可以对着 表 右击 选择 Modify table,可以增加字段/修改字段类型名称/删除字段

3)右击可以Rename修改表名 还可以Drop 删除表

4.2 DML

4.2.1 insert---添加数据

代码示例:

4.2.2 update--修改数据

代码示例:

4.2.3 删除数据--delete

代码示例:

4.3DQL

4.3.1 基本查询

代码示例:

4.3.2 条件查询

代码示例:

4.3.2 分组查询

聚合函数不参与null值的统计,所以 count 要使用非空约束的字段,不然统计个数是错的。

聚合函数括号里面是字段名。

代码示例:

分组查询顺序
  1. **1)****先where,把参与查询的筛选出来,****2)****再group by XX字段名:根据 XX字段 分组,此时已经select查询出来XX字段 和 聚合函数 ,****3)****最后having+筛选条件:根据筛选条件筛选分的小组。****4)**这个having的筛选条件可以用聚合函数,但是where后面不可以,因为还没有分组,用聚合函数就是对所有数据计算,不合理。
  2. where是对所有数据进行筛选--------group by进行分组-------having对小组进行筛选

代码示例:

4.3.4 排序查询

order by 是最后执行的,要对马上要展示的数据进行排序,最后展示排序的数据。

代码示例:

4.3.5 分页查询

代码示例:

相关推荐
疯狂成瘾者3 分钟前
后端系统、服务稳定性里核心的指标有哪些
数据库
SPC的存折31 分钟前
openEuler 24.03 MariaDB Galera 集群部署指南(cz)
linux·运维·服务器·数据库·mysql
仲芒32 分钟前
[24年单独笔记] MySQL 常用的 DML 命令
数据库·笔记·mysql
SPC的存折1 小时前
MySQL 8.0 分库分表
linux·运维·服务器·数据库·mysql
蓦然乍醒1 小时前
使用 DBeaver 还原 PostgreSQL 备份文件 (.bak) 技术文档
数据库·postgresql
XDHCOM1 小时前
Redis节点故障自动恢复机制详解,如何快速抢救故障节点,确保数据不丢失?
java·数据库·redis
QCzblack1 小时前
BugKu BUUCTF ——Reverse
java·前端·数据库
cyber_两只龙宝1 小时前
【Oracle】Oracle之DQL中WHERE限制条件查询
linux·运维·数据库·云原生·oracle
luis的妙妙屋1 小时前
主流数据库数据类型对比分析
数据库
XDHCOM1 小时前
ORA-00054资源忙故障修复,远程处理Oracle报错解决方案,数据库锁超时NOWAIT指定问题排查
数据库·oracle