MySQL

文章目录

  • 1.Mysql
    • 1.1 为什么学习数据库
    • 1.2 什么是数据库
    • 1.3 数据库分类
    • 1.4 Mysql简介
    • 1.5 安装Mysql
    • 1.6 安装Sqlyog
    • 1.7 连接数据库
  • 2.操作数据库
    • 2.1 操作数据库
    • 2.2 数据库的列类型
    • 2.3 数据库字段属性(重点)
    • 2.4 创建数据库表(重点)
    • 2.5 数据表的类型
    • 2.6 修改删除表
  • 3.Mysql数据管理
    • 3.1 外键(了解)
    • 3.2 DML语言(记住)
    • 3.3 添加
    • 3.4 修改
    • 3.5 删除
  • 4. DQL查询数据(重点)
    • 4.1 DQL
    • 4.2 指定查询字段
    • 4.3 where 条件子句
    • 4.4 联表查询
    • 4.5 排序和分页
    • 4.6 子查询
    • 4.7 分组和过滤
  • 5.Mysql函数
    • 5.1 常用函数
    • 5.2 聚合函数(重要)
    • 5.3 数据库级别的MD5加密
  • 6.事务
  • 7.索引
    • 7.1 索引的分类
    • 7.2 测试索引
    • 7.3 索引原则
  • 8.权限管理和数据库备份
    • 8.1 用户管理
    • 8.2 Mysql备份
  • 9.规范数据库设计
    • 9.1 为什么设计?
    • 9.2 三大范式
  • 10.JDBC(重点)
    • 10.1 数据库驱动
    • 10.2 JDBC
    • 10.3 JDBC程序

1.Mysql

1.1 为什么学习数据库

  1. 岗位需求
  2. 大数据时代
  3. 被迫需求:存数据
  4. 数据库是所有软件体系中最核心的存在

1.2 什么是数据库

数据库(DB,DataBase)
概念:数据仓库,软件,安装在操作系统上,SQL可以存储大量的数据
作用:存储数据,管理数据

1.3 数据库分类

关系型数据库L(SQL)

  • Mysql,Oracle,Sql Server,DB2,SQLlite
  • 通过表和表之间,行和列之间的关系进行数据的存储,学员信息表等
    非关系型数据库(NoSQL)
  • Redis,MongDB
  • 非关系型数据库,对象存储,通过对象的自身属性来决定

DBMS(数据库管理系统)

  • 数据库的管理软件,科学有效的管理我们的数据,维护和管理数据
  • Mysql,数据库管理系统

1.4 Mysql简介

Mysql是一个关系型数据库管理系统

前属于MysqlAB公司,现属于Oracle旗下产品

Mysql是最好的RDBMS应用软件之一,开源的数据库软件

体积小、速度快、成本低

1.5 安装Mysql

1.6 安装Sqlyog

1.7 连接数据库

2.操作数据库

操作数据库----操作数据库中的表-----操作数据库中表的数据

mysql关键字不区分大小写

2.1 操作数据库

1.创建数据库

Create Database [if not exists] student

2.删除数据库

drop database [if exists] student

3.使用数据库

use student

4.查看数据库

show databases

2.2 数据库的列类型

数值:

  • tinyint 1个字节
  • smallint 2个字节
  • mediumint 3个字节
  • int 4个字节
  • bigint 8个字节
  • float 4个字节
  • double 8个字节
  • decimal

字符串:

  • char 字符串0-255
  • varchar 可变字符串 0-65535
  • tinytext
  • text

时间日期:

  • date YYYY-MM-DD,日期格式
  • time HH:mm:ss 时间格式
  • datetime YYYY-MM-DD HH:mm:ss 最常用
  • timestamp 时间戳,1970.1.1到现在的毫秒数,也较为常用
  • year 年份表示

null:

  • 没有值
  • 不要使用

2.3 数据库字段属性(重点)

Unsigned:

  • 无符号的整数
  • 声明了该列不能为负数

zerofill:

  • 0填充
  • 不足的位数,使用0来填充

自增:

  • 通常理解为自增,自动在上一条记录的基础上+1
  • 通常用来设计唯一的主键 index ,必须是整数类型
  • 可以自定义设计主键自增的起始值和步长

非空:NULL not null

  • 假设设置为not null,如果不给他赋值,就会报错
  • 如果不填写,默认就是null

默认:

  • 设置默认的值
  • sex,默认为男 如果不指定,就会有默认

2.4 创建数据库表(重点)

-- 目标:创建一个school数据库
-- 创建学生表(列,字段) 使用SQL创建
-- 学号int 登陆密码varchar(20) 姓名、性别varchar(2),出生日期(datatime),家庭住址,email-- 注意点,使用英文(),表的名称和字段尽量使用·· 括起来
-- AUTO_INCREMENT 自增
-- 字符串使用,单引号括起来
-- 所有的语句后面加,
-- PRIMARY KEY主键,一般一个表只有一个唯一的主键!
CREATE TABLE IF NOT EXISTS `student`(`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭地址',`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

格式:

Create table [if not exists] `表名``字段名` 列类型 [属性] [索引] [注释],[表类型][字符集设置][注释]

常用命令:

show create database school --查看创建数据库的语句
show create table student -- 查看student数据表的定义语句
desc student --显示表的结构

2.5 数据表的类型

MYISAMINNODB
事务支持不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文索引支持不支持
表空间的大小较小较大,约为2倍

常规操作:

  • MYISAM 节约空间,速度较块
  • INNODB 安全性高,事物的处理,多表多用户操作

2.6 修改删除表

修改:

-- 修改表名 alter table 旧表名 rename as 新表名
alter table teacher rename as teacher1
-- 增加表的字段 alter table 表名 add 字段名 列属性
alter table teacher1 add age int(11)
-- 修改表的字段(重命名,修改约束)
-- alter table 表名 modify 字段名 列属性[]
alter table teacher1 modify age varchar (11) --修改约束
-- alter table 表名 change 旧名字 新名字 列属性[]
alter table teacher1 change age age1 int(1) --字段约束名
-- 删除表的字段
-- alter table 表名 drop 字段名
alter table teacher1 drop age1

删除:

-- 删除表(如果表存在再删除)
drop table if exists teacher1

注意点:

  • ``字段名用这个
  • 注释–
  • sql对关键字大小写不敏感
  • 所有符号全部用英文

3.Mysql数据管理

3.1 外键(了解)

3.2 DML语言(记住)

数据库意义:数据存储,数据管理

DML语言:数据操作语言

  • Insert
  • update
  • delete

3.3 添加

insert:

insert into 表名([字段1,字段2,字段3]) values('值1'),('值2'),('值3')

注意:

  • 字段和字段之间使用英文逗号隔开
  • 字段可以省略,但是后面的值要一一对应,不能少
  • 可以同时插入多个数据,values后面的值需要使用,隔开即可

3.4 修改

update:

update 表名 set colnum = value where [条件]

条件:where 子句,运算符 id等于某个值或在某个区间
注意:

  • colnum是数据库的列
  • 条件,筛选的条件,如果没有指定,则会修改所有的列
  • value,是一个具体的值,也可以是一个变量
  • 多个设置的属性之间,使用英文逗号隔开

3.5 删除

delete:

delete from 表名 [where 条件]

4. DQL查询数据(重点)

4.1 DQL

(Data Query Language:数据库查询语言)

  • 所有的查询操作都用 select
  • 简单复杂查询都用
  • 数据库中最核心的语言,最重要的语句
  • 使用频率最高

4.2 指定查询字段

-- 查询全部的学生
SELECT * FROM student
-- 查询指定字段
SELECT `studentno`,`studentname` FROM student 
-- 别名 as
SELECT `studentno` AS 学号,`studentname` AS 姓名 FROM student 
-- 函数 Concat(a,b)
SELECT CONCAT('姓名:',studentname) AS 新名字 FROM student

语法:

Select 字段 from

去重:distinct
去除select查询结果重复的数据

-- 查询全部考试成绩
select * from result 
-- 查询那些同学参加
select `studentno` from result
-- 去重
select distinct `studentno` from result

4.3 where 条件子句

作用:检索数据中符合条件的值

搜索的条件由一个或多个表达式组成,结果 布尔值

逻辑运算符
在这里插入图片描述
模糊查询:比较运算符
在这里插入图片描述

4.4 联表查询

在这里插入图片描述

4.5 排序和分页

排序:asc(升),desc(降)
分页: limit(查询起始下标,pageSize)

4.6 子查询

嵌套使用

4.7 分组和过滤

主要就是Having

5.Mysql函数

5.1 常用函数

5.2 聚合函数(重要)

在这里插入图片描述

5.3 数据库级别的MD5加密

MD5:主要增强算法复杂性和不可逆性
MD5不可逆,具体的值和MD5是一样的
MD5破解网站的原理,背后有一个字典,MD5加密后的值

6.事务

事务原则:ACID 原子性,一致性,隔离性,持久性

原子性(Atomicity)
要么成功要么失败

一致性(Consistency)
事务前后的数据完整性要保证一致

**持久性(Durability)**事务提交
事务一旦提交则不可逆,被持久化到数据库中

隔离性(Isolation)
事物的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务之间相互隔离

隔离导致:
脏读:指一个事务读取了另外一个事务未提交的数据
不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同
虚读(幻读):旨在一个事务中读取到了别的事务插入的数据,导致前后读取结果不一致

-- mysql是默认开启事务自动提交的
SET autocommit = 0 -- 关闭
SET autocommit = 1 -- 开启(默认)
-- 手动处理事务
SET autocommit = 0 -- 关闭自动提交
-- 事务开启
START TRANSACTION -- 标记一个事务的开始,从这个之后的sql都在同一个事务中INSERT xx
INSERT xx
-- 提交:持久化(成功)
COMMIT 
-- 回滚:回到原来的样子(失败)
ROLLBACK-- 事务结束
SET autocommit = 1 -- 开启自动提交

7.索引

Mysql官方定义:索引是帮助Mysql高校获取数据的数据结构

7.1 索引的分类

在一个表中,逐渐索引只能有一个,唯一索引可以有多个

  • 主键索引(Primary key)
    - 唯一的标识,逐渐不可重复,只能由一个列作为主键
  • 唯一索引(Unique key)
    - 避免重复的列出现,唯一索引可以重复,多个列都可以标识 唯一索引
  • 常规索引(key/index)
    - 默认的,index,key关键字来设置
  • 全文索引(fulltext)
    - 在特定的数据库引擎下才有
    - 快速定位数据

7.2 测试索引

索引在小数据量的情况下作用不大,但在数据量的时候很有用

7.3 索引原则

  • 索引不是越多越好
  • 不要对进程变动数据加索引
  • 小数据量的表不需要加索引
  • 索引一般加在常用来查询的字段上

索引的数据结构

Hash类型的索引
Btree:InnoDB的默认数据结构

8.权限管理和数据库备份

8.1 用户管理

SQL yog可视化管理

SQL命令操作

用户表:mysql.user
本质:读这张表进行增删改查

8.2 Mysql备份

为什么备份?

  • 保证重要数据不丢失
  • 数据迁移
    Mysql数据库备份的方式
  • 直接拷贝物理文件
  • 在可视化工具中手动导出
  • 使用命令行mysqldump命令导出
mysqldump -h 主机 -u 用户名 -p 密码 数据库 表名 物理位置

9.规范数据库设计

9.1 为什么设计?

糟糕的数据库设计:

  • 数据冗余,浪费空间
  • 数据库插入和删除都会麻烦、异常
  • 程序的性能差
    良好的数据库设计:
  • 节省内存空间
  • 保证数据库的完整性
  • 方便开发系统

软件开发中关于数据库的设计

  • 分析需求:分析业务和需要处理的数据库的需求
  • 概要设计:设计关系图E-R图

9.2 三大范式

为什么要数据规范化?

  • 信息重复
  • 更新异常
  • 插入异常
    - 无法正常显示信息
  • 删除异常
    - 丢失有效的信息

三大范式

第一范式(1NF)
原子性:保证每一列不可再分
第二范式(2NF)
前提:满足第一范式,每张表只描述一件事情
第三范式(3NF)
前提:满足第一范式和第二范式
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能直接相关

关联查询的表不能超过三张表

10.JDBC(重点)

10.1 数据库驱动

驱动:声卡、显卡、数据库

10.2 JDBC

SUN公司为了简化开发人员对数据库的操作,提供了一个Java操作数据库的规范,称为JDBC

java.sql
javax.sql
mysql-connector-java.jar包

10.3 JDBC程序

  1. 加载驱动
  2. 用户信息和url
  3. 连接成功,数据库对象 Connection代表数据库
  4. 执行SQL对象 Statement 执行sql的对象
  5. 执行SQL的对象去执行SQL 查看返回结果
  6. 释放连接

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

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

相关文章

Java 使用 EMQX 实现物联网 MQTT 通信

一、介绍 1、MQTT MQTT(Message Queuing Telemetry Transport, 消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于&#xff…

Leetcode算法入门与数组丨3. 数组基础

文章目录 前言1 数组简介2 数组的基本操作2.1 访问元素2.2 查找元素2.3 插入元素2.4 改变元素2.5 删除元素 3 总结task03task04 前言 Datawhale组队学习丨9月Leetcode算法入门与数组丨打卡笔记 这篇博客是一个 入门型 的文章,主要是自己学习的一个记录。 内容会参…

13-RocketMQ主从同步(HA实现)源码原理

目录 HAClient端 Master端 AcceptSocketService实现原理 HAConnection实现原理 ReadSocketService WriteSocketService GroupTransferService实现原理 五大线程的协调关系 HAClient端 首先要去connect一下master,从而建立一个SocketChannel连接通道&#x…

不知道有用没用的Api

encodeURIComponent(https://www.baidu.com/?name啊啊啊) decodeURIComponent(https%3A%2F%2Fwww.baidu.com%2F%3Fname%3D%E5%95%8A%E5%95%8A%E5%95%8A) encodeURI(https://www.baidu.com/?name啊啊啊) decodeURI(https://www.baidu.com/?name%E5%95%8A%E5%95%8A%E5%95%8A) …

面试核心技巧--spring篇

答题技巧: 总:当前问题的是那些具体点 分:1、2、3、4突出重点, 避重就轻:没有重点 一个问题能占用面试官多少时间?问的越多可能露馅越多 当面试官问到一个你熟悉的点的时候,一定要尽量拖时间 什么是底层实现&#…

真空腔体的设计要点

真空腔体是保持内部为真空状态的容器,真空腔体设计制作要考虑容积、材质和形状。 1、根据应用需求选择腔体形状。几种代表性的真空腔体包括垂直真空腔体、水平真空腔体、立方真空腔体和球形真空腔体。 2、根据获得真空度选择腔体材质。钛用于极高真空;…

旋转偏心裁切刀切向跟踪及半径补偿

1 裁刀半径补偿问题的提出 偏心裁刀一般皮革和纸箱行业用的比较多,它适用于裁切比较厚的材料。对于如图1所示的偏心裁刀,它的刀尖和旋转轴(也就是刀心)存在一个距离,设为半径r。由于改刀刀刃有方向,所以用该刀去切割直线时&#…

Linux学习笔记-Ubuntu系统下配置用户ssh只能访问git仓库

目录 一、基本信息1.1 系统信息1.2 git版本[^1]1.2.1 服务器端git版本1.2.2 客户端TortoiseGit版本1.2.3 客户端Git for windows版本 二、创建git用户和群组[^2]2.1 使用groupadd创建群组2.2 创建git用户2.2.1 使用useradd创建git用户2.2.2 配置新建的git用户ssh免密访问 2.3 创…

Packet Tracer安装、汉化

Packet Tracer是一款由思科系统开发的网络模拟器,用于学习和实验网络配置、协议和拓扑结构。它提供了一个虚拟的网络环境,让用户能够在不需要实际硬件设备的情况下进行网络实验和模拟。 安装 Packet Tracer的安装注册:在Packet Tracer软件上…

基于SSM的快餐店点餐服务系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

2023 CCF国际AIOps挑战赛,报名倒计时!|截止时间9月15日

智能运维领域最具影响力的专业赛事——2023 CCF国际AIOps挑战赛,自报名启动以来已收到230余支队伍报名,约600余位选手参与本次挑战赛。本次大赛的报名截止时间为9月15日,目前报名已经进入倒计时,请选手们抓紧最后时间报名参赛&…

Science adv | 转录因子SPIC连接胚胎干细胞中的细胞代谢与表观调控

代谢是生化反应网络的结果,这些反应吸收营养物质并对其进行处理,以满足细胞的需求,包括能量产生和生物合成。反应的中间体被用作各种表观基因组修饰酶的底物和辅助因子,因此代谢与表观遗传密切相关。代谢结合表观遗传涉及疾病&…