MySQL 语法指南

前言

这篇文章是 SQL 语法速查篇,它记录了一些常用的语法,并非所有的语法。我将语法分为了一下三个章节:

目录

数据库操作篇(这里描述的是对数据库的操作)

数据表操作篇(这里描述的是对数据表的操作,而非数据的操作)

数据操作篇(这里是对表中数据的操作)


数据库操作篇

        见名知意,这个对数据库的操作语法的概述,它包含了:如何创建/删除数据库,如何查看所有的数据库,如何选择数据库,如何备份数据库。

创建数据库

## 语法:
CREATE DATABASE `[数据库名]`;

## 例子:
CREATE DATABASE `School`;

删除数据库

## 语法:
DROP DATABASE `[数据库名]`;

## 例子:
DROP DATABASE `School`;

修改数据库

MySQL 是不支持修改数据库名称的,如果需要修改数据库名称,一般的做法是创建一个新数据库,然后将旧数据库中的所有表复制到新数据库,最后删除旧数据库。

选择数据库

## 语法:
USE `[数据库名]`;

## 例子:
USE `School`;

备份数据库

注意:备份数据库通常使用 mysqldump 工具:

语法:
mysqldump -u [username] -p[password] [数据库名] > [备份文件名].sql

例子:
mysqldump -u root -proot school > school_backup.sql

恢复数据库

注意:恢复数据库通常使用 mysql 工具:

## 语法:
mysql -u [username] -p[password] [数据库名] < [备份文件名].sql

## 例子:
mysql -u root -proot school < school_backup.sql

显示数据库的创建语句

## 语法:
SHOW CREATE DATABASE `[数据库名]`;


## 例子:
SHOW CREATE DATABASE `School`;

显示数据库状态

## 语法:
SHOW DATABASE STATUS LIKE '[数据库名]';

## 例子:
SHOW DATABASE STATUS LIKE 'School';

更改数据库的字符集和排序规则

语法:
ALTER DATABASE `[数据库名]` CHARACTER SET `[字符集名]` COLLATE `[排序规则]`;

例子:
ALTER DATABASE `School` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

数据表操作篇

创建数据库

语法:
CREATE TABLE `表名`(
    `列名` 数据类型,
    `列名` 数据类型,
    ...
);

例子:
CREATE TABLE `student`(
    `id` INT,
    `name` VARCHAR(20)
);

添加列

语法:
ALTER TABLE `表名` ADD `列名` 数据类型;

例子:
ALTER TABLE `student` ADD `age` INT;

扩展语法 - 添加多列:
ALTER TABLE `表名` 
    ADD `列名` 数据类型,
    ADD `列名` 数据类型

修改列的数据类型

语法:
ALTER TABLE `表名` MODIFY COLUMN `列名` 数据类型;

例子:
ALTER TABLE `student` MODIFY COLUMN `name` varchar(150);

扩展语法 - 修改多列数据类型:
ALTER TABLE `表名` 
    MODIFY COLUMN `列名` 数据类型,
    MODIFY COLUMN `列名` 数据类型

修改列名

## 注意:此语法也可以用作对表中字段数据类型的修改。
语法:
ALTER TABLE `表名` CHANGE COLUMN `列名` 数据类型;

例子:
ALTER TABLE `student` CHANGE  COLUMN `name` varchar(150);

扩展语法 - 修改多列表名:
ALTER TABLE `表名` 
    CHANGE COLUMN `列名` 数据类型,
    CHANGE COLUMN `列名` 数据类型

删除列

语法:
ALTER TABLE `表名` DROP COLUMN `列名`;

例子:
ALTER TABLE `student` DROP COLUMN `gender`;


扩展语法 - 删除多列:
ALTER TABLE `表名` 
    DROP COLUMN `列名` 数据类型,
    DROP COLUMN `列名` 数据类型

查看数据表创建语句

语法:
SHOW CREATE TABLE `表名`;

例子:
SHOW CREATE TABLE `student`;

设置主键

语法:
ALTER TABLE `表名`
ADD CONSTRAINT `主键约束名` PRIMARY KEY (`主键`);

例子:
ALTER TABLE `student`
ADD CONSTRAINT `student_pk`  PRIMARY KEY (`id`);


## 当然你也可以在创建表时就指定好主键,如下
CREATE TABLE student (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL
);

删除主键

语法:
ALTER TABLE `表名` DROP PRIMARY KEY;

例子:
ALTER TABLE `student` DROP PRIMARY KEY;

 设置外键

语法:
ALTER TABLE `表名`
ADD CONSTRAINT `外键约束名` 
FOREIGN KEY (`本表的外键列名`) REFERENCES `引用表`(`引用表的主键列名`);

数据操作篇

添加数据

如果表中有自增(AUTO_INCREMENT)的主键列,通常情况下,不需要为该列指定值,数据库会自动分配唯一的主键值

语法:
INSERT INTO 表名 (列1, 列2, 列3, ...)
    VALUES (值1, 值2, 值3, ...);

案例:
INSERT INTO employees (id, name, hire_date, salary)
    VALUES (1, 'John', '2023-01-15', 50000);


## 扩展添加多条数据
INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES
    (值1, 值2, 值3, ...),
    (值1, 值2, 值3, ...)
    ...;

删除数据

语法:
DELETE FROM `表名` WHERE 条件;

例子:
DELETE FROM `stundet` WHERE age < 18;


## 扩展 - 删除所有数据 - 【谨慎使用】
DELETE FROM `表名`

修改数据

语法:
UPDATE `表名`
    SET `列1` = `新值1`, `列2` = `新值2`, ...
    WHERE 条件;

案例:
UPDATE `student`
    SET `name` = `李白`, `age` = `22`
    WHERE id = 01;


## 扩展 - 更改所有行 - 【谨慎使用】
UPDATE `表名`
    SET `列1` = `新值1`, `列2` = `新值2`, ...

 查询所有数据

语法:
SELECT *  FROM `表名`

案例:
SELECT *  FROM `studnet`

查询指定列

语法:
SELECT `列名1`, `列名2`, ...  FROM `表名`

案例:
SELECT `name`,`gender` FROM `studnet`

按条件查询数据

语法:
SELECT *  FROM `表名` WHERE 条件

案例:
SELECT *  FROM `studnet` WGERE `age` > 18

查询并排序

## ASC(升序) DESC(降序)
语法:
SELECT *  FROM `表名` WHERE 条件 
    ORDER BY `列名` ASC|DESC

案例:
SELECT `name`,`age`  FROM `studnet` WGERE `age` > 18
    ORDER BY `age` ASC

查询前几条

语法:
SELECT *  FROM `表名` WHERE 条件
    LIMIT 数量;

案例:
SELECT *  FROM `studnet` WGERE `age` > 18
    LIMIT 10;

 多表查询

语法:
SELECT `列1`, `列2`, ...
    FROM `表1`
    JOIN `表2` ON `表1`.`关联列` = `表2`.`关联列`;

例子:
SELECT orders.order_id, orders.order_date, customers.customer_name
    FROM orders
    INNER JOIN customers ON orders.customer_id = customers.customer_id;


## 扩展 左连接 和 右连接

## 左连接:返回表1的所有列
SELECT `列1`, `列2`, ...
    FROM `表1`
    LEFT JOIN `表2` ON `表1`.`关联列` = `表2`.`关联列`;

## 右连接:返回表2的所有列
SELECT `列1`, `列2`, ...
    FROM `表1`
    RIGHT JOIN `表2` ON `表1`.`关联列` = `表2`.`关联列`;

子查询

语法:
SELECT 列1, 列2, ...
FROM 表名
WHERE 列1 = (SELECT 列名 FROM 子查询表 WHERE 条件);

例子:
SELECT first_name, last_name, department_id
FROM employees
WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'IT');

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值