1.数据库概述
1.1 概念
数据库(Database)
是按照数据结构来组织、存储和管理数据的仓库,可以高效地存储、检索和管理大量数据
主要特点:
- 1.结构化存储:数据按特定模型组织
- 2. 集中管理:统一存储和管理相关数据
- 3. 共享访问:支持多用户同时使用
- 4. 减少冗余:避免数据重复存储
- 5. 数据独立性:数据与应用程序分离
1.2 常见数据库类型
1.2.1 关系型数据库(RDBMS)
关系型数据库
是一种基于关系模型的数据管理系统,用于存储和管理结构化数据。关系模型可以理解为简单的二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织
优点:
缺点:
1.2.2 非关系型数据库(NoSQL,暂不介绍)
1.3 SQL简介
SQL(Structured Query Language,结构化查询语言)
是一种用于管理关系型数据库的标准编程语言。它允许用户执行数据查询、更新、插入、删除等操作,广泛应用于数据库管理系统中
SQL语句通常分为以下几类:
- 1.数据定义语言(Date Definition Language,DDL):用于创建、修改或删除数据库对象。例如:
- create table:创建新表
- alter table:修改表结构
- drop table:删除表
- 2.数据操作语言(Data Manipulation Language,DML):用于对数据进行增删改查。例如:
- select:查询数据
- insert:插入新数据
- update:更新现有数据
- delete:删除数据
- 3.数据控制语言(Data Control Language,DCL):用于管理数据库权限。例如:
- grant:授予用户权限
- revoke:撤销权限
- 4.事务控制语言(Transaction Control Language,TCL):用于管理事务。例如:
- commit:提交事务
- rollback:回滚事务
2.数据库操作
2.1 查看数据库
show databases;
2.2 创建数据库
create database (if not exists) 数据库名 (其他选项);
其他选项包括:
- 1.charset = charset_name:指定数据库采用的字符集编码,决定了可以存储哪些字符
show charset:
查看数据库支持的字符集编码- 2.collate = collation_name:指定数据库字符集的校验规则,决定了字符的比较和排序规则
show collation:
查看数据库支持的校验规则)
示例:
2.3 查看创建的数据库
show create database 数据库名;
2.4 修改数据库
alter database 数据库名 修改选项;
修改选项包括:
- 1.charset = charset_name:修改字符集编码
- 2.collate = collation_name:修改字符集的校验规则
示例:
2.5 删除数据库
drop database 数据库名;
3.MySQL数据类型
3.1 整数型
类型 | 大小 | 说明 |
---|---|---|
tinyint | 1字节 | 有符号:-127 ~ 128;无符号:0 ~ 255 |
smallint | 2字节 | 有符号:-32768 ~ 32767;无符号:0 ~ 65535 |
mediumint | 3字节 | 有符号:-2^23 ~ 2^23 - 1;无符号:0 ~ 2^24 - 1 |
int | 4字节 | 有符号:-2^31 ~ 2^31 - 1;无符号:0 ~ 2^32 - 1 |
bigint | 8字节 | 有符号:-2^63 ~ 2^63 - 1;无符号:0 ~ 2^64 - 1 |
3.2 定点型
decimal(M,D):精确数值,M为总位数,D为小数位数。例如decimal(5,2)可以存储最大值为 999.99
3.3 浮点型
类型 | 大小 | 说明 |
---|---|---|
float(M,D) | 4字节 | 单精度浮点数,M为总位数,D为小数位数 |
double(M,D) | 8字节 | 双精度浮点数,M 为总位数,D 为小数位数 |
3.4 字符串类型
char(M):
定长字符串,范围 0 到 255字符,M 表示该字段最多能存储的字符数量,如果存储的字符串长度小于M,剩余部分会用空格填充格,M省略则长度为1
varchar(M):
变长字符串,范围 0 到 65535字符,M为最大字符数,所占空间为实际长度+1
char(4) | 所需空间(字符) | varchar(4) | 所需空间(字符) |
---|---|---|---|
‘’ | 4 | ‘’ | 1 |
‘a’ | 4 | ‘a’ | 2 |
‘ab’ | 4 | ‘ab’ | 3 |
‘abc’ | 4 | ‘abc’ | 4 |
‘abcd’ | 5 | ‘abcd’ | 5 |
tinytext:
最大长度255字节,有效字符个数取决于使用的字符集
text:
最大长度65535字节,有效字符个数取决于使用的字符集
mediumtext:
最大长度16777215字节,有效字符个数取决于使用的字符集
longtext:
最大长度4294967295字节,有效字符个数取决于使用的字符集
3.5 二进制类型
binary(M):
定长二进制字符串,M 为字节数,范围 0 到 255字节,与char类似,但存储的是二进制字节而不是字符
varbinary(M):
变长二进制字符串,M 为最大字节数,范围 0 到65535字节,与varchar类似,但存储的是二进制字节而不是字符
tinyblob:
最大长度 255 字节
blob:
最大长度65535 字节
mediumblob:
最大长度 16777215 字节
longblob:
最大长度 4294967295 字节
3.6 日期和时间类型
类型 | 大小(字节) | 范围 | 格式 | 0值 |
---|---|---|---|---|
year | 1 | 1901 ~ 2155 | yyyy | 0000 |
- 1.输入4位字符或(1 ~ 4整数)时,匹配对应的year值。例如:输入’2025’或2025都表示year的值为2025
- 2.输入2位字符时,‘00’ ~ '69’匹配2000到2069的year值,‘70’ ~ '99’匹配1970到1999的year值
-3.输入1位字符时,‘0’ ~ '9’匹配2000到2009的year值
类型 | 大小(字节) | 范围 | 格式 | 0值 |
---|---|---|---|---|
date | 4 | 1000-01-01 ~ 9999-12-31 | yyyy-mm-dd | 0000-00-00 |
类型 | 大小(字节) | 范围 | 格式 | 0值 |
---|---|---|---|---|
time | 3 | -838:59:59 ~ 838:59:59 | hh:mm:ss | 00:00:00 |
- 1.
’d hh:mm:ss’
格式:d表示日可取(0 ~ 34)之间的值,小时的值等于(d * 24 + hh)。例如,输入’1 11:30:50’插入数据库中的日期为35:30:50。- 2.
’hhmmss’
字符串格式/hhmmss
数字格式- 3.使用
current_time
或now()
函数输入当前系统时间
类型 | 大小(字节) | 范围 | 格式 | 0值 |
---|---|---|---|---|
datetime | 8 | 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.499999 | yyyy-mm-dd hh:mm:ss | 0000-00-00 00:00:00 |
类型 | 大小(字节) | 范围 | 格式 | 0值 |
---|---|---|---|---|
timestamp | 4 | 1970-01-01 00:00:01.000000 ~ 2038-01-19 03:14:07.499999 | yyyy-mm-dd hh:mm:ss | 0000-00-00 00:00:00 |
- 输入
current_timestamp
:表示当前日期和时间
4.数据表操作
4.1 选择数据库
use 数据库名字;
4.2 查看表
show tables;
4.3 创建表
create table (if not exists) 表名(field datatype 约束 commit '注释');
- field:列名
- datatype:数据类型
- 约束:暂不介绍
- commit:对列的描述或说明
示例:
4.4 查看表结构
describe/desc(简写) 表名;
4.5 修改表
4.5.1 添加列
alter table 表名 add 列名 数据类型 位置关系;
4.5.2 修改列
alter table 表名 modify 列名 数据类型;
4.5.3 重命名列
alter table 表名 rename column 列名 to 新列名;
4.5.4 删除列
alter table 表名 drop 列名;
4.5.5 修改表名
alter table 表名 rename to 新表名;
4.6 删除表
drop table 表名;