数据库是一个“广义的概念”
1.表示一门学科,研究的是如何设计实现一个数据库,背后的方法以及设计哲学
2.表示一类管理数据的软件
3.表示某一个具体的数据库软件
4.表示部署了某个数据库软件的主机
一、数据库的介绍
数据库是管理数据的软件
数据库大体可以分为关系型数据库和非关系型数据库
- 关系型数据库:是指采用了关系模型来组织数据的数据库,简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织,对数据格式要求高,一板一眼
- 非关系型数据库:更加灵活,使用文档/键值对结构组织数据
MySQL是一个“客户端-服务器”结构的软件
客户端:主动发起请求的一方
服务器:被动接收的一方
二者通过网络进行通信,客户端给服务器发起的数据称为请求,服务器给客户端返回的数据称为响应
服务器是被动的一方,不知道客户端什么时候来,只有一个字:等!
一个服务器往往也要给很多客户端提供服务
MySQL的服务器才是真正的本体,负责保存和管理数据,数据都是在硬盘中存储,大部分服务器是给很多个客户端提供服务,也有给少数一两个客户端提供服务的分布式系统
二、MySQL数据库的操作
数据库是逻辑上的数据集合,一个MySQL服务器程序可以在硬盘上存很多数据,是通过表来组织的
操作命令也称为“SQL语句”,也可理解为一种编程语言
1.创建数据库
基础语法:
create database 数据库名;
- 示例:创建名为db_test1的数据库
create database db_test1;
说明:当我们创建数据库没有指定字符集和校验规则时,系统默认使用字符集:utf8,校验规则是utf8_general_ci
- 如果系统没有db_test2的数据库,则创建一个名为db_test2的数据库,有则不创建
create database if not exists db_test2;
if not exists
起到检查的作用,避免存在同名的数据库而导致SQL报错
- 如果系统没有db_test的数据库,则创建一个使用utf8字符集的db_test数据库,有则不创建
create database if not exists db_test character set utf8mb4;
或者
create database if not exists db_test charset utf8mb4;
character set
和charset
可以指定字符集
不同的字符集,不同编码方式下,一个喊自己占几个字节是不同的!
说明:MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符,MySQL真正的utf8是使用utf8mb4,建议大家使用
utf8mb4
2.显示当前的数据库
语法:
show databases;
说明:一个MySQL服务器上,有很多的表,可以把有关联关系的表放到一起,就构成了一个数据集合,此时就称为数据库,而且一个MySQL服务器可有多个数据库
3.使用数据库
语法:
use 数据库名;
4.删除数据库
语法:
drop database 数据库名;
说明:数据库删除后,内部看不到对应的数据库,里边的表和数据全部被删除
drop database db_test1;
drop database db_test2;
三、常用数据类型
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,和DECIMAL一样 |
2.字符串类型
数据类型 | 大小 |
---|---|
VARCHAR(SIZE) | 0-65535字节,可变长度字符串 |
TEXT | 0-65535字节,长文本数据 |
MEDIUMTEXT | 0-16777215字节,中等长文本数据 |
BLOB | 0-65535字节,二进制形式的长文本数据 |
说明:文本存储的都是字符,字符都可以在码表上查到;二进制在码表上查不到(音乐,图片,视频)
3.日期类型
数据类型 | 大小 |
---|---|
DATETIME | 8字节,范围从1000到9999年,不会进行时区的检索以及转换 |
TIMESTAMP | 4字节,范围从1970到2038年,自动检索当前时区并进行转换 |
说明:在上述类型中,我们只需要掌握基本的几个数据类型即可,例如
int
,bigint
,double
,decimal
,varchar
,datetime
四、表的操作
需要操作数据库中的表时,需要先使用该数据库
use 数据库名;
1.创建表
语法:
create table 表名(列名 类型,列名 类型);
列名在前,类型在后
插入一个学生表,包含学号和姓名
create table student(id int,name varchar(20));
说明:如果确实想让表名/列名与关键字一样,可以使用反引号
2.查看表结构
语法:
decs 表名;
- 也可以查看所有表
语法:
show tables;
3.删除表
语法:
--删除student表
drop table student;
--如果存在student1,则删除student1表
drop table if exists student1;