名称 | 全称 | 简称 |
|---|---|---|
数据库 | 存储数据的仓库,数据是有组织的进行存储 | DataBase (DB) |
数据库管理系统 | 操纵和管理数据库的大型软件 | DataBase Management System (DBMS) |
SQL | 操作关系型数据库的编程语言,定义了一套操作 SQL 关系型数据库统一标准 | Structured Query Language (SQL) |
概念: 建立在关系模型基础上,由多张互相链接的二维表组成的数据库。
特点:
1. 使用表存储数据,格式统一,便于维护
2. 使用SQL语言操作,标准统一,使用方便

SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。
分类 | 全称 | 说明 |
|---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库,表,字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据及逆行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
注:[ ]为可选项
拓展:一般使用utf8字符集的时候,会选择utf8mp4,以防特殊字符占四个字节。
方法 | 说明 |
|---|---|
show databases; | 查询所有数据库 |
select database(); | 查询当前数据库 |
create database[if not exists] 数据库名 [default charset 字符集] [collage 排序规则]; | 创建 |
drop database [if exists] 数据库名; | 删除 |
use 数据库名; | 使用 |
#查询所有数据库
mysql> show databases;
#创建itcast数据库
mysql> create database itcast;
#如果当前存在数据库,再次创建会报错,使用if not exists则不会报错
mysql> create database if not exists itcast;
#使用utf8字符集创建数据库
mysql> create database if not exists itcast default charset utf8mb4;
#使用itcast数据库
mysql> use itcast;
#查询当前数据库内容
mysql> select database();
#删除数据库[不要动系统库,删自己建的]
mysql> drop database if exists itcast;方法 | 说明 |
|---|---|
show tables; | 查询当前数据库所有表 |
desc 表名; | 查询表结构 |
show create table 表名; | 查询指定表的建表语句 |
#查询当前数据库所有表[先使用其中一个表]
mysql> show tables;
#查询表结构
mysql> desc student;
#查询表的建表语句
mysql> show create table student;create table 表名( 字段1 字段1类型[comment 字段1注释], 字段2 字段2类型[comment 字段2注释], 字段3 字段3类型[comment 字段3注释], ...... 字段n 字段n类型[comment 字段n注释] )[comment 字段n注释];
示例
mysql> create table student(
-> id int comment '学号',
-> name varchar(50) comment '姓名',
-> address varchar(50) comment '地址'
-> )comment '学生';MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
字符类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
|---|---|---|---|---|
tinyInt | 1 Bytes | (-128,127) | (0,255) | 小整数值 |
smallint | 2 Bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
mediumInt | 3 Bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
int或integer | 4 Bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
bigint | 8 Bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
float | 4 Bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 浮点数值 |
double | 8 Bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 浮点数值 |
decimal | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
字符串类型
类型 | 大小 | 用途 |
|---|---|---|
char | 0-255 bytes | 定长字符串 |
varchar | 0-65535 bytes | 变长字符串 |
tinyblob | 0-255 bytes | 不超过 255 个字符的二进制字符串 |
tinytext | 0-255 bytes | 短文本字符串 |
blob | 0-65 535 bytes | 二进制形式的长文本数据 |
text | 0-65 535 bytes | 长文本数据 |
mediumblob | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
mediumtext | 0-16 777 215 bytes | 中等长度文本数据 |
longblob | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
longtext | 0-4 294 967 295 bytes | 极大文本数据 |
日期类型
类型 | 大小 (bytes) | 范围 | 格式 | 用途 |
|---|---|---|---|---|
date | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
time | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间 |
year | 1 | 1901/2155 | YYYY | 年份值 |
datetime | 8 | '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' | YYYY-MM-DD hh:mm:ss | 混合日期和时间值 |
timestamp | 4 | '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYY-MM-DD hh:mm:ss | 混合日期和时间值,时间戳 |
设计一张员工信息表,要求如下:
mysql> create table emp (
-> id int comment '编号',
-> workno varchar(10) comment '工号',
-> name varchar(10) comment '姓名',
-> gender char(1) comment '性别',
-> age tinyint comment '年龄',
-> idcard char(18) comment '身份证号',
-> entrydate date comment '入职时间'
-> ) comment '员工表';方法 | 说明 |
|---|---|
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束] | 添加字段 |
alter table 表名 modify 字段名 新数据类型(长度); | 修改数据类型 |
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束] | 修改字段名和字段数据 |
alter table 表名 drop 字段名; | 删除字段 |
alter table 表名 rename to 新表名; | 修改表名 |
drop table[if exists] 表名; | 删除表名 |
注意:删除表时,表中数据也同时会被删除
#往emp表添加新的字段,名称为nickname,类型为varchar(20)
alter table emp add nickname varchar(20) comment '名称';
#将emp表的nickname字段修改为username,类型为varchar(30)
alter table emp change nickname username varchar(30) comment '用户名';
#将emp表的字段username删除
alter table emp drop username;
#将emp表的表名修改为employee
alter table emp rename to employee;
#删除指定表,并重新创建该表
truncate table employee;