MySQL数据库(一)

文章目录

1.MySQL8.0安装配置

1.安装教程

MySQL8安装教程

2.启动方法
  1. 管理员身份打开命令行
  2. net start mysql
  3. mysql -u root -p(用户名root)
  4. 输入密码 root

image-20240115095729281

3.启动注意事项

image-20240115100152687

image-20240115100505503

4.Navicat使用
  1. 点击连接选择MySQLimage-20240115100926896
  2. 输入相关信息,跟命令行时候的参数是一样的image-20240115101039123
  3. 点击测试连接image-20240115101109589
  4. 点击确定即可
5.Navicat演示

image-20240115101225215

  1. 打开连接image-20240115101449683
  2. 新建数据库image-20240115101726292
  3. 打开数据库image-20240115101826971
  4. 新建表image-20240115101853293
  5. 设置表image-20240115102025612
  6. 保存image-20240115102053671
  7. 插入image-20240115102229315

2.MySQL数据库基本介绍

1.三层结构

image-20240115103248995

2.SQL语句分类

image-20240115103444930

3.MySQL数据库基本操作

1.创建数据库
-- 使用指令创建数据库
CREATE DATABASE hsp_db01
-- 删除数据库指令
DROP DATABASE hsp_db01
-- 创建utf8bm4字符集并带校对规则(区分大小写)的数据库
CREATE DATABASE db02
CHARACTER SET utf8mb4
COLLATE utf8mb4_bin;
-- 创建utf8bm4字符集并带有校对规则(不区分大小写)的数据库
CREATE DATABASE db03
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
2.不区分大小写的校对规则

image-20240115111114699

3.查看、删除数据库
-- 查看所有数据库
-- SHOW DATABASES;
-- 查看前面创建的数据库的定义信息
SHOW CREATE DATABASE hsp_db01;
-- 在创建数据库表的时候,为了规避关键字,可以使用反引号解决
CREATE DATABASE `db04`;
-- 删除数据库,可以不加反引号
DROP DATABASE db04;
4.备份和恢复数据库

image-20240115121512928

在命令行的原因是这个mysqldump.exe实际上在bin目录下

1.备份数据库db01和db02(dos)
C:\Windows\system32>mysqldump -u root -p -B db01 db02 > e:\\back.sql
2.恢复数据库db01和db02(mysql命令行界面)
mysql> Source e:\\back.sql
5.备份和恢复数据表

image-20240115123206236

1.备份数据库db01中的表users(dos)
C:\Windows\system32>mysqldump -u root -p db01 users > e:\\users.sql
2.恢复数据库db01中的表users(mysql命令行界面)
1.选择数据库
mysql> use db01
2.执行恢复语句
mysql> Source e:\\users.sql
3.课堂练习
题目

image-20240115124142797

答案
mysql> Source e:\\ecshop.sql
C:\Windows\system32>mysqldump -u root -p -B ecshop > e:\\ecshop.sql
mysql> drop database ecshop;
mysql> Source e:\\ecshop.sql
细节说明

在进行数据备份到指定文件夹的时候,要退出那个文件夹,否则系统认为你在操作文件夹,则不会进行导入

4.MySQL数据表操作

1.创建表
基本介绍

image-20240115132533922

代码实例
CREATE TABLE `user` (
	`id` INT,
	`name` VARCHAR(255),
	`password` VARCHAR(255),
	`birthday` DATE 
)
CHARACTER SET utf8mb4 COLLATE utf8mb4_bin ENGINE INNODB;
-- 设置字符集,校对方式,引擎
2.列类型基本介绍

image-20240115132834256

1.数值类型

image-20240115133922391

2.文本类型

image-20240115133947303

3.二进制数据类型

image-20240115134009594

4.日期类型

image-20240115134030870

3.列类型之整型
以tinyint为例
1.创建一个有符号的tinyint字段
CREATE TABLE `t1` (
	id TINYINT
);
INSERT INTO `t1` VALUES(-200); 
-- 有符号的范围是-128到127,无符号的是0到255,所以这个插入不进去
SELECT * FROM `t1`; 

image-20240115135531849

2.创建一个无符号的tinyint字段
CREATE TABLE `t1` (
	id TINYINT UNSIGNED
);
INSERT INTO `t1` VALUES(250); 
-- 有符号的范围是-128到127,无符号的是0到255,所以这个可以插入
SELECT * FROM `t1`; 

image-20240115135818665

4.列类型之bit
CREATE TABLE `t2` (
	id BIT(8)
);
INSERT INTO `t2` VALUES(255); 
-- 八个bit的范围是0到255
-- 是以位的形式显示的数据
-- 查询还是可以按照输入的数据来查询数据
-- 如果只有0和1则可以使用bit类型来节省空间 
SELECT * FROM `t2` WHERE id = 255; 

image-20240115143312371

5.列类型之小数类型
CREATE TABLE t06 (
	num1 FLOAT,
	num2 DOUBLE,
	num3 DECIMAL(30,20)
);
INSERT INTO t06 VALUES(88.123434444,88.123434444,88.123434444);
SELECT * FROM t06;

image-20240115145655949

6.列类型之字符串

image-20240115145843324

image-20240115150430067

细节说明
  1. char(4) 表示字符数,最大255,不是字节数,不管是中文还是英文都是放四个,按字符计算
  2. varchar(4)表示字符数,最大255,不是字节数,不管是中文还是英文都是放四个,按字符计算
  3. char(4)是定长(固定的大小),就是说,即使你插入‘aa’,也会占用分配的四个字符的空间
  4. varchar(4)是变长(变化的大小),就是说 如果你插入了‘aa’,则就按照实际占用空间来分配
  5. varchar本身还需要占用1到3个字节来记录存放内容长度,L(实际数据大小) + (1-3)个字节
  6. 什么时候使用char或varchar
    1. 如果数据定长,推荐使用char,比如md5的密码,邮编,手机号,身份证号码等
    2. 如果字段的长度不确定,使用varchar
    3. 查询速度 char > varchar
  7. image-20240115151817138
6.列类型之日期类型
CREATE TABLE t07 (
		birthday DATE,
		job_time DATETIME,
		login_time TIMESTAMP 
		NOT NULL DEFAULT CURRENT_TIMESTAMP
		ON UPDATE CURRENT_TIMESTAMP -- 	如果这样设置的时间戳会在每次修改这条语句的时候更新时间

);
INSERT INTO t07(birthday, job_time) VALUES('2022-11-11','2022-11-11 10:10:10');
-- 字符串使用单引号
SELECT * FROM t07;

image-20240115154412070

image-20240115154443189

7.创建表的练习
题目

image-20240115160029819

答案
CREATE TABLE createtable (
				Id int,
				`name` VARCHAR(32),
				sex CHAR(1),
				birthday DATE,
				entry_date DATETIME,
				job VARCHAR(32),
				Salary DOUBLE,
				resume TEXT
); 
INSERT INTO createtable VALUES(100,'小妖怪','男','2000-11-11','2010-11-10 11:11:11',
'巡山的',3000,'大王叫我来巡山');
SELECT * FROM createtable;

image-20240115160017815

8.修改表

image-20240115160700098

修改表实例

image-20240115160729167

答案
-- 查看表结构
DESC employee;

-- 增加一个image列,VARCHAR类型,在RESUME后面
ALTER TABLE emp 
ADD image VARCHAR(255) NOT NULL DEFAULT '' AFTER RESUME

-- 修改job列使其长度为60
ALTER TABLE emp 
MODIFY job VARCHAR(60)

-- 删除sex列
ALTER TABLE emp 
DROP sex;

-- 表名改为employee
RENAME TABLE emp to employee

-- 修改表的字符集为utf8
ALTER TABLE employee CHARACTER SET utf8mb4

-- 列名name修改为user_name
ALTER TABLE employee CHANGE COLUMN NAME username VARCHAR(20)
注意

表的名字和列的名字是不区分大小写的

5.MySQL数据库CRUD

1.Insert

image-20240115164416027

1.快速入门案例

image-20240115164423409

CREATE TABLE sp (
	id int,
	goods_name VARCHAR(10),
	price DOUBLE
);

INSERT INTO SP VALUES(1, '手机', 9000);
INSERT INTO SP VALUES(2, '电脑', 8000);

image-20240115164922441

2.细节说明
  1. 插入的数据应与字段的数据类型相同,比如,把’abc’插入到int类型会报错

  2. 数据的长度应在列的规定范围内,例如,不能将一个长度为80的字符串加入到长度为40的列中

  3. 在values中列出的数据位置必须与被加入的列的排列位置 相对应

  4. 字符和日期型数据应包含在单引号中

  5. 列可以插入空值,前提是该字段允许为空

  6. insert into table_name(列名…) values(),(),() 形式添加多条记录

  7. 如果是给表中的所有字段添加数据,可以不写前面的字段名称

  8. 默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错

    CREATE TABLE goods (
    	id int,
    	goods_name VARCHAR(10) NOT NULL DEFAULT '苹果', --不添加则是默认值
    	price DOUBLE
    );
    
2.Update

image-20240115190843238

1.案例

image-20240115190921424

-- 将所有员工的工资设置为5000
UPDATE createtable SET salary = 5000 
-- 将姓名为小妖怪的员工薪水改为3000元
UPDATE createtable SET salary = 3000 WHERE name = '小妖怪'
-- 将老妖怪的薪水增加10000元
UPDATE createtable SET salary = salary + 1000 WHERE name = '老妖怪'
2.使用细节
  1. set指定修改哪些列和要给予哪些值

  2. where子句指定应更新哪些行,如果没有where语句,则更新所有的行

  3. 如果需要修改多个字段,可以通过set字段1 = 值1, set字段2 = 值2

    -- 修改多个字段
    UPDATE createtable SET salary = salary + 2000, job = '培训机构' WHERE name = '小妖怪'
    
3.Delete

image-20240115193331091

1.案例

image-20240115193337169

-- 删除表中名称为'老妖怪'的记录
DELETE FROM createtable WHERE name = '老妖怪'
-- 删除表中所有记录
DELETE FROM createtable 
2.细节
  1. 如果不使用where子句,将删除表中所有数据

  2. delete语句不能删除某一列的值,可以使用update设置为null或’’

    -- UPDATE将一列清空
    UPDATE createtable SET name = NULL
    

    image-20240115194409105

  3. 使用delete语句只能删除记录,不能删除表本身,如果要删除表,需要使用drop table 表名

4.Select

image-20240115194628778

案例1

image-20240115195258209

-- 查询所有学生成绩
SELECT * FROM student
-- 查询表中所有学生的姓名和对应的英语成绩
SELECT name, english FROM student  
-- 过滤表中的重复数据
SELECT DISTINCT * FROM student

案例2

image-20240115200210718

-- 统计每个学生的总分
SELECT name , (chinese + english + math) from student
-- 在所有学生总分加10分的情况
SELECT name , (chinese + english + math + 10) from student
-- 加别名
SELECT name AS '姓名' , (chinese + english + math) AS '成绩' from student
案例3
-- 查询姓名为赵云的学生成绩
SELECT * FROM student where name = '赵云'
-- 查询英语成绩大于90分的同学
SELECT * FROM student WHERE english > 90
-- 查询总分大于200分的所有同学
SELECT * FROM student WHERE (chinese + english + math) > 200

-- 查询math大于60并且id大于4的学生成绩
SELECT * FROM student WHERE math > 60 and id > 4
-- 查询英语成绩大于语文成绩的学生
SELECT * FROM student WHERE english > chinese
-- 查询总分大于200分并且数学成绩小于语文成绩的,姓韩的学生
SELECT * FROM student WHERE (chinese + english + math) > 200 and math < chinese and name LIKE '韩%'

-- 查询英语分数在80到90之间的同学
SELECT * FROM student WHERE english BETWEEN 80 AND 90
-- 查询数学分数为89,90,91的学生
SELECT * FROM student WHERE math = 89 or math = 90 or math = 91
SELECT * FROM student WHERE math IN (89, 90, 91)
-- 查询所有姓李的学生成绩
SELECT * FROM student WHERE name LIKE '李%'
-- 查询数学分>80,语文分>80的同学
SELECT * FROM student WHERE math > 80 AND chinese > 80
ORDER BY排序

image-20240115205525080

-- 对数学成绩排序后升序
SELECT math from student ORDER BY math 
-- 对总分从高到低的顺序输出
SELECT (chinese + math + english) as '总分' FROM student ORDER BY '总分' DESC
-- 对姓韩的学生成绩排序输出(降序)
SELECT (chinese + math + english) AS total FROM student WHERE name LIKE '韩%' ORDER BY total DESC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/502294.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++多线程:线程的创建、join、detach、joinable方法(二)

1、线程的开始与结束 程序运行起来&#xff0c;生成一个进程&#xff0c;该进程所持有的主线程开始自动运行&#xff0c;main主线程运行完所有的代码从main函数中返回表示整个进程运行完毕&#xff0c;标志着主线程和进程的死亡&#xff0c;等待操作系统回收资源&#xff0c;因…

简单了解策略模式

什么是策略模式&#xff1f; 策略模式提供生成某一种产品的不同方式 Strategy策略类定义了某个各种算法的公共方法&#xff0c;不同的算法类通过继承Strategy策略类&#xff0c;实现自己的算法 Context的作用是减少客户端和Strategy策略类之间的耦合&#xff0c;客户端只需要…

ubuntu 连接 校园网

​ 认证修改为 Protected EAP(PEAP) CA 证书 勾选 No CA certificate is required 输入用户名和密码 连接成功 ​

【火猫TV】西甲:巴萨中后场大洗牌,两位新人或被放弃!

巴萨本赛季已经来到了最关键的时刻,联赛中他们要想办法缩小与皇马的差距,欧冠联赛则要和大巴黎争夺四强名额。不过球队在转会市场上的操作非常频繁,在转会资金有限的情况下,他们已经准备了多套引援策略,其中对于中后场的打造可能会成为今夏的工作重心。比如后防核心阿劳霍就被多…

二维码门楼牌管理应用平台建设:智能匹配与高效管理

文章目录 前言一、二维码门楼牌管理应用平台的意义二、地址坐标校验的重要性三、对外采数据匹配校验的实现方式四、智能匹配与人工审核的结合五、二维码门楼牌管理应用平台的前景展望 前言 随着城市化进程的加速&#xff0c;门楼牌管理成为城市治理中不可或缺的一环。传统的门…

java电话号码的字母组合(力扣Leetcode17)

电话号码的字母组合 力扣原题链接 问题描述 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 示例 1&#xff1a;…

HarmonyOS 应用开发之启动/停止本地PageAbility

启动本地PageAbility PageAbility相关的能力通过featureAbility提供&#xff0c;启动本地Ability通过featureAbility中的startAbility接口实现。 表1 featureAbility接口说明 接口名接口描述startAbility(parameter: StartAbilityParameter)启动Ability。startAbilityForRes…

GPT提示词分享 —— 智能域名生成器

提示词&#x1f447; 我希望你能充当一个聪明的域名生成器。我将告诉你我的公司或想法是什么&#xff0c;你将根据我的提示回复我一份域名备选清单。你只需回复域名列表&#xff0c;而不是其他。域名应该是最多 7-8 个字母&#xff0c;应该简短但独特&#xff0c;可以是朗朗上口…

【物联网项目】基于ESP8266的家庭灯光与火情智能监测系统——文末完整工程资料源码

目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …

STM32H743驱动SSD1309(5)

接前一篇文章&#xff1a;STM32H743驱动SSD1309&#xff08;4&#xff09; 三、命令说明 10. 设置BANK0的对比度控制&#xff08;81h&#xff09; 此命令设置显示器的对比度设置。该芯片具有从00h到FFh的256个对比度阶跃。segment输出电流随着对比度阶跃值的增加而增加。 示例…

CMOS逻辑门电路主要技术参数

传输延迟时间 由于电极之间以及电极与衬底之间存在寄生电容&#xff0c;并且输出端通常也存在负载电容。当输入信号跳变时&#xff0c;由于电容的充放电&#xff0c;输出电压的变化必然滞后与输入电压的变化。 门电路传输延迟波形图如下&#xff1a; 通常CMOS逻辑门电路输出端…

哔哩哔哩直播姬有线投屏教程

1 打开哔哩哔哩直播姬客户端并登录(按下图进行操作) 2 用usb连接电脑(若跳出安装驱动的弹窗点击确定或允许),usb的连接方式为仅充电 不要更改usb的连接方式(不然电脑会死机需要重启),此时电脑识别不到该手机设备(因为电脑把它识别为投屏设备) 想要正常连接电脑进行文件传输就按…

日志集中审计系列(4)--- LogAuditor接收IPS设备日志

日志集中审计系列(4)--- LogAuditor接收IPS设备日志 前言拓扑图设备选型组网需求配置思路操作步骤结果验证前言 近期有读者留言:“因华为数通模拟器仅能支持USG6000V的防火墙,无法支持别的安全产品,导致很多网络安全的方案和产品功能无法模拟练习,是否有真机操作的实验或…

Vue3:快速上手路由器

本人在B站上关于vue3的尚硅谷的课程&#xff0c;以下是整理一些笔记。 一.路由器和路由的概念 在 Vue 3 中&#xff0c;路由&#xff08;Router&#xff09;和路由器&#xff08;Router&#xff09;是两个相关但不同的概念。 1. 路由&#xff08;Router&#xff09;&#xff…

Java面试题第二季

一、JUC多线程及高并发 1.谈谈你对volatile的理解 线程安全获得保证 1.volatile是Java虚拟机提供的轻量级的同步机制 保证可见性 不保证原子性 1号和2号线程同时修改各自工作空间中的内容&#xff0c;因为可见性&#xff0c;需要重写入内存&#xff0c;但是1号在写入的时候…

如何保证redis里的数据都是热点数据

MySQL 里有 2000w 数据&#xff0c;Redis 中只存 20w 的数据&#xff0c;如何保证 redis 中的数据都是热点数据&#xff1f; 1.Redis 过期删除策略 1&#xff09;惰性删除:放任键过期不管&#xff0c;但是每次从键空间中获取键时&#xff0c;都检查取得的键是否过期&#xff0c…

Mac上Matlab_R2023b ARM 版 启动闪退(意外退出)解决方法

安装好后&#xff0c;使用 "libmwlmgrimpl.dylib" 文件替换掉"/Applications/Matlab_R2023b.app/bin/maca64/matlab_startup_plugins/lmgrimpl"文件夹下的同名文件 在终端下执行如下命令&#xff1a; codesign --verbose --force --deep -s - /Applicat…

简易TCP服务器通信、IO多路复用(select、poll、epoll)以及reactor模式。

网络编程学习 简单TCP服务器通信TCP三次握手和四次挥手三次握手&#xff08;如下图&#xff09;常见问题&#xff1f; 四次挥手 client和server通信写法server端client端 通信双方建立连接到断开连接的状态转换怎么应对多用户连接&#xff1f;缺点 IO多路复用select优缺点 poll…

物联网学习2、MQTT 发布/订阅模式介绍

MQTT 发布/订阅模式 发布订阅模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;它将发送消息的客户端&#xff08;发布者&#xff09;与接收消息的客户端&#xff08;订阅者&#xff09;解耦&#xff0c;使得两者不需要建立直接的联系也不…

算法题2两数相加

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 开…