day21_mysql

今日内容

零、 复习昨日

第一阶段: Java基础知识(会编程,懂编程)

第二阶段: Web开发(前端,后端,数据库)

一、MySQL

一、引言


javaweb开发

二、数据库


2.1 概念

​ 数据库是“按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。

2.2 数据库的分类

  • 网状结构数据库:美国通用电气公司IDS(Integrated Data Store),以节点形式存储和访问。
  • 层次结构数据库:IBM公司IMS(Information Management System)定向有序的树状结构实现存储和访问。
  • 关系结构数据库:Oracle、DB2、MySQL、SQL Server,MariaDB以表格(Table)存储,多表间建立关联关系,通过分类、合并、连接、选取等运算实现访问。
  • 非关系型数据库:ElastecSearch、MongoDB、Redis,多数使用哈希表,表中以键值(key-value)的方式实现特定的键和一个指针指向的特定数据。

关系型和非关系型的区别: 主要是指 表和表之间的关系

三、数据库管理系统


3.1 概念

​ 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。


RDBMS 关系数据库管理系统(Relational DataBase Management System,RDBMS)

3.2 常见数据库管理系统

  • Oracle:被认为是业界目前比较成功的关系型数据库管理系统。Oracle数据库可以运行在UNIX、Windows等主流操作系统平台,完全支持所有的工业标准,并获得最高级别的ISO标准安全性认证。
  • DB2:IBM公司的产品,DB2数据库系统采用多进程多线索体系结构,其功能足以满足大中公司的需要,并可灵活地服务于中小型电子商务解决方案。
  • SQL Server:Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点。
  • SQLLite:应用在手机端的数据库。
  • MySQL
  • MariaDB

四、MySQL


4.1 简介

​ MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS(Relational Database Management System,关系数据库管理系统) 应用软件之一。

4.2 访问与下载

官方网站:https://www.mysql.com/

下载地址:https://dev.mysql.com/downloads/mysql/

目前安装的版本: 5.7+ , 8.0+

版本选择
image-20230314192923095
下载页面
image-20230314192930024

4.3 安装

两种安装方案,详见安装文档

4.4 使用

  • 启动mysql
    • 命令net start mysql
    • 任务管理器启动(ctrl+shift+esc)–服务 --mysql(mysql57)
  • 登录mysql
    • mysql -uroot -pxxxxx
  • 退出mysql
    • exit

五、SQL语言

​ SQL(Structured Query Language)结构化查询语言,用于存取数据、更新、查询和管理关系数据库系统的程序设计语言。

SQL语言有标准,ISO定制了SQL99标准

  • 经验:通常执行对数据库的“增删改查”,简称C(Create)R(Read)U(Update)D(Delete)。
  • DDL(Data Definition Language) 数据定义语言,定义数据库,表,列等
  • DML(Data Manipulation Language) 数据操作语言,操作内部数据(增,删除,修改)
  • DQL(Data Query Language) 数据查询语言,对数据的查询
  • DCL(Data Control Language) 数据控制语言,定义数据的访问控制和安全

六、DDL

mysql是RDBMS: 是关系型数据库管理系统,它管理很多个数据库

库: 一个项目一个数据库,数据库内有很多表

表: 一个分类一个表,表内有很多列

列:一个列代表一个特性(属性/字段)

行:一行代表一个具体实例

image-20230504165304438

6.1 数据库操作

查看MySQL中所有数据库

mysql> SHOW DATABASES; #显示当前MySQL中包含的所有数据库
数据库名称描述
information_schema信息数据库,其中保存着关于所有数据库的信息(元数据)。
元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。
mysql核心数据库,主要负责存储数据库的用户、权限设置、关键字等,
以及需要使用的控制和管理信息,不可以删除。
performance_schema性能优化的数据库,MySQL 5.5版本中新增的一个性能优化的引擎。
sys系统数据库,MySQL5.7版本中新增的可以快速的了解元数据信息的系统库
便于发现数据库的多样信息,解决性能瓶颈问题。

创建自定义数据库[重点]

mysql> CREATE DATABASE mydb1; #创建mydb数据库
mysql> CREATE DATABASE mydb2 CHARACTER SET gbk; #创建数据库并设置编码格式为gbk
mysql> CREATE DATABASE IF NOT EXISTS mydb4; #如果mydb4数据库不存在,则创建;如果存在,则不创建。

查看数据库创建信息

mysql> SHOW CREATE DATABASE mydb2; #查看创建数据库时的基本信息

修改数据库

mysql> ALTER DATABASE mydb2 CHARACTER SET gbk; #修改数据库的字符集

ps: 数据库一旦创建不能修改名字,只能修改编码格式,但是我们在安装mysql时已经确定了数据格式为UTF-8,所以不需要动!!

删除数据库

mysql> DROP DATABASE mydb1; #删除数据库mydb1

查看当前所使用的数据库

mysql> select database(); #查看当前使用的数据库

使用数据库

mysql> USE mydb1; #使用mydb1数据库

总结: 关于数据库的操作,重点记住

  • 建库 create database 库名;
  • 删库 drop database 库名;
  • 涉及的单词很重要

6.2 数据表操作

查询当前库下的所有表

mysql> show tables;

创建数据表[重点]


CREATE TABLE 表名(

​ 列名 数据类型(长度) [约束],

​ 列名 数据类型(长度) [约束],

​ …

​ 列名 数据类型 [约束] //最后一列的末尾不加逗号

)[charset=utf8] //可根据需要指定表的字符编码集

列名数据类型说明
subject_idINT课程编号
subject_nameVARCHAR(20)课程名称
subject_hoursINT课程时长
CREATE TABLE subject(subject_id int,subject_name varchar(20),subject_hours int
);
# 注释
-- 注释
-- int后长度可以不要,因为默认长度11
-- char,varchar必须加长度
-- varchar,var是单词variable变量的意思,即varchar是指可变长度字符串
-- char(10),存储10个字符串,假如存储的是abc,那么所占空间还是10个,'abc       '
-- varchar(10),假如存储的是abc,那么所占空间会改变个,'abc'
-- 字符串取值范围0-255
mysql> -- 创建表
mysql> -- 创建学生表(stu),列: id 数字类型,name 字符串类型,性别 字符型,score 浮点型 ,birthday 日期类型
mysql> create table stu(  -- 创建表-> id int,  -- id是列名,int是数据类型,长度是11,默认可以不写-> name varchar(20), -- name是列名,varchar是可变长字符类型-> sex char(1), -- sex性别,char定长字符串-> score double(10,2),-- score 是列名,double浮点型,10是总长度,2其中小数点个数-> birthday date -- birthday是列名,date是日期类型,不需要长度-> );
idnamesexscorebirthday
数据类型解释长度
int整形11,固定,可以省略
double浮点型(x,y) 总长x位,其中包含y位小数
char定长字符0-255,声明(10)的字符,即使字符不够,也会占用10位
varchar可变长字符0-255,声明(10)的字符,会根据实际存储缩放
date日期没有长度,年月日
datatime日期时间没有长度,年月日时分秒
timestamp时间戳没有长度,年月日时分秒

练习

 -- 创建教师表(teacher),教师id(tid),教师名字(tname),所教科目(subject),年龄(age),工资(salary),入职时间(hiredate)
mysql> create table teacher(-> tid int,-> tname varchar(20),-> subject varchar(20),-> age int,-> salary double(10,2),-> hiredate date-> );

查看表结构

# 查看表结构
desc stu;

向现有表中添加列

#在课程表基础上添加gradeId 列
ALTER TABLE subject ADD gradeId int;

删除表中的列

#删除课程表中 gradeId 列
ALTER TABLE subject DROP gradeId;
  • 注意:删除列时,每次只能删除一列

修改列名

#修改课程表中 subjectHours 列为 classHours
ALTER TABLE subject CHANGE subjectHours classHours int ;
  • 注意:修改列名时,在给定列新名称时,要指定列的类型和约束

修改表名

#修改课程表的subject 为 sub
ALTER TABLE subject rename sub;

删除学生表

#删除学生表
DROP TABLE subject;
DDL语句: 增加create,查询show,更新alter,删除drop
-- 库操作
show databases;
create database 名字;
drop database 名字;
alter database 名字 xxxx
-- 表操作
show tables;
create table 名字 (列名 数据类型,列名 数据类型,...)
alter table 名字 xxx
drop table 名字-- 以上命令,熟悉即可
-- 最重要的是 创建表 语句和图形化操作

七、客户端工具


7.1 Navicate

Navicat是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。

7.2 SQLyog

MySQL可能是世界上最流行的开源数据库引擎,但是使用基于文本的工具和配置文件可能很难进行管理。SQLyog提供了完整的图形界面,即使初学者也可以轻松使用MySQL的强大功能。其拥有广泛的预定义工具和查询、友好的视觉界面、类似 Excel 的查询结果编辑界面等优点。

八、DML[重点]

DML 数据操作语言,其实对表中的数据进行

8.1 插入

插入,就是向数据库表中插入数据,语法

insert into 表名 (字段1,字段2,...) values (1,2,...);insert into 表名 values (1,2,...);
-- 注释
# 注释
/*
* 多行注释
*/
CREATE TABLE `stu` (`sid` int(11) DEFAULT NULL,`sname` varchar(10) DEFAULT NULL,`age` int(11) DEFAULT NULL,`score` double(5,2) DEFAULT NULL,`birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ================= 插入 =================
/*insert into 表名 (字段1,字段2,...) values (值1,值2,...);
注意事项:
1) 数字直接写
2) 字符串用单引号
3) 日期用单引号,格式yyyy-MM-dd
4) 可以单独向部分字段插入数据
5) 插入的字段顺序和原表没有关系,但是值顺序要和插入字段顺序一致
6) 当插入表中全部字段时,可以省略字段,直接写值此时字段顺序和原表一模一样
7) 可以同时插入多行数据
*/
-- 向表的全部字段插入数据
insert into stu (sid,sname,age,score,birthday)
values (1,'彩云',20,98.2,'2020-01-01');
-- 插入部分字段
insert into stu (sid,sname,age)
values (2,'贝贝',20);
-- 字段顺序和原表没关系
insert into stu (age,sname,sid)
values (18,'老邢',3);
-- 给全部列插入值,省略字段
insert into stu values (4,"骚磊",20,99.9,'2020-01-01');
-- 同时插入多行
insert into stu (age,sname,sid) values 
(18,'博哥',5),
(19,'阳哥',6),
(20,'万哥',7),
(21,'邱哥',8)

8.2 更新

语法

update 表名 set 字段 =[, 字段2 =2, ... ] [where 字段 =];
-- [, 字段2 = 值2, ... ] 是指,可选的,可以同时修改多个列的值
-- [where 字段 = 值] 是指,可选的,加上是指过滤,只更新符合条件的数据
--                            不加,就是更新全表数据, 不推荐!!
/*update 表名 set 字段 = 值;update 表名 set 字段 = 值 , 字段2 = 值2 ;update 表名 set 字段 = 值 , 字段2 = 值2 where 字段 = 值;推荐使用带条件的.条件有很多 = > < >= 等等
*/
-- 更新学生的id为2的成绩为100
update stu set score = 100 where sid = 2;
-- 同时更新多个字段
update stu set score = 100, birthday = '1970-01-01' where sid = 3;-- 同时更新多条数据
update stu set score = 100 where sid >= 5;
-- 不加条件,更新全部数据
-- 不推荐使用,将来工作中数据表中的数据100w以上
update stu set score = 0;-- 字段是可以做运算
-- 更新贝贝的年龄+2岁
update stu set age = age + 2 where sname = '贝贝';
update stu set age = age + 100;

8.3 删除

语法

delete from 表名;  -- 删除全表数据
delete from 表名 where 字段 =; -- 只删除符合条件的数据
-- 删除id为8的学生数据
delete from stu where sid = 8;delete from stu where sid >= 5;
-- 删除全部[慎用]
delete from stu;
/*一般实际开发中,都是逻辑删除,其实是没有进行物理删除
执行都是更新.在设计表时,会设计一个状态字段,例如statusstatus = 1 活跃status = 2 不活跃status = 3 僵尸号status = 1 用户 2 vip用户 3 注销用户
*/
/*
删除数据固然容易,但是实际生产环境中是不会真的删数据的
设计表时,会单独多设计一个字段叫做状态字段(status)
例如 status=1 正常数据 status=2 已删除数据
即用户点击的删除数据,其实真正执行的是更新,将字段更新成2
将来查询数据时,只查询状态=1这就是逻辑删除
*/

8.4 delete和truncate的区别[面试问]

-- 删除全部[慎用]
delete from stu;
-- 删除全表
truncate table stu;
deletetruncate
语句类型DMLDDL
原理逐条删除数据删除表结构和数据,重建表
空间删除数据在内存中有删除后碎片很干净,没有空间碎片
效率
恢复可以恢复数据不能恢复
自增不影响自增顺序影响,从1开始
create  alter  drop  show
insert  update  delete  select
------
insert into 表名
update 表名 set
delete from 表名

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

reticulate | R-python调用 | 安装及配置 | conda文件配置

reticulate | R-python安装及配置 | conda文件配置 1. 基础知识2. 安装reticulate from CRAN3. 包含了用于Python和R之间协同操作的全套工具&#xff0c;在R和Rstudio中均可使用4. 配置python环境4.1 4种环境配置方式4.2 miniconda 环境install_miniconda()报错一install_minic…

如何调整图片尺寸:简单实用的教程分享

报名事业编考试的时候&#xff0c;会发现上传照片时会提示图片大小尺寸应该为多少&#xff0c;如果不符合规定就无法提交报名&#xff0c;那么怎么才能修改图片大小呢&#xff1f;最简单的方法就是利用调整照片大小工具来对图片尺寸修改&#xff0c;本文分享一个在线图片处理工…

阿里云OSS和腾讯云COS对象存储介绍和简单使用

对象存储指的是一种云存储服务&#xff0c;其主要是将数据以对象的形式存储在云端&#xff0c;并且提供了完全的API调用&#xff0c;这些API包括上传&#xff0c;下载&#xff0c;删除&#xff0c;复制&#xff0c;预览&#xff0c;权限设置等等。OSS对象存储和COS对象存储都是…

代码随想录-14|二叉树理论基础

Before Writing 博主转Java了 参考代码随想录二叉树&#xff0c;希望有所坚持有所收获吧。 对于二叉树我们应该有几个概念&#xff1a; 如果有数值和无数值二叉树应该怎么分类对于二叉树遍历有几种方式对于二叉树的存储有几种方式对于二叉树为什么要用递归(左右子树都应满足这…

STM32F103C8T6第4天:串口实验(非中断和中断)、hc01蓝牙、esp8266WIFI、4g

1. 串口基本介绍&#xff08;332.36&#xff09; 常用函数介绍 串口发送/接收函数&#xff1a; HAL_UART_Transmit(); 串口发送数据&#xff0c;使用超时管理机制HAL_UART_Receive(); 串口接收数据&#xff0c;使用超时管理机制HAL_UART_Transmit_IT(); 串口中断模式发送HAL…

【ONE·C++ || 网络基础(三)】

总言 主要内容&#xff1a;HTTP和HTTPS工作方式简述。 文章目录 总言6、HTTP协议&#xff08;应用层二&#xff09;6.1、入门认识6.1.1、认识URL6.1.2、urlencode和urldecode 6.2、快速构建6.2.1、快速构建http请求和响应的报文格式6.2.2、http demo6.2.2.1、sock.hpp &&a…

Springboot项目中打印SQL语句日志

在项目中我想查看自己的SQL语句是什么&#xff0c;就是如下图的内容&#xff1a; 方法一&#xff1a;&#xff08;我常用的&#xff09; 可以在项目中的.yml配置文件中添加如下内容&#xff1a; logging:level:com.uyun.bankbranchalert.mapper: debug其中com.uyun.bankbran…

Mysql数据库 14.SQL语言 视图

一、视图的概念 视图&#xff1a;就是由数据库中一张或多张表根据特定的条件查询出的数据狗造成的虚拟表 二、视图的作用 安全性&#xff0c;简单性 三、视图的语法 语法 create view 视图表 as select_statement; 代码实现 #创建视图 将查询结果创建称为视图&#x…

vue项目使用electron打包exe桌面程序

首先在vue项目中cmd进入终端&#xff0c;然后第一次下载electron依赖需要切换镜像&#xff0c;否则下载得很慢很慢&#xff0c;在终端中输入以下两个命令 将 Electron Builder Binaries 的镜像源设置为淘宝的 npm 镜像源。这同样用于提升 Electron Builder 相关包的下载速度。 …

msvcr110.dll文件修复方法分享,如何解决缺失的msvcr110.dll

我们可能会遇到一些软件或游戏在启动时提示msvcr110.dll文件丢失的情况&#xff0c;这种问题在运行Windows操作系统的计算机中并不罕见。了解如何修复这个问题将会对我们确保应用程序的正常运行有重要的帮助。 一.msvcr110.dll是什么 msvcr110.dll是微软Visual C 2012 Redistr…

高浓度白酒废水处理需要哪些设备

高浓度白酒废水处理需要的设备包括预处理设备、生物反应器、二级处理设备、消毒装置等。 预处理设备&#xff1a;包括格栅、筛网等&#xff0c;用于去除污水中的大颗粒物和杂质。生物反应器&#xff1a;用于进行生物反应&#xff0c;去除污水中的有机物和氨氮等污染物。二级处…

【银行测试】支付功能、支付平台、支持渠道如何测试?

有朋友提问&#xff1a;作为一个支付平台&#xff0c;接入了快钱、易宝或直连银行等多家的渠道&#xff0c;内在的产品流程是自己的。业内有什么比较好的测试办法&#xff0c;来测试各渠道及其支持的银行通道呢&#xff1f; 作为产品&#xff0c;我自己办了十几张银行卡方便测…