1 什么是数据库
以下学习的数据库均为关系型数据库(RDBMS),其中关系型数据库是指采用了关系模型来组织数据的数据库。
关系型模型可以看做二维表模型,而一个关系型数据库是由二维表及其之间的联系所构成的数据库组织。
2 数据库库的操作
2.1 创建数据库
语法:
create database [if not exists] 数据库名 [character set utf8mb4];
- […]是可选项
- utf8mb4为数据库字符集,若不指定则默认字符集为utf8,然而MySQL中的utf8并不包含复杂的中文字符,而真正的utf8是指utf8mb4,故在字符集应该选择为utf8mb4。
2.2 使用数据库
语法:
use 数据库名;
2.3 显示当前数据库
语法:
show databases;
2.4 删除数据库
语法:
drop database [if exists] 数据库名;
- 当数据库删除以后,数据库中的表格信息和数据内容均被删除
3 常用数据类型
3.1 数值类型
数据类型 | 大小 | 说明 |
---|---|---|
bit(M) | M指定位数,默认为1 | |
tinyint | 1字节 | |
smallint | 2字节 | |
int | 4字节 | |
bigint | 8字节 | |
float(M,D) | 4字节 | 单精度,M指定长度,D指定小数位数 |
double(M,D) | 8字节 | |
decimal(M,D) | M/D最大值+2 | 双精度 |
numeric(M,D) | M/D最大值+2 |
3.2 日期类型
数据类型 | 大小 | 说明 |
---|---|---|
datetime | 8字节 | 范围为1000-9999年,不会进行时区转换 |
timestamp | 4字节 | 范围为1970-2038年,自动检索当前时区进行转换 |
3.3 字符串类型
数据类型 | 大小 | 说明 |
---|---|---|
varchar | 0-65,535字节 | 适用于字符串较少的情况 |
text | 0-65,535字节 | 适用于字符串较多的长文本 |
mediumtext | 0-16,777,215字节 | |
blob | 0-65,535字节 |
- 常用的数据类型均加粗
4 表的操作
4.1 创建表格
在使用数据库表格的过程中,首先需要use 数据库名;
语法:
create table 表名(字段1 类型 comment‘…’, 字段2 类型);
- comment可以增加内容对字段进行描述
4.2 删除表格
语法:
drop table [if exists] 表名;
4.3 查看表结构
语法:
desc 表名;
4.4 增加数据
语法:
单行插入:insert into 表名 values(…,…,…);
多行插入:insert into 表名 (字段名1,字段名2,…) values (…,…,…);
- 插入的值要与字段名一一对应;
- 插入的数量必须等于列的数量。
4.5 查询
语法:
全列查询:select * from 表名;
指定列查询:select 字段名 from 表名;
别名:select 字段名 别名 from 表名;
4.6 修改
语法:
update 表名 set 字段名 = 修改后的内容;
4.7 删除
语法:
删除整张表格:delete from 表名 ;
删除表内数据:delete from 表名 where 判断条件;
5 其他操作
5.1 去重
语法:
使用distinct关键字对某列进行去重 select distinct 列 from 表名;
5.2 排序
语法:
select 列 from 表名 order by 列 ASC/DESC;
- 其中ASC表示升序,为默认值,DESC为降序;
- 没有order by字句的查询,返回顺序则是未定义的;
- NULL数据表示最小,升序时在最前,降序时在最后;
- 也可以对列表的别名降序order by操作。
5.3 条件查询
语法:
select 列 from 表名 where …;
- where可以使用表达式,但是不能对别名进行条件查询;
常用运算符
运算符 | 说明 |
---|---|
>、<、>=、<= | |
= | 等于,此时null = null 的结果为null |
<=> | 等于,此时null = null 的结果为true(1) |
!=、<> | 不等于 |
between a and b | 若a <= value <= b,则返回True(1) |
in(a,b,c,…) | 若value在a,b,c,…中其中一个,则返回True(1) |
is null | 是null |
is not null | 不是null |
like | 模糊匹配,%表示包含0的任意多个字符,_表示一个字符 |
and | |
or | |
not | 条件为True(1),结果为False(0) |
-
模糊匹配:
若想寻找表格中姓为“孙”的同学,若不知道“名”为几个字,应该为:where name like ‘孙%’;若知道几个字可以用where name like ‘孙_’,此时表示为该同学为孙某。
5.4 分页查询
语法:
select 列 from 表名 limit n; --从0开始,筛选n条结果
select 列 from 表名 limit s, n; --从s开始,筛选n条结果
select 列 from 表名 limit n offset s; --从s开始,筛选n条结果