建库、删库、建表、修改表、删除表、对列的增删改等等。

库的管理

-- 创建库
create database [if not exists] 库名;
create database if not exists mysql_learn; 
-- 删除库
drop databases [if exists] 库名;
drop database if exists mysql_learn;

表的管理

-- 创建表
create table 表名(
  字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
  字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
  字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
)[表的一些设置];
 
CREATE TABLE example_table (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    username VARCHAR(50) NOT NULL COMMENT '用户名',
    email VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
    password CHAR(60) NOT NULL COMMENT '密码(加密存储)',
    description TEXT COMMENT '描述信息',
    status ENUM('active', 'inactive', 'pending') DEFAULT 'pending' COMMENT '状态',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    salary DECIMAL(10, 2) DEFAULT 0.00 COMMENT '薪水',
    is_admin TINYINT(1) DEFAULT 0 COMMENT '是否是管理员(0:否, 1:是)',
    avatar BLOB COMMENT '头像(二进制存储)',
    notes JSON COMMENT '备注(JSON格式)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='示例表';

注意:

  1. 在同一张表中,字段名不能相同
  2. 宽度和约束条件为可选参数,字段名和类型是必须的
  3. 最后一个字段后不能加逗号
  4. 类型是用来限制 字段 必须以何种数据类型来存储记录
  5. 类型其实也是对字段的约束(约束字段下的记录必须为XX类型)
  6. 类型后写的 约束条件 是在类型之外的 额外添加的约束

约束说明

  • not null: 非空约束;
  • default value:设置默认值;
  • primary key:标识该字段为该表的主键,可以唯一的标识记录,插入重复的会报错;
  • foreign key: 为表中的字段设置外键 ;
    • 语法:foreign key(当前表的列名) references 引用的外键表(外键表中字段名称)
  • unique key(uq):标识该字段的值是唯一的 ;
  • auto_increment:标识该字段的值自动增长(整数类型,而且为主键);
    • 自增长列当前值存储在内存中,数据库每次重启之后,会查询当前表中自增列的最大值作为当前值,如 果表数据被清空之后,数据库重启了,自增列的值从初始值开始
-- 修改表名
alter table 表名 rename [to] 新表名;
alter table mysql_learn rename to mysql_learn111;
-- 修改表备注
alter table 表名 comment '备注信息';
alter table mysql_learn comment '测试表备注修改'; 
-- 删除表
drop table [if exists] 表名;
drop table mysql_learn111;
-- 复制表(仅结构)
create table 表名 like 被复制的表名;
create table mysql_learn like sys_menu;
-- 复制表(结构和数据)
create table 表名 [as] select 字段,... from 被复制的表 [where 条件];
create table mysql_copy as select * from sys_user;

列的管理

-- 添加列
alter table 表名 add column 列名 类型 [列约束];
alter table mysql_learn add column `new_row` varchar(10) not null default '' comment '新增列';
-- 修改列(不可改列名)
alter table 表名 modify column 列名 新类型 [约束];
alter table mysql_learn modify column `new_row`  int(11) not null ;
-- 修改列(该列名)
alter table 表名 change column 列名 新列名 新类型 [约束];
alter table mysql_learn change column `new_row` `new_row2` int(11) not null ;
-- 删除列
alter table 表名 drop column 列名;
alter table mysql_learn drop column `new_row2`;