分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库、表、字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
id | name | age | gender |
1 | Lorem. | 28 | 男 |
2 | Magnam. | 68 | 男 |
3 | Saepe! | 32 | 女 |
SHOW DATABASES;
show databases;SELECT DATABASE();
select database();CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE排序规则];
create database if not exists xxxx default charset utf8mb4;drop database [ if exists ] 数据库名;
drop database if exists xxxx;Use 数据库名;
use xxxx;show tables;
show tables;DESC 表名;
show create table 表名:
DDL-表操作-创建:create table 表名(
字段1 字段1类型 [comment 字段1注释],
字段2 字段2类型 [comment 字段2注释],
字段3 字段3类型 [comment 字段3注释],
……
字段n 字段n类型 [comment 字段n注释]
)[comment 表注释];
id | name | age | gender |
1 | Lorem. | 28 | 男 |
2 | Magnam. | 68 | 男 |
3 | Saepe! | 32 | 女 |
mysql> use hello; Database changed mysql> create table user( -> id int comment'编号', -> name varchar(50) comment'姓名', -> age int comment'年龄', -> gender varchar(1) comment'性别' -> )comment'用户表'; Query OK, 0 rows affected (0.03 sec) mysql> show tables; +-----------------+ | Tables_in_hello | +-----------------+ | user | +-----------------+ 1 row in set (0.00 sec) mysql> desc user; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int | YES | | NULL | | | name | varchar(50) | YES | | NULL | | | age | int | YES | | NULL | | | gender | varchar(1) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql> show create table user; +-------+--------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------+ | user | CREATE TABLE `user` ( `id` int DEFAULT NULL COMMENT '编号', `name` varchar(50) DEFAULT NULL COMMENT '姓名', `age` int DEFAULT NULL COMMENT '年龄', `gender` varchar(1) DEFAULT NULL COMMENT '性别' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表' | +-------+--------------------------------------------------------------------------------+ 1 row in set (0.00 sec)DDL-表操作-数据类型:
分类 | 类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
---|---|---|---|---|---|
数值类型 | TINYINT | 1 byte | (-128, 127) | (0, 255) | 小整数值 |
SMALLINT | 2 bytes | (-32768, 32767) | (0, 65535) | 大整数值 | |
MEDIUMINT | 3 bytes | (-8388608, 8388607) | (0, 16777215) | 大整数值 | |
INT或INTEGER | 4 bytes | (-2147483648, 2147483647) | (0, 4294967295) | 大整数值 | |
BIGINT | 8 bytes | (-2^63, 2^63-1) | (0, 2^64-1) | 极大整数值 | |
FLOAT | 4 bytes | (-3.402823466 E+38, 3.402823466351 E+38) | 0 和 (1.175494351 E-38, 3.402823466 E+38) | 单精度浮点数值 | |
DOUBLE | 8 bytes | (-1.7976931348623157 E+308, 1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308, 1.7976931348623157 E+308) | 双精度浮点数值 | |
DECIMAL | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) |
分类 | 类型 | 大小 | 描述 |
---|---|---|---|
字符串类型 | CHAR | 0 - 255 bytes | 定长字符串 |
VARCHAR | 0 - 65535 bytes | 变长字符串 | |
TINYBLOB | 0 - 255 bytes | 不超过255个字符的二进制数据 | |
TINYTEXT | 0 - 255 bytes | 短文本字符串 | |
BLOB | 0 - 65535 bytes | 二进制形式的长文本数据 | |
TEXT | 0 - 65535 bytes | 长文本数据 | |
MEDIUMBLOB | 0 - 16777215 bytes | 二进制形式的中等长度文本数据 | |
MEDIUMTEXT | 0 - 16777215 bytes | 中等长度文本数据 | |
LONGBLOB | 0 - 4294967295 bytes | 二进制形式的极大文本数据 | |
LONGTEXT | 0 - 4294967295 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 至 2038 - 01 - 19 03:14:07 | YYYY - MM - DD HH:MM:SS | 混合日期和时间值,时间戳 |
设计一张员工信息表,要求如下: 1. 编号(纯数字) 2. 员工工号(字符串类型,长度不超过10位) 3. 员工姓名(字符串类型,长度不超过10位) 4. 性别(男/女,存储一个汉字) 5. 年龄(正常人年龄,不可能存储负数) 6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符) 7. 入职时间(取值年月日即可)
mysql> create table emp( -> id int comment '编号', -> workno varchar(10) comment'工号', -> name varchar(10) comment'姓名', -> gender char(1) comment'性别', -> age tinyint unsigned comment'年龄', -> idcard char(18) comment'身份证号', -> entrydate date comment'入职时间' -> )comment'员工表'; Query OK, 0 rows affected (0.03 sec) mysql> desc emp; +-----------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+-------+ | id | int | YES | | NULL | | | workno | varchar(10) | YES | | NULL | | | name | varchar(10) | YES | | NULL | | | gender | char(1) | YES | | NULL | | | age | tinyint unsigned | YES | | NULL | | | idcard | char(18) | YES | | NULL | | | entrydate | date | YES | | NULL | | +-----------+------------------+------+-----+---------+-------+ 7 rows in set (0.00 sec)DDL-表操作-修改:
alter table 表名 add 字段名 类型(长度)[comment注释] [约束];
mysql> alter table emp add nickname varchar(20) comment'昵称'; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc emp; +-----------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+-------+ | id | int | YES | | NULL | | | workno | varchar(10) | YES | | NULL | | | name | varchar(10) | YES | | NULL | | | gender | char(1) | YES | | NULL | | | age | tinyint unsigned | YES | | NULL | | | idcard | char(18) | YES | | NULL | | | entrydate | date | YES | | NULL | | | nickname | varchar(20) | YES | | NULL | | +-----------+------------------+------+-----+---------+-------+ 8 rows in set (0.00 sec)
alter table 表名 modify 字段名 新数据类型(长度);
alter table 表名 change 旧字段名 新字段名 类型(长度)[comment注释] [约束];
mysql> alter table emp change nickname username varchar(30) comment'用户名'; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc emp; +-----------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+-------+ | id | int | YES | | NULL | | | workno | varchar(10) | YES | | NULL | | | name | varchar(10) | YES | | NULL | | | gender | char(1) | YES | | NULL | | | age | tinyint unsigned | YES | | NULL | | | idcard | char(18) | YES | | NULL | | | entrydate | date | YES | | NULL | | | username | varchar(30) | YES | | NULL | | +-----------+------------------+------+-----+---------+-------+ 8 rows in set (0.00 sec)DDL-表操作-修改:
alter table 表名 drop 字段名;
案例:将emp表的字段username删除mysql> alter table emp drop username; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc emp; +-----------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+-------+ | id | int | YES | | NULL | | | workno | varchar(10) | YES | | NULL | | | name | varchar(10) | YES | | NULL | | | gender | char(1) | YES | | NULL | | | age | tinyint unsigned | YES | | NULL | | | idcard | char(18) | YES | | NULL | | | entrydate | date | YES | | NULL | | +-----------+------------------+------+-----+---------+-------+ 7 rows in set (0.00 sec)修改表名:
alter table 表名 rename to 新表名;(to可以省略)
案例:将emp的表名修改成employeemysql> alter table emp rename to employee; Query OK, 0 rows affected (0.03 sec) mysql> show tables; +-----------------+ | Tables_in_hello | +-----------------+ | employee | | user | +-----------------+ 2 rows in set (0.00 sec)删除表
drop table [if exists]表名
truncate table 表名;
mysql> drop table employee; Query OK, 0 rows affected (0.02 sec) mysql> truncate table user; Query OK, 0 rows affected (0.04 sec) mysql> show tables; +-----------------+ | Tables_in_hello | +-----------------+ | user | +-----------------+ 1 row in set (0.00 sec)总结:
show databases;
create databases 数据库名;
use 数据库名;
Select database();
drop database 数据库名;
show tables;
create table表名(字段 字段类型, 字段 字段类型);
desc 表名;
show create table 表名;
alter table 表名 add/modify/change/drop/rename to...;
drop table 表名;