MySQL知识点梳理


1. 连接数据库

命令行连接:

mysql -uroot -p123456	-- 连接数据库

修改数据库密码:

update mysql.user set authentication_string=password('123456') where user='root' and Host='localhost';
flush privileges;	-- 刷新权限

查看所有的数据库:

show databases;

数据库XXX语言:

-- CRUD增删改查
DDL	-- 定义
DML	-- 操作
DQL -- 查询
DCL -- 控制

2. 操作数据库

操作数据库(了解)

  • 创建数据库

    create database [if not exists] school;
    
  • 删除数据库

    drop database [if exists] school;
    
  • 使用数据库

    use school;	-- 如果表名或者字段名是个特殊字符,就需要带 ``
    
  • 查看数据库

    show databases;	-- 查看所有的数据库
    

数据库的列类型

数值

类型 意义 字节数
tinyint 十分小的数据 1个字节
smallint 较小的数据 2个字节
mediumint 中等大小的数据 3个字节
int ==标准的整数(常用)== 4个字节
bigint 较大的数据 8个字节
float 浮点数 4个字节
double 浮点数 8个字节
decimal 字符串形式的浮点数 一般金融计算的时候使用

字符串

类型 意义 大小
char 固定大小的字符串 0 - 255
varchar ==可变字符串(常用、保存常用的变量)== 0 - 65535
tinytext 微型文本 2^8 - 1
text ==文本串(保存大文本)== 2^16 - 1

时间日期

类型 格式 意义
date YYYY-MM-DD 日期格式
time HH: mm: ss 时间格式
datatime ==YYYY-MM-DD HH: mm: ss(最常用)== 最常用的时间格式
timestamp ==1970.1.1到现在的毫秒数(较为常用)== 时间戳
year 年份表示 年份表示

null

  • 没有值,未知
  • 不要使用null进行运算,运算结果为null,没有意义

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

  • Unsigned:

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

    • 前面填充0
    • 不足的位数,使用0来填充
  • 自增:

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

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

    • 设置默认的值
    • 假设给age设置默认值20,如果不指定该列的值,则创建一条新记录的时候age默认显示20
  • 拓展:

    • 每一个表,都必须存在以下五个字段,未来做项目会用到,表示一个记录存在意义

      字段 意义
      id 主键
      version 实现乐观锁
      is_delete 伪删除
      gmt_create 创建时间
      gmt_update 修改时间

创建数据库表

CREATE	table if not EXISTS `student` (
	`id` int(4) 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 '出生日期',
	`adddress` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
	`email` VARCHAR(20) DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

格式:

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

数据库引擎

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

常规使用操作:

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

在物理空间存在的位置

所有的数据库文件都存在data目录下 本质还是文件的存储!

MySQL引擎在物理文件上的区别:

  • INNODB在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
  • MYISAM对应文件:
    • *.frm - 表结构的定义文件
    • *.MYD - 数据文件(data)
    • *.MYI - 索引文件(index)

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

CHARSET=utf8

不设置的话,就是MySQL的默认字符集编码(不支持中文)

MySQL的默认字符集编码是Latin1,不支持中文

在my.ini中配置默认的编码(不建议)

character-set-server=utf8

表必须存在的5个字段

Java
  • 作者:周海林(联系作者)
  • 发表时间:2021-05-27
  • 版权声明:自由转载-非商用-非衍生-周海林贼帅
  • 加作者微信:请在文末添加作者微信

评论