一些相关的概念
DB(Data Base):数据库,是存储数据的仓库,数据是有组织的进行存储。
DBMS(Data Base Management System):数据库管理系统,操纵和管理数据库的大型软件。
MySQL酱紫的。
SQL(Structured Query Language):操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。
RDBMS:关系型数据库,建立在关系模型基础上,有多张相互连接的二维表组成的数据库。
用表存储数据的,就是关系型数据库。
启动MySQL:net start mysql80
停止MySQL:net stop mysql80
(PS:MySQL 开机自动启动)
客户端连接:mysql -u root -p
(上述方法需配置环境变量)
SQL分类
分类 | 英格利斯 | 说明 |
---|---|---|
DDL | Data Definition Language | 定义语言,用来定义数据库对象(数据库,表,字段)。 |
DML | Data Manipulation Language | 操作语言,对数据库中的数据进行增删改。 |
DQL | Data Query Language | 查询语言,查询数据库中表的记录。 |
DCL | Data Control Language | 控制语言,创建数据库用户、控制数据库的访问权限。 |
数据类型
数值类型
类型 | 大小 | 有符号范围 | 无符号范围 |
---|---|---|---|
TINYINT | 1byte | (-127,128) | (0,255) |
SMALLINT | 2bytes | (-32768,32767) | (0,65535) |
MEDIUMINT | 3bytes | (-8388608,8388607) | (0,16777215) |
INT | 4bytes | (-2147483648,2147483647) | (0,4294967295) |
BIGINT | 8bytes | (- 2 63 2^{63} 263, 2 63 2^{63} 263-1) | (0, 2 64 2^{64} 264-1) |
FLOAT | 4bytes | (-3.402823E+38,3.402823E+38) | 0和(1.175494E-38,3.402823E+38) |
DOUBLE | 8bytes | (-1.797693E+308,1.797693E+308) | 0和(2.225073E-308,1.797693E+308) |
DECIMAL | - | 依赖M(精度)和D(标度)的值 | 依赖M(精度)和D(标度)的值 |
DECIMAL
是用于精确表述小数的,精度表示整个的长度,标度表示小数所占的长度。
123.45 M=5 D=2
在使用DOUBLE
的时候,需要指定整个的长度以及小数所占的长度,即M与D。
sorce double(4,1)# M=4 100.0,D=1 0.1
字符类型
类型 | 大小(byres) | 描述 |
---|---|---|
CHAR | 0~255 | 定长字符串 |
VARCHAR | 0~65535 | 变长字符串 |
TINYBLOB | 0~255 | 不超过255个字符的二进制数据 |
TINYTEXT | 0~255 | 短文本字符串 |
BLOB | 0~65535 | 二进制形式的长文本数据 |
TEXT | 0~65535 | 长文本数据 |
MEDIUMBLOB | 0~16777215 | 二进制的中等长度文本数据 |
MEDIUMTEXT | 0~16777215 | 中等长度文本数据 |
LONGBLOB | 0~4294967295 | 二进制的极大文本数据 |
LONGTEXT | 0~4294967295 | 极大文本数据 |
BLOB
:二进制数据,相对使用较少;TEXT
:文本数据
定长字符串与变长字符串:
char(10)
预留出10个字符的空间,未填部位采用空格补位。varchar(10)
根据当前存储的字符计算存储需要空间,最多不超过10个字符 。char
的性能更好(没有多余的计算空间)
日期类型
类型 | 大小 | 格式 | 描述 |
---|---|---|---|
DATE | 3 | YYYY-MM-DD | 日期值 |
TIME | 3 | HH:MM:SS | 时间值or持续时间 |
YEAR | 1 | YYYY | 年份值 |
DATETIME | 8 | YYYY-MM-DD HH:MM:SS | 混合日期and时间值 |
TIMESTAMP | 4 | YYYY-MM-DD HH:MM:SS | 混合日期and时间值、时间戳 |
DATETIME
与TIMESTAMP
的时间表示范围不同:TIMESTAMP
至2038-01-19 03:14:07,DATETIME
至9999-12-31 23:59:59。DATETIME
更常用。
DDL
- 查询所有数据库:
SHOW DATABASES;
- 查询当前数据库:
SELECT DATABASE();
- 创建:
CREATE DATABASE[IF NOT EXISTS]数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则]
; - 删除:
DROP DATABASE[IF EXISTS]数据库名;
- 使用:
USE 数据库名
查询
查询表操作(前提是:已经进入数据库内)
- 查询当前数据库所有表:
show tables
- 查询表结构:
desc 表名
- 查询指定表的建表语句:
show create table 表名
![](https://i-blog.csdnimg.cn/blog_migrate/a97b09739d41bd4cbd1ecc79ae65cdde.png)
创建
创建表结构
create table demo01(
-> id int comment '学号',
-> name varchar(50) comment '姓名',
-> age int comment '年龄',
-> gender varchar(1) comment '性别'
) comment '学生表';
create table employee(
id int comment '编号',
worknum varchar(10) comment '员工工号',
name varchar(10) comment '员工姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
enterdate date comment '入职时间'
)comment '员工表';
修改
修改表结构
- 添加字段:
alter table 表名 add 字段名 类型(长度) [comment 注释][约束];
![](https://i-blog.csdnimg.cn/blog_migrate/fb1d39f4da0eb8614650e2bb8a0a382c.png)
- 修改字段名和字段类型:
alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束];
- 删除字段:
alter table 表名 drop 字段名;
![](https://i-blog.csdnimg.cn/blog_migrate/3e0a097332eabe7ffdfe1907f331b664.png)
- 修改表名:
alter table 表名 rename to 新表名;
- 删除表:
drop table [if exists] 表名
- 删除指定表,并重新创建该表:
truncate table 表名;
(truncate
实际上是将表中的数据删除,但是留下了表结构,相当于格式化?)