MySQL

发布时间 2023-09-20 20:08:12作者: wolaile1

MySQL

1.初识MySQL

javaEE:企业级Java开发, Web

前端(页面:展示,数据!)

后台(连接点: 连接数据库JDBC, 链接前端(控制,控制视图跳转,和给前端传递数据))

数据库(存数据,Txt,Excel、word)

只会写代码,学好数据库,基本混饭吃

操作系统,数据结构与算法!当一个不错的程序猿!

离散数学,数字电路,体系结构,编译原理+实战经验,高级程序员——优秀的程序员

1.1为什么学习数据库

  1. 岗位需求
  2. 现在的世界,大数据时代,得数据库者得天下
  3. 被迫需求:存数据
  4. 数据库是所有软件体系中最核心的存在 DBA

1.2什么是数据库

数据库(DB, DataBase)

概念:数据仓库,软件,安装在操作系统(window,linux,mac....)之上!SQL,可以存储大量的数据

作用:存储数据,管理数据

1.3数据库分类

关系型数据库:(SQL)

  • Mysql、Oracle、Sql Server, DB2, SQLite
  • 通过表和表之间,行和列之间的关系进行数据的存储,学员信息表,考勤表...

非关系型数据库:{key:value} (NoSQL)(not only SQL)

  • Redis\ MongDB
  • 非关系型数据库,对象存储,通过对象得自身属性来决定。

DBMS(数据库管理)

  • 数据库管理软件,科学有效的管理我们得数据,维护和过去数据;
  • MySQL数据库管理系统

1.4MySQL简介

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

前世:瑞典MySQL AB公

今生:属于Oracle旗下产品

MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

体积小,速度快、总体拥有成本低,招人成本比较低,所有人必须会~

中小型网站、或者大型网站、集群

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

安装建议:

  1. 尽量不要使用exe,注册表
  2. 尽可能使用压缩包安装

1.4连接数据库

命令行连接!

image-20230711093208914

DDL:数据库定义语言

DML:数据库操作语言

DQL:数据库查询语言

DCL:数据库控制语言

2.操作数据库

操作数据库>操作数据库中的表>操作数据库表中得数据

2.1操作数据库

image-20230711094745265

学习思路:

  • 对照MySQL可视化软件历史记录查看mysql
  • 固定的语法和关键字必须记住

2.2数据库的列类型

  • 数值

    • tinyint 是分销的数据 1个字节

    • smallint 较小的数据 2个字节

    • mediumint 中等大小的数据 3个字节

    • int 标准的整数 4个字节

    • bigint 较大的数据 8个字节

    • float 浮点数 4个字节

    • double 浮点数 8个字节(精度问题!)

    • decimal 字符串形式的浮点数 金融计算的时候,一般使用decimal

  • 字符串

    • char 字符串固定大小的 0~255

    • varchar 可变字符串 0~65535 常用的 String

    • tinytext 微型文本 2^8-1

    • text 文本串 2^16-1

  • 时间日期

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

    • 没有值,未知
    • ==注意,不要使用NULL进行运算,结果为NULL

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

  • Unsigned
    • 无符号的整数
    • 声明了该类不能声明为负数
  • zerofill
    • 0填充的
    • 不足的位数,使用0来填充
  • 自增
    • 通常理解为自增,自动在上一条记录的基础上+1(默认)
    • 通常用来设计唯一的逐渐~index,必须是整数类型
    • 可以自定义主键自增的起始值和步长
  • 非空 Null not null
    • 假设设置为not null,如果不给它赋值,就会报错!
    • NUll,如果不填写值,默认就是null
  • 默认
    • 设置默认的值!
    • sex 默认值为男

2.4创建数据库

  • 创建表
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 '邮箱',
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

格式

CREATE TABLE [IF NOT EXISTS] `表名`(
	`字段名` 列表型 [属性] [索引] [注释],
	`字段名` 列表型 [属性] [索引] [注释],
	......
	`字段名` 列表型 [属性] [索引] [注释],
)[表类型][字符集设置][注释]

image-20230711110553704

2.5数据表的类型

-- 关于数据库引擎
/*
INNODB 默认使用
MYISAM 早些年使用的
*/
MYISAM INNODB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间的大小 较小 较大,约为2倍

常规使用操作:

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

image-20230711112033126

2.6修改删除表

修改

image-20230711113156198

image-20230711113333301

注意点:

  • ``所有的字段名,使用这个包裹!
  • 注释 -- /**/
  • sql 关键字大小写不敏感,建议写小写
  • 所有的符号用中文

3.MySQL数据管理

3.1外键(了解即可)

image-20230711114637336

删除有外键关系的表的时候,必须要先删除引用别人的表(从表),再删除被引用的表(主表)

image-20230711115217657

以上的操作都是物理外键,数据库级别的外键,不建议使用(避免数据库过多造成困扰)

最佳实践:

  • 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
  • 我们想使用多张表的数据,想使用外键(程序去实现)

3.2DML语言(全部记住)

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

DML语言:数据操作语言

  • insert
  • update
  • delete

3.3添加

image-20230711120948180

image-20230711121244322

3.4修改

image-20230711143130174

条件:where子句运算符 id等于某个值,大于某个值,在某个区间内修改,操作符会返回布尔值

操作符 含义 范围 结果
= 等于 5=6 false
<>或!= 不等于 5<>6 true
>
<
<=
>=
BETWEEN...and 在某个范围内 [2,5]
AND 我和你&& 5>1 and1>2 false
OR 我或你||

image-20230711144829418

3.5删除

image-20230711145250087

image-20230711150015489

了解即可:DELETE删除的问题,重启数据库,现象

  • innodb 自增列从1开始(存在内存中的,断电即失)
  • MyISAM 继续从上一个子增量开始(存在文件中的,不会丢失)

4.DQL查询数据(最重点)

4.1DQL

(Data Query LANGUAGE:数据查询语言)

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

4.2指定查询字段SELECT

image-20230711151203847

语法:SELECT 字段....FROM 表

有时候,列名字不是那么见名知意,我们起别名 AS 字段名 as 别名 表名 as 别名

image-20230711162542881

数据库中的表达式:文本值,列,Null,函数,计算表达式,系统变量....

select 表达式 from 表

4.3where条件语句

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

image-20230711163258012

image-20230711163329651

image-20230711164345994

image-20230711164418935

4.4联表查询

join