MySQL基础


MySQL基础

1 数据库1.1 什么是数据库1.2 数据库分类1.3 MySQL简介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 删除

1 数据库

1.1 什么是数据库

数据库(DB ,DataBase)

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

DBMS:数据库管理系统

  • 数据库的管理软件

1.2 数据库分类

关系型数据库:(SQL)

  • MySQL, Oracle, Sql Server, DB2, SQLite
  • 通过表和表之间,列和列之间的关系数据进行存储

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

  • Redis, MongDB
  • 以对象存储,通过对象的属性来决定

1.3 MySQL简介

  • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于 Oracle旗下产品
  • 体积小、速度快、总体拥有成本低
  • MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一

2 操作数据库

2.1 数据库基本操作

创建数据库

1

IF NOT EXISTS 不存在时创建

删除数据库

xxxxxxxxxx
11

IF EXISTS存在时删除

使用数据库

xxxxxxxxxx
11

当数据库中的字段名是关键字时需要加``括起来

查看数据库

xxxxxxxxxx
11

查看所有数据库

2.2 数据库的数据类型

数据库的列的数据类型

数值

  • tinyint 1个字节
  • smallint 2个字节
  • mediumint 3个字节
  • int 4个字节
  • bigint 8个字节
  • float 4个字节
  • double 8个字节
  • decimal 字符串类型的浮点

注:int类型的长度不是保存数据的长度,就算定义int(1)还是能存储到2^32,int(n),长度n表示最大显示宽度,显示宽度与存储大小无关,与zerofull的填充长度有关(与vaechar不同)

在INT(3)的情况下插入100,10,0,结果为:100,010,001

字符串

  • 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进行运算

2.3 数据库的字段属性

数据库的列所携带的属性

Unsigned

  • 无符号整型
  • 声明后该列不能为负数

zerofill

  • 0填充的
  • 不足的位数用0来填充
  • 定义int(3), value = 5 ,005

自增

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

非空 NULL not null

  • 设置为非空不赋值就会报错

默认值 default

  • 设置默认的值

在项目中推荐必须携带的字段

xxxxxxxxxx
512345

2.4 创建数据库表

creat

x
12345678910111213

格式:

xxxxxxxxxx
512345
xxxxxxxxxx
3123

2.5 数据库引擎

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

常规使用操作:

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

存储:本质文件存储

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

MySQL的默认的编码设置为Latin1,不支持中文

  1. 在创表的时候修改编码
xxxxxxxxxx
11
  1. 在my.ini中配置默认的编码
xxxxxxxxxx
11

建议每次建表都加上编码,修改本地配置会与其他的服务端配置不同步,可能导致同样的建表不同的效果

2.6 修改和删除表

修改

xxxxxxxxxx
12123456789101112

删除

xxxxxxxxxx
212

所有的删除操作尽量加上判断

3 MySQL数据库管理

3.1 外键

未命名文件

外键的作用相当于约束,在表1中grade数据必须和表2存在的id数据匹配,否则无法提交修改

1 在创建表的时候添加外键

创建年级表

512345

创建学生表

171234567891011121314151617

查看表可以看到外键

image-20211121214703715

存在被引用关系的表不能直接删除 需要先删除引用表

直接在建表时添加外键容易出现依赖性问题,版本兼容性差,可以使用ALTER语句进行添加约束

2 ALTER添加外键

xxxxxxxxxx
212

以上为数据库级别的外键,不建议使用,数据库表多之后引用复杂兼容性差

推荐使用:在程序中实现外键

3.2 DML语言

DML语言:数据操作语言

  • insert 添加
  • update 更新
  • delete 删除

3.3 添加

INSERT 语句

基本插入:

x
1234

多行插入:

xxxxxxxxxx
812345678

插入结果:

image-20211121222144492

3.4 修改

UPDATE 语句

xxxxxxxxxx
11234567

WHERE 子句

where 是筛选的条件

操作符含义语句结果
=等于id=6操作第6行
<>或!=不等于id<>6操作除了第6行
>大于id>6操作7~infinite行
<小于id<6操作1~5行
>=大于等于id>=6操作6~infinite行
<=小于等于id<=6操作1~6行
BETWEEN...AND...在...之间id BETWEEN 2 AND 6操作2~6行
ANDid<=6 AND id>=2操作2~6行
ORname='小明' or name='张三'操作名字是小明和张三的行

3.5 删除