包头移动官网网站建设,石家庄网站模板建站,手机酒店网站建设,垫江网站建设djrckj前言#xff1a;MySQL是一种流行的关系型数据库管理系统,它的作用是存储和管理数据。在Web开发中,MySQL是必备的数据库技能之一,因为它可以帮助Web开发人员处理大量的数据,并且提供了强大的数据查询和管理功能。 一 数据库介绍
1.1 什么是数据库 1.2 数据库产品 二 MySQL概述… 前言MySQL是一种流行的关系型数据库管理系统,它的作用是存储和管理数据。在Web开发中,MySQL是必备的数据库技能之一,因为它可以帮助Web开发人员处理大量的数据,并且提供了强大的数据查询和管理功能。 一 数据库介绍
1.1 什么是数据库 1.2 数据库产品 二 MySQL概述
2.1 下载
点开下面的链接https://dev.mysql.com/downloads/mysql/ 点击Download 就可以下载对应的安装包了, 安装包如下: 2.2 解压
下载完成后我们得到的是一个压缩包将其解压我们就可以得到MySQL 8.0.31 的软件本体了(就是一个文件夹)我们可以把它放在你想安装的位置 。 2.3 配置
2.3.1. 添加环境变量 环境变量里面有很多选项这里我们只用到Path这个参数。为什么在初始化的开始要添加环境变量呢 在黑框(即CMD)中输入一个可执行程序的名字Windows会先在环境变量中的Path所指的路径中寻找一遍如果找到了就直接执行没找到就在当前工作目录找如果还没找到就报错。我们添加环境变量的目的就是能够在任意一个黑框直接调用MySQL中的相关程序而不用总是修改工作目录大大简化了操作。 右键此电脑→属性点击高级系统设置 点击环境变量 在系统变量中新建MYSQL_HOME 在系统变量中找到并双击Path 点击新建 最后点击确定。 如何验证是否添加成功
右键开始菜单(就是屏幕左下角)选择命令提示符(管理员)打开黑框敲入mysql回车。 如果提示Cant connect to MySQL server on localhost则证明添加成功 如果提示mysql不是内部或外部命令也不是可运行的程序或批处理文件则表示添加添加失败请重新检查步骤并重试。 2.3.2. 初始化MySQL
以管理员身份运行命令行窗口 在刚才的命令行中输入如下的指令
mysqld --initialize-insecure 稍微等待一会如果出现没有出现报错信息则证明data目录初始化没有问题此时再查看MySQL目录下已经有data目录生成。 tips如果出现如下错误 是由于权限不足导致的以管理员方式运行 cmd 2.3.3. 注册MySQL服务
命令行注意必须以管理员身份启动中输入如下的指令回车执行
mysqld -install 现在你的计算机上已经安装好了MySQL服务了。 2.3.4. 启动MySQL服务
在黑框里敲入net start mysql回车。
net start mysql // 启动mysql服务net stop mysql // 停止mysql服务 2.3.5. 修改默认账户密码
在黑框里敲入mysqladmin -u root password 1234这里的1234就是指默认管理员(即root账户)的密码可以自行修改成你喜欢的。
mysqladmin -u root password 1234 2.4 登录MySQL
右键开始菜单选择命令提示符打开黑框。 在黑框中输入mysql -uroot -p1234回车出现下图且左下角为mysql则登录成功。
mysql -uroot -p1234 到这里你就可以开始你的MySQL之旅了
退出mysql
exit
quit
登陆参数
mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306) 2.5卸载MySQL
如果你想卸载MySQL也很简单。
点击开始菜单输入cmd选择 命令提示符选择右侧的 以管理员身份运行。 敲入net stop mysql回车。
net stop mysql 再敲入mysqld -remove mysql回车。
mysqld -remove mysql 最后删除MySQL目录及相关的环境变量。
至此MySQL卸载完成 2.2 数据模型 2.3 SQL简介 三 数据库设计-DDL 3.1 数据库操作 3.2 MySQL客户端工具 IDEA 3.2 数据类型 3.2.1 数值类型 3.2.2 字符串类型 3.2.3 日期时间类型 3.2.4 案例 create table tb_emp
(id int auto_increment comment ID 主键primary key,username varchar(20) not null comment 用户名,password varchar(32) default 123456 not null comment 密码,name varchar(10) not null comment 姓名,gender tinyint unsigned not null comment 性别(1男 2 女),image varchar(300) null comment 图形url,job tinyint unsigned null comment 职位1、班主任 2 讲师 3 学生主管 4 教研主管,entrydate date null comment 入职日期,create_time datetime not null comment 创建时间,update_time datetime not null comment 修改时间
)comment 员工表; 3.3 表创建、查询、修改、删除
3.3.1 创建表 create table tb_user(id int primary key auto_increment comment id,唯一标识,username varchar(20) not null unique comment 用户名,name varchar(10) not null comment 姓名,age int comment 年龄,gender char(1) default 男 comment 性别
) comment 用户表;3.3.2 查询 3.3.3 修改 3.3.4 删除 四 数据库操作-DML 4.1 添加数据 - insert 4.2 修改数据 - update 4.3 删除数据 - delete 4.4 总结 五 数据库操作-DQL 5.1 创建db02数据库并执行脚本
-- 员工管理(带约束)
create table tb_emp (id int unsigned primary key auto_increment comment ID,username varchar(20) not null unique comment 用户名,password varchar(32) default 123456 comment 密码,name varchar(10) not null comment 姓名,gender tinyint unsigned not null comment 性别, 说明: 1 男, 2 女,image varchar(300) comment 图像,job tinyint unsigned comment 职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管,entrydate date comment 入职时间,create_time datetime not null comment 创建时间,update_time datetime not null comment 修改时间
) comment 员工表;-- 准备测试数据
INSERT INTO tb_emp (id, username, password, name, gender, image, job, entrydate, create_time, update_time) VALUES(1, jinyong, 123456, 金庸, 1, 1.jpg, 4, 2000-01-01, 2022-10-27 16:35:33, 2022-10-27 16:35:35),(2, zhangwuji, 123456, 张无忌, 1, 2.jpg, 2, 2015-01-01, 2022-10-27 16:35:33, 2022-10-27 16:35:37),(3, yangxiao, 123456, 杨逍, 1, 3.jpg, 2, 2008-05-01, 2022-10-27 16:35:33, 2022-10-27 16:35:39),(4, weiyixiao, 123456, 韦一笑, 1, 4.jpg, 2, 2007-01-01, 2022-10-27 16:35:33, 2022-10-27 16:35:41),(5, changyuchun, 123456, 常遇春, 1, 5.jpg, 2, 2012-12-05, 2022-10-27 16:35:33, 2022-10-27 16:35:43),(6, xiaozhao, 123456, 小昭, 2, 6.jpg, 3, 2013-09-05, 2022-10-27 16:35:33, 2022-10-27 16:35:45),(7, jixiaofu, 123456, 纪晓芙, 2, 7.jpg, 1, 2005-08-01, 2022-10-27 16:35:33, 2022-10-27 16:35:47),(8, zhouzhiruo, 123456, 周芷若, 2, 8.jpg, 1, 2014-11-09, 2022-10-27 16:35:33, 2022-10-27 16:35:49),(9, dingminjun, 123456, 丁敏君, 2, 9.jpg, 1, 2011-03-11, 2022-10-27 16:35:33, 2022-10-27 16:35:51),(10, zhaomin, 123456, 赵敏, 2, 10.jpg, 1, 2013-09-05, 2022-10-27 16:35:33, 2022-10-27 16:35:53),(11, luzhangke, 123456, 鹿杖客, 1, 11.jpg, 2, 2007-02-01, 2022-10-27 16:35:33, 2022-10-27 16:35:55),(12, hebiweng, 123456, 鹤笔翁, 1, 12.jpg, 2, 2008-08-18, 2022-10-27 16:35:33, 2022-10-27 16:35:57),(13, fangdongbai, 123456, 方东白, 1, 13.jpg, 1, 2012-11-01, 2022-10-27 16:35:33, 2022-10-27 16:35:59),(14, zhangsanfeng, 123456, 张三丰, 1, 14.jpg, 2, 2002-08-01, 2022-10-27 16:35:33, 2022-10-27 16:36:01),(15, yulianzhou, 123456, 俞莲舟, 1, 15.jpg, 2, 2011-05-01, 2022-10-27 16:35:33, 2022-10-27 16:36:03),(16, songyuanqiao, 123456, 宋远桥, 1, 16.jpg, 2, 2010-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:05),(17, chenyouliang, 12345678, 陈友谅, 1, 17.jpg, null, 2015-03-21, 2022-10-27 16:35:33, 2022-10-27 16:36:07),(18, zhang1, 123456, 张一, 1, 2.jpg, 2, 2015-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:09),(19, zhang2, 123456, 张二, 1, 2.jpg, 2, 2012-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:11),(20, zhang3, 123456, 张三, 1, 2.jpg, 2, 2018-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:13),(21, zhang4, 123456, 张四, 1, 2.jpg, 2, 2015-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:15),(22, zhang5, 123456, 张五, 1, 2.jpg, 2, 2016-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:17),(23, zhang6, 123456, 张六, 1, 2.jpg, 2, 2012-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:19),(24, zhang7, 123456, 张七, 1, 2.jpg, 2, 2006-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:21),(25, zhang8, 123456, 张八, 1, 2.jpg, 2, 2002-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:23),(26, zhang9, 123456, 张九, 1, 2.jpg, 2, 2011-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:25),(27, zhang10, 123456, 张十, 1, 2.jpg, 2, 2004-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:27),(28, zhang11, 123456, 张十一, 1, 2.jpg, 2, 2007-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:29),(29, zhang12, 123456, 张十二, 1, 2.jpg, 2, 2020-01-01, 2022-10-27 16:35:33, 2022-10-27 16:36:31); 5.2 select语法-基本查询 -- DQL: 基本查询
-- 1. 查询指定字段 name,entrydate 并返回
select name,entrydate from tb_emp;-- 2. 查询返回所有字段
select id, username, password, name, gender, image, job, entrydate, create_time, update_time from tb_emp;
select * from tb_emp;-- 3. 查询所有员工的 name,entrydate, 并起别名(姓名、入职日期)
select name as 姓名,entrydate as 入职日期 from tb_emp;
select name 姓名,entrydate 入职日期 from tb_emp;
select name 姓 名,entrydate 入职日期 from tb_emp;-- 4. 查询已有的员工关联了哪几种职位(不要重复)
select distinct job from tb_emp; 5.3 select语法-条件查询 -- DQL: 条件查询
-- 1. 查询 姓名 为 杨逍 的员工
select * from tb_emp where name杨逍;-- 2. 查询 id小于等于5 的员工信息
select * from tb_emp where id 5;-- 3. 查询 没有分配职位 的员工信息
select * from tb_emp where job is null;-- 4. 查询 有职位 的员工信息
select * from tb_emp where job is not null;-- 5. 查询 密码不等于 123456 的员工信息
select * from tb_emp where password ! 123456;
select * from tb_emp where password 123456;-- 6. 查询 入职日期 在 2000-01-01 (包含) 到 2010-01-01(包含) 之间的员工信息
select * from tb_emp where entrydate 2000-01-01 and entrydate 2100-01-01;
select * from tb_emp where entrydate between 2000-01-01 and 2100-01-01;
-- 7. 查询 入职时间 在 2000-01-01 (包含) 到 2010-01-01(包含) 之间 且 性别为女 的员工信息
select * from tb_emp where entrydate between 2000-01-01 and 2100-01-01 and gender 2;-- 8. 查询 职位是 2 (讲师), 3 (学工主管), 4 (教研主管) 的员工信息
select * from tb_emp where job 2or job 3 or job4;
select * from tb_emp where job in(2, 3, 4);
-- 9. 查询 姓名 为两个字的员工信息
select * from tb_emp where name like __;-- 10. 查询 姓 张 的员工信息
select * from tb_emp where name like 张%; 5.4 select语法-分组查询 -- DQL: 分组查询
-- 聚合函数-- 1. 统计该企业员工数量
-- A 字段
select count(id) from tb_emp;
-- B 常量
select count(1) from tb_emp;-- C *
select count(*) from tb_emp;-- 2. 统计该企业员工 ID 的平均值
select avg(id) from tb_emp;-- 3. 统计该企业最早入职的员工
select min(entrydate) from tb_emp;-- 4. 统计该企业最迟入职的员工
select max(entrydate) from tb_emp;-- 5. 统计该企业员工的 ID 之和
select sum(id) from tb_emp;-- 分组
-- 1. 根据性别分组 , 统计男性和女性员工的数量
select gender,count(*) from tb_emp group by gender;-- 3. 先查询入职时间在 2015-01-01 (包含) 以前的员工 , 并对结果根据职位分组 , 获取员工数量大于等于2的职位
select job,count(*) from tb_emp where entrydate 2015-01-01 group by job having count(*) 2 ;5.5 select语法-排序查询 -- 排序查询
-- 1. 根据入职时间, 对员工进行升序排序
select * from tb_emp order by entrydate;
select * from tb_emp order by entrydate asc;-- 2. 根据入职时间, 对员工进行降序排序
select * from tb_emp order by entrydate desc ;-- 3. 根据 入职时间 对公司的员工进行 升序排序 入职时间相同 , 再按照 更新时间 进行降序排序
select * from tb_emp order by entrydate,update_time desc ;5.6 select语法-分页查询 -- 分页查询
-- 1. 从起始索引0开始查询员工数据, 每页展示5条记录
select * from tb_emp limit 0,5;-- 2. 查询 第1页 员工数据, 每页展示5条记录
select * from tb_emp limit 0,5;-- 3. 查询 第2页 员工数据, 每页展示5条记录
select * from tb_emp limit 5,5;-- 4. 查询 第3页 员工数据, 每页展示5条记录
select * from tb_emp limit 10,5;-- 5467 起始索引计算公式 页码- 1 * 每页展示记录数select * from tb_emp limit 10,5; 5.7 案例1 select *
from tb_emp
where name like 张%and gender 1and entrydate between 2000-01-01 and 2015-12-31
order by update_time desc
limit 0, 10; 5.8 案例2 -- 2.1
select if(gender1,男性员工,女性员工) 性别,count(*) from tb_emp group by gender;-- 2-2
select (case job when 1 then 班主任 when 2 then 讲师 when 3 then 学生主管 when 4 then 教研主管 else 未分配职位 end ) as 职位,count(*) from tb_emp group by job;5.9 总结 六 多表设计 6.1 一对多 -- 部门管理
create table tb_dept(id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null comment 创建时间,update_time datetime not null comment 修改时间
) comment 部门表;-- 员工管理(带约束)
create table tb_emp (id int unsigned primary key auto_increment comment ID,username varchar(20) not null unique comment 用户名,password varchar(32) default 123456 comment 密码,name varchar(10) not null comment 姓名,gender tinyint unsigned not null comment 性别, 说明: 1 男, 2 女,image varchar(300) comment 图像,job tinyint unsigned comment 职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管,entrydate date comment 入职时间,dept_id int unsigned comment 部门ID,create_time datetime not null comment 创建时间,update_time datetime not null comment 修改时间
) comment 员工表;insert into tb_dept (id, name, create_time, update_time) values(1,学工部,now(),now()),(2,教研部,now(),now()),(3,咨询部,now(),now()),(4,就业部,now(),now()),(5,人事部,now(),now());INSERT INTO tb_emp(id, username, password, name, gender, image, job, entrydate,dept_id, create_time, update_time) VALUES(1,jinyong,123456,金庸,1,1.jpg,4,2000-01-01,2,now(),now()),(2,zhangwuji,123456,张无忌,1,2.jpg,2,2015-01-01,2,now(),now()),(3,yangxiao,123456,杨逍,1,3.jpg,2,2008-05-01,2,now(),now()),(4,weiyixiao,123456,韦一笑,1,4.jpg,2,2007-01-01,2,now(),now()),(5,changyuchun,123456,常遇春,1,5.jpg,2,2012-12-05,2,now(),now()),(6,xiaozhao,123456,小昭,2,6.jpg,3,2013-09-05,1,now(),now()),(7,jixiaofu,123456,纪晓芙,2,7.jpg,1,2005-08-01,1,now(),now()),(8,zhouzhiruo,123456,周芷若,2,8.jpg,1,2014-11-09,1,now(),now()),(9,dingminjun,123456,丁敏君,2,9.jpg,1,2011-03-11,1,now(),now()),(10,zhaomin,123456,赵敏,2,10.jpg,1,2013-09-05,1,now(),now()),(11,luzhangke,123456,鹿杖客,1,11.jpg,1,2007-02-01,1,now(),now()),(12,hebiweng,123456,鹤笔翁,1,12.jpg,1,2008-08-18,1,now(),now()),(13,fangdongbai,123456,方东白,1,13.jpg,2,2012-11-01,2,now(),now()),(14,zhangsanfeng,123456,张三丰,1,14.jpg,2,2002-08-01,2,now(),now()),(15,yulianzhou,123456,俞莲舟,1,15.jpg,2,2011-05-01,2,now(),now()),(16,songyuanqiao,123456,宋远桥,1,16.jpg,2,2010-01-01,2,now(),now()),(17,chenyouliang,123456,陈友谅,1,17.jpg,NULL,2015-03-21,NULL,now(),now()); 外键约束 6.2 一对一 -- 一对一
create table tb_user(id int unsigned primary key auto_increment comment ID,name varchar(10) not null comment 姓名,gender tinyint unsigned not null comment 性别, 1 男 2 女,phone char(11) comment 手机号,degree varchar(10) comment 学历
) comment 用户信息表;insert into tb_user values (1,白眉鹰王,1,18812340001,初中),(2,青翼蝠王,1,18812340002,大专),(3,金毛狮王,1,18812340003,初中),(4,紫衫龙王,2,18812340004,硕士);create table tb_user_card(id int unsigned primary key auto_increment comment ID,nationality varchar(10) not null comment 民族,birthday date not null comment 生日,idcard char(18) not null comment 身份证号,issued varchar(20) not null comment 签发机关,expire_begin date not null comment 有效期限-开始,expire_end date comment 有效期限-结束,user_id int unsigned not null unique comment 用户ID,constraint fk_user_id foreign key (user_id) references tb_user(id)
) comment 用户信息表;insert into tb_user_card values (1,汉,1960-11-06,100000100000100001,朝阳区公安局,2000-06-10,null,1),(2,汉,1971-11-06,100000100000100002,静安区公安局,2005-06-10,2025-06-10,2),(3,汉,1963-11-06,100000100000100003,昌平区公安局,2006-06-10,null,3),(4,回,1980-11-06,100000100000100004,海淀区公安局,2008-06-10,2028-06-10,4);
6.3 多对多 -- 多对多
create table tb_student(id int auto_increment primary key comment 主键ID,name varchar(10) comment 姓名,no varchar(10) comment 学号
) comment 学生表;
insert into tb_student(name, no) values (黛绮丝, 2000100101),(谢逊, 2000100102),(殷天正, 2000100103),(韦一笑, 2000100104);create table tb_course(id int auto_increment primary key comment 主键ID,name varchar(10) comment 课程名称
) comment 课程表;
insert into tb_course (name) values (Java), (PHP), (MySQL) , (Hadoop);create table tb_student_course(id int auto_increment comment 主键 primary key,student_id int not null comment 学生ID,course_id int not null comment 课程ID,constraint fk_courseid foreign key (course_id) references tb_course (id),constraint fk_studentid foreign key (student_id) references tb_student (id)
)comment 学生课程中间表;insert into tb_student_course(student_id, course_id) values (1,1),(1,2),(1,3),(2,2),(2,3),(3,4); 6.4 总结 6.5 综合案例 -- 瑞吉点餐页面原型 , 设计表结构
-- 分类表
create table category(id int unsigned primary key auto_increment comment 主键ID,name varchar(20) not null unique comment 分类名称,type tinyint unsigned not null comment 类型 1 菜品分类 2 套餐分类,sort tinyint unsigned not null comment 顺序,status tinyint unsigned not null default 0 comment 状态 0 禁用1 启用,create_time datetime not null comment 创建时间,update_time datetime not null comment 更新时间
) comment 菜品及套餐分类 ;-- 菜品表
create table dish(id int unsigned primary key auto_increment comment 主键ID,name varchar(20) not null unique comment 菜品名称,category_id int unsigned not null comment 菜品分类ID,price decimal(8, 2) not null comment 菜品价格,image varchar(300) not null comment 菜品图片,description varchar(200) comment 描述信息,status tinyint unsigned not null default 0 comment 状态, 0 停售 1 起售,create_time datetime not null comment 创建时间,update_time datetime not null comment 更新时间
) comment 菜品;-- 套餐表
create table setmeal(id int unsigned primary key auto_increment comment 主键ID,name varchar(20) not null unique comment 套餐名称,category_id int unsigned not null comment 分类id,price decimal(8, 2) not null comment 套餐价格,image varchar(300) not null comment 图片,description varchar(200) comment 描述信息,status tinyint unsigned not null default 0 comment 状态 0:停用 1:启用,create_time datetime not null comment 创建时间,update_time datetime not null comment 更新时间
)comment 套餐 ;-- 套餐菜品关联表
create table setmeal_dish(id int unsigned primary key auto_increment comment 主键ID,setmeal_id int unsigned not null comment 套餐id ,dish_id int unsigned not null comment 菜品id,copies tinyint unsigned not null comment 份数
)comment 套餐菜品关系;
七 多表查询 7.1 内连接 7.2 外连接 7.3 子查询 7.4 总结 7.5 案例 八 事务
8.1 概念 8.2 操作 8.3 四大特性 8.4 总结 九 索引