Skip to content

MySQL

sh
mysql -h 127.0.0.1 -P 3306 -u root -p

1 SQL

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库、表、字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限

1.1 DDL

1.1.1 数据库操作

  • 查询
sql
-- 查询所有数据库(方法一)
SHOW DATABASES;

-- 查询所有数据库(方法二)
SHOW SCHEMAS;

-- 查询当前数据库
SELECT DATABASE();
  • 创建
sql
CREATE DATABASE IF NOT EXISTS dbname
    DEFAULT CHARSET utf8mb4
    COLLATE utf8mb4_0900_ai_ci;
  • 删除
sql
DROP DATABASE IF EXISTS dbname;
  • 使用
sql
USE dbname;

1.1.2 表操作

  • 查询当前数据库所有表
sql
SHOW TABLES;
  • 查询表结构
sql
DESC table_name;
  • 查询指定表的建表语句
sql
SHOW CREATE TABLE table_name;
  • 创建
sql
-- CREATE TABLE [IF NOT EXISTS] 表名 (
--     字段名1 字段类型1 [COMMENT "字段注释"],
--     字段名2 字段类型2 [COMMENT "字段注释"],
--     字段名3 字段类型3 [COMMENT "字段注释"],
--     ...
--     字段名n 字段类型n [COMMENT "字段注释"]
-- ) [COMMENT "表注释"];

CREATE TABLE IF NOT EXISTS tb_user (     
    `id`     INT              COMMENT "编号",
    `name`   VARCHAR(50)      COMMENT "姓名",
    `age`    TINYINT UNSIGNED COMMENT "年龄",
    `gender` CHAR(1)          COMMENT "性别"
) COMMENT "用户表";
  • 添加字段
sql
-- ALTER TABLE 表名 ADD 字段名 类型 [COMMENT "注释"] [约束];
ALTER TABLE tb_user ADD `nickname` VARCHAR(20) COMMENT "昵称";
  • 修改数据类型
sql
-- ALTER TABLE 表名 MODIFY 字段名 数据类型;
ALTER TABLE `tb_user` MODIFY `nickname` VARCHAR(32);
  • 修改字段名和字段类型
sql
-- ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型 [COMMENT "注释"] [约束];
ALTER TABLE `tb_user` CHANGE `nickname` `nick` VARCHAR(30) COMMENT "用户昵称";
  • 删除字段
sql
-- ALTER TABLE 表名 DROP 字段名;
ALTER TABLE `tb_user` DROP `nick`;
  • 修改表名
sql
-- ALTER TABLE 表名 RENAME TO 新表名;
ALTER TABLE `tb_user` RENAME TO `tbl_user`;
  • 删除表
sql
-- DROP TABLE [IF EXISTS] 表名;
DROP TABLE IF EXISTS `tbl_user`;
  • 删除指定表,并重新创建该表
sql
-- TRUNCATE TABLE 表名;
TRUNCATE TABLE `tbl_user`;

1.1.3 数据类型

数值类型:

类型大小
TINYINT1 byte
SMALLINT2 bytes
MEDIUMINT3 bytes
INTINTEGER4 byte
BIGINT8 byte
FLOAT4 byte
DOUBLE8 byte
DECIMAL

字符串类型:CHARVARCHARTINYBLOBTINYTEXTBLOBTEXTMEDIUMBLOBMEDIUMTEXTLONGBLOBLONGTEXT

日期类型:

类型大小格式
DATE3 bytesYYYY-MM-DD
TIME3 bytesHH:MM:SS
YEAR1 byteYYYY
DATETIME8 bytesYYYY-MM-DD HH:MM:SS
TIMESTAMP4 bytesYYYY-MM-DD HH:MM:SS

1.2 DML

1.2.1 添加数据

  • 给指定字段添加数据
sql
-- INSERT INTO 表名(字段1, 字段2, ...) VALUES (值1, 值2, ...);
INSERT INTO `tb_employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `entrydate`)
VALUES (1, "1", "zhh", "男", 10, "12345678901234567X", "2001-03-16");
  • 给全部字段添加数据
sql
-- INSERT INTO 表名 VALUES (值1, 值2, ...);
INSERT INTO `tb_employee`
VALUES (2, "2", "zs", "男", 9, "123456789012345678", "2000-01-02");
  • 批量添加数据
sql
-- INSERT INTO 表名(字段1, 字段2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...);
-- INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);
INSERT INTO `tb_employee`
VALUES (3, "3", "ls", "女", 11, "123456789012345677", "2000-01-03"),
       (4, "4", "ww", "男", 44, "123456789012345674", "2004-04-04");
  • 修改数据
sql
-- UPDATE 表名 SET 字段名1=值1, 字段名2=值2, ... [WHERE 条件];
UPDATE `tb_employee`
SET `name` = "Howard"
WHERE `id` = 1;
  • 删除数据
sql
-- DELETE FROM 表名 [WHERE 条件];
DELETE
FROM `tb_employee`
WHERE `id` = 2;

1.3 DQL

1.4 DCL