xustudyxu's Blog
首页​
导航🚀​
  • 数据结构
  • 计算机网络
  • Java基础

    • JavaSE
  • JavaWeb

    • HTML
    • CSS
    • JavaScript
    • Vue
    • Servlet
    • MVC
    • filter|listener
  • Spring5
  • SpringMVC
  • SpringBoot2
  • SpringCloud
  • SpringSecurity
  • 搜索引擎

    • ElasticSearch
  • 消息队列

    • RabbitMQ
  • 服务器

    • Nginx🌐
  • 服务框架

    • Dubbo
  • Python

    • Python基础
    • 数据分析
  • 环境搭建

    • Hadoop集群
    • KVM虚拟化技术
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • NoSQL数据库概论
    • Redis
    • MongoDB
    • HBase
  • 框架

    • MyBatis
    • MyBatis-Plus
  • 部署

    • Linux
    • Docker
  • 管理

    • Maven
    • Git
  • 十大排序算法
  • 力扣算法题
  • 初级开发篇
  • 中高进阶篇
  • 友情链接
  • 优秀博客文章
  • 索引

    • 分类
    • 标签
    • 归档
  • 其他

    • 关于
查看源码 (opens new window)

xustudyxu

一起学习编程!
首页​
导航🚀​
  • 数据结构
  • 计算机网络
  • Java基础

    • JavaSE
  • JavaWeb

    • HTML
    • CSS
    • JavaScript
    • Vue
    • Servlet
    • MVC
    • filter|listener
  • Spring5
  • SpringMVC
  • SpringBoot2
  • SpringCloud
  • SpringSecurity
  • 搜索引擎

    • ElasticSearch
  • 消息队列

    • RabbitMQ
  • 服务器

    • Nginx🌐
  • 服务框架

    • Dubbo
  • Python

    • Python基础
    • 数据分析
  • 环境搭建

    • Hadoop集群
    • KVM虚拟化技术
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • NoSQL数据库概论
    • Redis
    • MongoDB
    • HBase
  • 框架

    • MyBatis
    • MyBatis-Plus
  • 部署

    • Linux
    • Docker
  • 管理

    • Maven
    • Git
  • 十大排序算法
  • 力扣算法题
  • 初级开发篇
  • 中高进阶篇
  • 友情链接
  • 优秀博客文章
  • 索引

    • 分类
    • 标签
    • 归档
  • 其他

    • 关于
查看源码 (opens new window)
  • MySQL-基础

    • MySQL-简介
    • MySQL-CRUD
    • MySQL-函数
    • MySQL 多表查询
    • MySQL 约束与自增长
    • MySQL 索引与事务
    • MySQL 表类型和存储引擎
    • MySQL 视图与管理
  • MySQL-进阶

    • MySQL 存储引擎
    • MySQL 索引
    • MySQL SQL优化
    • MySQL 视图/存储过程/触发器
    • MySQL 锁
    • MySQL InnoDB引擎
    • MySQL 管理
  • MySQL-运维

    • MySQL 日志
    • MySQL 主从复制
    • MySQL 分库分表
    • MySQL 读写分离
  • NoSQL 数据库概论

    • 非关系型数据库
    • NoSQL数据库理论基础
    • NoSQL数据库分类
  • Redis

    • Redis 数据库简介
    • Redis 概述安装
    • 常用五大数据类型
    • Redis 配置文件
    • Redis 发布和订阅
    • Redis 新数据类型
    • Redis Java整合
    • Redis 事务与锁
    • Redis 持久化操作
    • Redis 主从复制
    • Redis 集群搭建
    • Redis 缓存问题
    • Redis 分布式锁
    • Redis 6.0新功能
  • MongoDB

    • MongoDB 相关概念
    • MongoDB 安装
    • MongoDB 常用命令
    • MongoDB 索引-Index
    • MongoDB 整合Java案例
    • MongoDB 集群和安全
  • HBase

    • HBase简介
    • HBase系统架构
    • HBase数据定义
    • HBase数据操作
    • HBase基本原理
  • MyBatis

    • MyBatis 入门案例
    • XML 配置
    • XML 映射文件
    • 动态SQL
    • 缓存
    • MyBatis的逆向工程
    • 分页插件
  • MyBatis-Plus

    • MyBatis-Plus 简介
    • MyBatis-Plus 入门案例
    • MyBatis-Plus 基本CRUD
    • MyBatis-Plus 常用注解
    • 条件构造器和常用接口
    • MyBatis-Plus 插件
    • MyBatis-Plus 通用枚举
    • MyBatis-Plus 代码生成器
    • MyBatis-Plus 多数据源
    • MyBatisX插件
  • studynotes
  • database
  • MySQL
xu
2022-01-24
目录

MySQL-简介

# MySQL-简介

学习视频地址 (opens new window)

  • 数据库三层结构
  • 数据在数据库中的存储方式
  • SQL语句分类
  • 创建数据库
  • 查看、删除数据库
  • 备份恢复数据库
  • 创建表
  • Mysql 常用数据类型(列类型)
    • 数值型(整数)的基本使用
    • 整型如何定义一个无符号的整数
    • 数值型(bit)的使用
    • 数值型(小数)的基本使用
    • 字符串的基本使用
    • 字符串使用细节
    • 日期类型的基本使用
  • 创建表练习
  • 修改表-基本介绍
  • 修改表-课堂练习

# 数据库三层结构

  1. 所谓安装Mysql数据库,就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库。DBMS(database manage system)
  2. 一个数据库中可以创建多个表,以保存数据(信息)。
  3. 数据库管理系统(DBMS)、数据库和表的关系如图所示:示意图

01

# 数据在数据库中的存储方式

02

# SQL语句分类

  • DDL:数据定义语句[create表,库...]
  • DML:数据操作语句[增加insert,修改update,删除delete]
  • DQL:数据查询语句[select ]
  • DCL:数据控制语句[管理数据库:比如用户权限grant revoke ]

# 创建数据库

04

#演示数据库的操作
# 创建一个名称为frx_db01的数据库。[图形化和指令 演示]
#使用指定创建数据库
CREATE DATABASE frx_db01;
#删除数据库
DROP DATABASE frx_db01;
# 创建一个使用utf8字符集的frx_db02数据库
CREATE DATABASE frx_db02  CHARACTER SET utf8
# 创建一个使用utf8字符集,并带校队规则的frx_db03数据库
CREATE DATABASE frx_db03 CHARACTER SET utf8 COLLATE utf8_bin
#校对规则 utf8_bin 区分大小写 默认utf8_general_ci 不区分大小写
#如果数据库下面的表没有指定字符集和校对规则,以它的数据库校对规则为准
#下面是一条SQL语句,select 查询 * 表示所有字段
SELECT * FROM t1 
WHERE NAME='tom'
	
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 查看、删除数据库

04

# 演示删除和查询数据库
# 查看当前数据库服务器中的所有数据库
SHOW DATABASES
#查看前面创建的frx_db01数据库的定义信息
SHOW CREATE DATABASE frx_db01
#说明 在创建数据库,表的时候,为了规避关键字,可以使用反引号解决
CREATE DATABASE `CREATE`
#删除前面创建的frx_db01数据库
DROP DATABASE frx_db01
1
2
3
4
5
6
7
8
9
10
11
12

# 备份恢复数据库

04

#练习:database03.sq1 备份hsp_db02 和 hsp_db03 库中的数据,并恢复
#备份,要在Dos下执行mysqldump指令其实在mysql安装目录\bin
#这个备份文件,就是对应的sql语句
mysqldump -u root -p -B frx_db02 frx_db03 >d:\\bak.sql
DROP DATABASE frx_db03;
#恢复数据库(注意:使用 mysql -u root -p  进入Mysql命令行执行)
source d:\\bak.sql
#第二个恢复方法,直接将bak.sql的内容放到查询编辑器中,执行
1
2
3
4
5
6
7
8
9
10
11

# 创建表

04

#指令创建表
#注意:hsp_db02创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类
#id           整形
#name         字符串
#password     字符串
#birthday     日期
CREATE TABLE `USER`(
	id INT,
	`name` VARCHAR(255),
	`password` VARCHAR(255),
	`birthday` DATE)
	CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;
1
2
3
4
5
6
7
8
9
10
11
12

# Mysql 常用数据类型(列类型)

04

# 数值型(整数)的基本使用

04

# 演示整形的使用 
# 使用 tinyint 来演示范围
# 表的字符集,校验规则,存储引擎,老师使用默认
#1.如果没有指定 unsigned,则TINYINT就是有符号
#2.如果指定 unsigned,则TINYINT就是无符号
CREATE TABLE t3 (
	id TINYINT);
	
CREATE TABLE t4 (
	id TINYINT UNSIGNED);	
INSERT INTO t3 VALUES(127);#添加语句
SELECT * FROM t3
INSERT INTO t4 VALUES(0);
SELECT * FROM t4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 整型如何定义一个无符号的整数

  • create table t10(id tinyint);//默认是有符号的
  • create table t11(id tinyint unisigned);//无符号的

# 数值型(bit)的使用

1.基本使用

  • mysql>create table t05(num bit(8));
  • mysql> insert into t05 (1,3);
  • mysql> insert into t05 values(2,65); 2. 细节说明bit.sql
    • bit字段显示时,按照位的方式显示.
    • 查询的时候仍然可以用使用添加的数值
    • 如果一个值只有0.1可以考虑使用bit(1),可以节约空间
    • 位类型。M指定位数,默认值1,范围1-64
    • 使用不多.
# 演示bit类型使用
# 说明
#1.bit(m) m在1-64
#2.添加数据 范围 按照你给的位数来确定,比如m=8 表示一个字节 0~255
#3.显示按照bit
#4.查询时,仍然可以按照数来查询
CREATE TABLE t05 (num  BIT(8));
INSERT INTO t05 VALUES(255);
SELECT * FROM t05;
SELECT * FROM t05 WHERE num = 1;
1
2
3
4
5
6
7
8
9
10
11

# 数值型(小数)的基本使用

04

# 演示decimal类型、float、double使用
# 创建表
CREATE TABLE t06(
	num1 FLOAT,
	num2 DOUBLE,
	num3 DECIMAL(30,20));
# 添加数据
 INSERT INTO t06 VALUES(88.12345678912345,88.12345678912345,88.12345678912345);
 SELECT * FROM t06;
# decimal 可以存放很大的数
CREATE TABLE t07(
	num DECIMAL(65));
INSERT INTO t07 VALUES(999999999999999999999888888888888888888887777777777777776666666);
SELECT * FROM t07;
CREATE TABLE t08(
	num BIGINT UNSIGNED);
INSERT INTO t08 VALUES(999999999999999999999888888888888888888887777777777777776666666);
SELECT * FROM t08;
	
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 字符串的基本使用

04

# 演示字符串类型的使用 char varchar
# 注释快捷键 shift+ctrl+c 取消注释 shift+ctrl+r
#  CHAR(size)
#  固定长度字符串 最大255 字符
#  VARCHAR(size) 0-65535
#  可变长度字符串 最大65532字节[utf-8编码最大21844字符 1-3个字节用于记录大小]
#  如果表的编码是 utf8 varchar(size) size=(65535-3)/3=21844
#  如果的编码是   gbk  varchar(size) size=(65535-3)/2=32766
CREATE TABLE t09(
	`name` CHAR(255));
	
CREATE TABLE t10(
	`name` VARCHAR(32766)) CHARSET gbk;
	
DROP TABLE t10;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 字符串使用细节

12

04

# 演示字符串的使用细节
# char(4)和varchar(4)这个表4示的是字符,而不是字节,不区分是汉字还是字母
CREATE TABLE t11(
	`name` CHAR(4));
INSERT INTO t11 VALUES('你好你好');
SELECT * FROM t11;
CREATE TABLE t12(
	`name` VARCHAR(4));
INSERT INTO t12 VALUES('ab北京');
SELECT * FROM t12;
# 如果varchar 不够用,可以考虑使用mediumtext 或者 longtext,
# 如果想简单点,可以直接使用text
CREATE TABLE t13 (content TEXT,content2 MEDIUMTEXT, content3 LONGTEXT);
INSERT INTO t13 VALUES('韩顺平教育','韩顺平教育100','韩顺平教育1000~');
SELECT * FROM t13;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 日期类型的基本使用

04

# 演示时间相关的类型
# 创建一张表,date,datatime,timestamp
CREATE TABLE t14(
	birthday DATE, -- 生日
	job_time DATETIME, -- 记录年月日 时分秒
	login_time TIMESTAMP
	NOT NULL DEFAULT CURRENT_TIMESTAMP
	ON UPDATE CURRENT_TIMESTAMP);-- 登陆时间,如果希望login_time自动更新,需要配置
	
SELECT * FROM t14;
INSERT INTO t14(birthday,job_time)
	VALUE('2022-11-11','2022-11-11 10:10:10');
	-- 如果我们更新 t14表的某条记录,login_time列会自动的以当前时间进行更新
1
2
3
4
5
6
7
8
9
10
11
12
13

# 创建表练习

04

# 创建表的课堂练习
-- 字段 属性
-- Id   整形
-- name 字符型
-- sex  字符型
-- birthday   日期型(date)
-- entry_date 日期型(date)
-- job  字符型
-- Salary     小数型
-- resume     文本型
CREATE TABLE `emp`(
	id INT,
	NAME VARCHAR(32),
	sex CHAR(1),
	birthday DATE,
	entry_date DATETIME,
	job VARCHAR(32),
	salary DOUBLE,
	`resume` TEXT) CHARSET utf8 COLLATE utf_8 ENGINE INNODB;
	
	
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 修改表-基本介绍

04

# 修改表-课堂练习

  • 应用实例
    • 员工表emp的上增加一个image列,varchar类型(要求在resume后面).
    • 修改job列,使其长度为60。
    • 删除sex列
    • 表名改为employee.
    • 修改表的字符集为utf8
    • 列名name修改为user_name

alter table user change column name username varchar(20);

# 修改表的操作
-- 员工表emp的上增加一个image列,varchar类型(要求在resume后面)
ALTER TABLE emp 
	ADD image VARCHAR(32) NOT NULL DEFAULT ''
	AFTER RESUME
	
DESC employee -- 显示表结构,可以查看表的所有列
-- 修改job列,使其长度`emp`为60
ALTER TABLE emp
	MODIFY job VARCHAR(60) NOT NULL DEFAULT ''
	
-- 删除sex列。
ALTER TABLE emp
	DESC sex
	
-- 表名改为employee
RENAME TABLE emp TO employee
-- 修改表的字符集为utf8
ALTER TABLE employee CHARACTER SET utf8
-- 列名name修改位user_name
ALTER TABLE employee 
	CHANGE `name` user_name VARCHAR(32) NOT NULL DEFAULT ''
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
帮助我改善此页面 (opens new window)
#MySQL
上次更新: 2024年3月20日
MySQL-CRUD

MySQL-CRUD→

最近更新
01
结构型模式
03-21
02
创建者模式
01-20
03
设计模式入门
12-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 xustudyxu |豫ICP备2022008983号

豫公网安备 41018302000331号

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式