初级MySQL的快速学习(速成)

这篇博客详细介绍了MySQL的学习路径,从数据库的基本概念、分类到MySQL的安装、操作和管理。涵盖了MySQL的安装、SQLyog的使用、SQL语法、数据类型、字段属性、DML操作、DQL查询、事务处理、索引和权限管理等内容。此外,还提到了JDBC连接数据库的基础知识,强调了数据库设计规范和事务处理的重要性。
摘要由CSDN通过智能技术生成

文章目录

1、初识 MySQL

  • JavaEE:企业级 Java 开发 Web
  • 前端——数据库——后端
  • 前端:页面的展示,以及数据传输
  • 数据库:存数据,例如:存入 txt、Excel、word等等
  • 后端:连接点,连接数据库以及前端,控制前端,实现视图跳转等,给前端传输数据

1.1 为什么学数据库

  1. 如今岗位需求需要
  2. 大数据时代
  3. 存取用户数据
  4. 数据库是所有软件体系中最为核心的存在

1.2 什么是数据库

  • 数据库(DB,DataBase)
  • 数据仓库,安装在操作系统上,例如:window,linux,等等
  • 可以存储大量数据,500万以上就要优化
  • 存储数据,管理数据

1.3 数据库的分类

1.3.1 关系型数据库(SQL)

  • 通过表和表之间,行和列之间的关系进行数据的存储
  • 例如:
    • MySQL
    • Oracle
    • Sql Server
    • DB2
    • SQL lite
    • 等等

1.3.2 非关系型数据库(Not Only SQL,NoSQL)

  • 以对象存储,通过对象自身的属性来决定
  • 例如:
    • Redis
    • MongDB

1.3.3 数据库管理系统(DBMS)(重要)

  • 数据库的管理软件,科学有效的管理我们的数据,维护和获取数据
  • 例如 MySQL,就是数据库管理系统

1.3.4 数据库语言

  • DDL 数据库 (定义) 语言
  • DML 数据库 (操作) 语言
  • DQL 数据库 (查询) 语言
  • DCL 数据库 (控制) 语言

1.4 MySQL 简介

https://www.mysql.com/

  • MySQL 是最好的 RDBMS(关系数据库管理系统) 应用软件之一。

  • 优点:

    • 开源
    • 体积小、速度快
    • 使用成本低
    • 招人成本低
  • 适用于中小型网站,大型网站(集群)

1.5 MySQL 安转

  1. 进入官网下载MySQL安装包(这里是压缩包的安转方式):https://downloads.mysql.com/archives/community/

  2. 压缩到某个文件夹下

  3. 配置 PATH,加一个你的 mysql安转文件下的 bin文件夹的地址

  4. 在 mysql 文件夹下新建一个 my.ini 文件,写入:

    [mysqld]
    basedir=D:\JAVA\MySQL\mysql-5.7.34\
    datadir=D:\JAVA\MySQL\mysql-5.7.34\data\
    port=3306
    skip-grant-tables
    
  5. 管理员模式下启动 cmd,将目录切换至 mysql 下的 bin 目录

  6. 输入mysqld -install,安转 mysql

  7. 输入mysqld --initialize-insecure --user=mysql,初始化数据文件

  8. 输入net start mysql,启动 mysql 服务

  9. 输入mysql -u root -p,进入 mysql(注意:不要设置密码,-p后面不要加空格)

  10. 进入 mysql 后,输入以下代码,修改密码

    update mysql.user set authentication_string=password('root') where user='root' and Host = 'localhost';
    
  11. 再输入flush privileges;,刷新权限

  12. 在 my.ini 文件,删除 skip-grant-tables 这段语句

  13. exit 退出 mysql

  14. 重启 mysql 服务

1.6 SQLyog 安装

  1. 下载 SQLyog 压缩包
  2. 安装
  • SQL 简单使用
    1. 创建新连接
    2. 设置连接名(随便写),主机地址(localhost),用户密码(是MySQL的),端口(默认的都是3306)
    3. 连接
    4. 新建数据库
    5. 新建表
    6. 其中的操作都在历史记录中可以查询(SQL代码)

1.7 SQL 常用代码

1.7.1 进入mysql

  • 启动 mysql 服务

    net start mysql
    
  • 从 cmd 进入 mysql

    mysql -u用户名 -p密码
    
  • 退出 mysql

    exit
    

1.7.2 mysql 基本语句

  • 更改 mysql 用户密码

    update mysql.user set authentication_string=password('新密码') where user='root' and Host='localhost'
    
  • 查看所有数据库

    show databases;
    
  • 创建数据库

    create database 数据库名;
    
  • 切换数据库

    use 数据库名;
    
  • 查看数据库中的所有

    show tables;
    
  • 查看表中的所有信息

    desribe 表名;
    

1.7.3 注释

  • 单行注释

    -- 这里是单行注释
    
  • 多行注释

    /*
    这里是多行注释
    这里是多行注释
    */
    

2、操作数据库

  • 创建数据库

    • 反引号(``),使用的表名或字段是一个特殊字符,就需要使用反引号。
    CREATE DATABASE `person`;
    
    -- 增加条件判断,判断 person 如果不存在:IF NOT EXISTS
    CREATE DATABASE IF NOT EXISTS `person`;
    
  • 使用数据库

    USE `person`;
    
  • 删除数据库

    DROP DATABASE `person`;
    
    -- 增加条件判断,如果 person 存在:IF EXISTS
    DROP DATABASE IF EXISTS `person`;
    
  • 查看所有数据库

    SHOW DATABASES;
    

2.1 数据库的数据类型

  • 数值

    数据类型 字节数
    tinyint 十分小的数据 1个字节
    smalint 较小的数据 2个字节
    mediumint 中等大小的数据 3个字节
    int 标准整数 4个字节 *常用
    bigint 较大的数据 8个字节
    float 单精度浮点数 4个字节
    double 双精度浮点数 8个字节 拥有精度问题
    decimal 字符串形式的浮点数 用于金融计算
  • 字符串**(要定义长度,不然可能会报错)**

    数据类型 范围 备注
    char 字符串固定大小的 0~255
    varchar 可变字符串 0~65535 *常用,类似于String
    tinytext 微型文本 2^8 - 1
    text 文本串 2^16 - 1 保存大文本
  • 时间日期(java.util.Date)

    类型 格式 备注
    date YYYY-MM-DD 日期
    time HH: mm: ss 时间
    datetime YYYY-MM-DD HH: mm: ss *最常用的时间格式
    timestatmp 1970.1.1到现在的毫秒数 时间戳,较为常用
    year 年份
  • null

    • 不要使用 NULL 进行运算,结果都为 NULL

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

2.3.1 长度

  • 有些属性是有范围的,
  • 例如:字符串,需要定义长度,不然会报错
  • 而 int 类型的长度是与零填充有关的,例如你的长度定义为3,1、10、100的零填充就为001、010、100

2.3.2 默认值(DEFAULT)

  • 设置属性默认值,数据只要被创建,这个属性默认就是设定的这个值。
  • 例如:性别设置默认值为男,只要新建的属性,默认的性别都是男

2.3.3 非空(NOT NULL)

  • NULL、NOT NULL
  • 设置属性不能为空,如果为空就会报错,默认为 NULL

2.3.4 Unsigned

  • 无符号整数
  • 声明了这个,属性就不能定义为负数

2.3.5 自增(AUTO_INCREMENT)

  • 默认自增为+1
  • 只要定义了属性,设置了自增的属性都会自增

2.3.6 Zerofill

  • 零填充
  • 例如,数据类型为 3,长度为 3 的 id 属性,当 id 为 1 时,将零填充,id 则为 001(3——>003)

2.3.7 拓展

  • 阿里程序员规范手册中表明,每一个表都必须存在一下五个字段:

    • id:主键

    • `version`:乐观锁
      
    • is_delete:伪删除

    • gmt_create:创建时间

    • gmt_update:修改时间

2.4 创建数据库表

  • 格式

  • 以下可以选择写不写:

    • IF NOT EXISTS:是否存在
    • 属性
    • 索引
    • 注释(建议都写注释)
    • 表类型
    • 字符集设置
    CREATE TABLE IF NOT EXISTS `表名`(
    	'字段名' 数据类型 属性 索引 注释,
        '字段名' 数据类型 属性 索引 注释,
        ...
        '字段名' 数据类型 属性 索引 注释,
        PRIMARY KEY('字段名')
    )ENGINE=表类型 DEFAULT CAHRSET=字符集设置 注释
    
  • 练习:

    • 创建一个 school 数据库
    • 创建一个学生表
    • 学号 int,姓名 varchar(20),登录密码 varchar(20),性别 varchar(2),出生日期 datatime,家庭住址,email
    CREATE DATABASE `school`;
    USE `school`;
    CREATE TABLE IF NOT EXISTS `student` (
        `id` INT(3) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学号',
        `name` VARCHAR(20) 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(30) DEFAULT NULL COMMENT '家庭住址',
        `email` VARCHAR(30) DEFAULT NULL COMMENT '邮箱',
        PRIMARY KEY(`id`)
    )ENGINE=INNODB DEFAULT CHARSET=utf8
    

注意:UNSIGNED(无符号整数)必须放在NOT NULL的前面,否则会报错!(亲测)

常用命令

  • 查看数据库的创建语句

    SHOW CREATE DATABASE `数据库名`;
    
  • 查看表的定义语句

    use `数据库名`;
    SHOW CREATE TABLE `表名`;
    
  • 显示表的结构

    DESC '表名';
    

2.5 数据表类型

2.5.1 INNODB 与 MYISAM 的区别

  • INNODB:默认使用
  • MYISAM:早些年使用
MYISAM INNODB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间大小 较小 较大,约左边的两倍
  • MYISAM:节约空间,速度较快
  • INNODB:安全性搞,事务处理得快,多表多用户操作

2.5.2 数据表在物理空间存在的位置

  • 所有的数据库文件都是存放在MySQL根目录下的 data 文件下,一个数据库对应一个文件夹(文件的存储)
  • MySQL 引擎在物理存储上的区别:
    • INNODB:在数据库表中,只有一个 *.frm 文件,以及上一级目录下的 ibdata1 文件
    • MYISAM:
      • *.frm:表结构定义文件
      • *.MYD:数据文件(data)
      • *.MYI:索引文件(index)

2.5.3 设置数据库表的字符集编码

  • 方式一:通过建表的时候设置

    • 不设置的话,是不支持中文的
    CHARSET=utf8
    
  • 方式二:修改在 MySQL 根目录下的 my.ini 配置文件(不推荐)

    • 增添默认的编码
    character-set-server=utf8
    

2.6 修改删除表

2.6.1 修改

  • 重命名表名

    ALTER TABLE `旧表名` RENAME AS `新表名`;
    
  • 在表中增添字段

    • 属性、索引、注释,可写可不写
    ALTER TABLE `表名` ADD `字段名` 类型 属性 索引 注释;
    
  • 修改字段数据类型

    • modify:仅可以修改字段的类型和约束,不可以修改名字
    ALTER TABLE `表名` MODIFY `字段名` 数据类型;
    
  • 重命名表的字段

    • chage:可以修改字段名,也可以修改字段的类型
    ALTER TABLE `表名` CHANGE `旧字段名` `新字段名` 类型;
    
modify 与 change 的区别
  • modify:只能修改表中字段的类型和约束,不可以修改字段的名字
  • change:可以修改表中字段的名字与类型

2.6.2 删除

  • 删除表(最好是增加条件判断,如果表存在再删除)

    DROP TABLE IF EXISTS `表名`
    
  • 删除表中的字段

    ALTER TABLE `表名` DROP `字段`
    

2.6.3 注意

  • 所有的创建和删除操作,都尽量加上判断,以免报错

  • 所有的名字最好使用 反引号 包裹(``)

  • 所有的标点符号都是用英文的

3、MySQL 数据管理

3.1 外键

3.1.1 方式一:创建表的时候,增加约束

  • 年级表
CREATE TABLE `grade` (
    `grade_id` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '年级',
    `name` VARCHAR(20) NOT NULL COMMENT '几年级', 
    PRIMARY KEY(`grade_id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
  • 学生表,定义外键,增加约束
CREATE TABLE `student` (
  `id` INT(3) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名',
  `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '登录密码',
  `sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
  `grade_id` INT(5) UNSIGNED NOT NULL COMMENT '学生年级',
  `birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
  `address` VARCHAR(30) DEFAULT NULL COMMENT '家庭住址',
  `email` VARCHAR(30) DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`),
  KEY `FK_grade` (`grade_id`),
  CONSTRAINT `FK_grade` FOREIGN KEY (`grade_id`) REFERENCES `grade`(`grade_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

3.1.2 方式二:创建表的时候没有定义外键

  • 年级表
CREATE TABLE `grade` (
    `grade_id` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '年级',
    `name` VARCHAR(20) NOT NULL COMMENT '几年级', 
    PRIMARY 
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值