MySQL数据库(一)

news/2024/4/30 7:28:56

文章目录

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_TIMESTAMPON 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

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

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

相关文章

Python(乱学)

字典在转化为其他类型时&#xff0c;会出现是否舍弃value的操作&#xff0c;只有在转化为字符串的时候才不会舍弃value 注释的快捷键是ctrl/ 字符串无法与整数&#xff0c;浮点数&#xff0c;等用加号完成拼接 5不入&#xff1f;&#xff1f;&#xff1f; 还有一种格式化的方法…

人工智能产业应用--具身智能

五、下一个浪潮 (一) 跳出缸中脑——虚实结合 在探索人工智能的边界时&#xff0c;“跳出缸中脑——虚实结合”这一概念提出了一个引人深思的视角&#xff0c;尤其是在具身智能的领域。具身智能是一种思想&#xff0c;强调智能体通过与其环境的直接物理互动来实现智能行为。然…

C#简单——多选框控件相关的神奇问题

他们真的很简单&#xff0c;但我怎么总是忘记啊QAQ 还是记下来吧&#xff0c;下次直接copy 点开后出现 有列名 列名有数据&#xff0c;有表 表里有数据但不显示的情况 解决&#xff1a;点击小三角-点击Design View-Columns-需要在这里对下拉列表里的内容进行对应配置。 多选框…

WP Rocket v3.15.10最新版强大的WordPress缓存插件

WP Rocket v3.15.10是一款强大的WordPress缓存插件&#xff0c;它通过一系列优化措施来提高网站的速度和性能。 WP Rocket与免费缓存插件相比&#xff0c;提供了更丰富和高级的自定义设置功能。这些包括媒体优化、预加载、延迟加载和数据库优化等。特别是对于没有任何缓存技术…

java自动化学习-03-02java基础语法01

1、java基础语法 在JAVA中源文件名称必须和主类名称相同 源文件名&#xff1a;源文件名必须和类名相同。当保存文件的时候&#xff0c;你应该使用类名作为 文件名保存&#xff08;切记 Java 是大小写敏感的&#xff09;&#xff0c;文件名的后缀为 .java。&#xff08;如果文…

一场人生的风险控制,商业社会识人指南

一、资料前言 本套社会识人资料&#xff0c;大小679.94M&#xff0c;共有37个文件。 二、资料目录 识人的终极目的&#xff1a;一整场人生的风险控制.pdf 信任的搭建&#xff1a;更多的时间与维度.pdf 没有搞不定的人&#xff01;角色人格与全面人格.pdf 政治不正确的正确…