Mysql基础操作-常见SQL语句

server/2024/9/24 4:10:05/

背景知识

SQL语句分类

  • 数据定义语言 (Data Definition Language, DDL)

这类语句用于定义数据库结构,包括创建、修改和删除数据库对象如表、索引、视图等。

  • 数据操纵语言 (Data Manipulation Language, DML)

这类语句用于添加、读取、更新和删除数据。

  • 数据查询语言 (Data Query Language, DQL)

这类语句主要用于检索数据,通常指的是 SELECT 语句。

  • 事务控制语言 (Transaction Control Language, TCL)

这类语句用于管理事务,确保数据的一致性和完整性。

  • 数据控制语言 (Data Control Language, DCL)

这类语句用于管理数据库用户的权限。

sql>mysql_DDL_13">一、sql>mysql 常见DDL语句

1. CREATE DATABASE

用于创建新的数据库。

sql">CREATE DATABASE database_name;

2. USE

选择要使用的数据库。

sql">USE database_name;

3. CREATE TABLE

用于创建新的表。

sql">CREATE TABLE table_name (column1 datatype constraints,column2 datatype constraints,...
);

4. ALTER TABLE

用于修改现有的表结构。

添加列
sql">ALTER TABLE table_name
ADD column_name datatype constraints;
修改列
sql">ALTER TABLE table_name
MODIFY column_name datatype constraints;
删除列
sql">ALTER TABLE table_name
DROP COLUMN column_name;
重命名列
sql">ALTER TABLE table_name
CHANGE old_column_name new_column_name datatype constraints;
添加约束
sql">ALTER TABLE table_name
ADD CONSTRAINT constraint_name constraint_definition;
删除约束
sql">ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

5. DROP TABLE

用于删除表。

sql">DROP TABLE table_name;

6. TRUNCATE TABLE

用于清空表中的所有数据。

sql">TRUNCATE TABLE table_name;

7. CREATE INDEX

用于创建索引。

sql">CREATE INDEX index_name
ON table_name (column_name);

8. DROP INDEX

用于删除索引。

sql">DROP INDEX index_name ON table_name;

9. CREATE VIEW

用于创建视图。

sql">CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

10. DROP VIEW

用于删除视图。

sql">DROP VIEW view_name;

11. CREATE PROCEDURE

用于创建存储过程。

sql">CREATE PROCEDURE procedure_name (IN param1 datatype, ...)
BEGIN-- SQL statements
END;

12. DROP PROCEDURE

用于删除存储过程。

sql">DROP PROCEDURE procedure_name;

sql>mysql_DML_112">二、sql>mysql 常见DML语句

1. INSERT

用于向表中插入新记录。

插入单行数据
sql">INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
插入多行数据
sql">INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...),(value1, value2, ...),...;

2. SELECT

用于从表中检索数据。

选择所有列
sql">SELECT * FROM table_name;
选择指定列
sql">SELECT column1, column2, ... FROM table_name;
带条件的选择
sql">SELECT column1, column2, ... FROM table_name
WHERE condition;

3. UPDATE

用于更新表中的现有记录。

更新单行或多行数据
sql">UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

4. DELETE

用于从表中删除记录。

删除单行或多行数据
sql">DELETE FROM table_name
WHERE condition;

示例

假设我们有一个名为 employees 的表,包含以下列:id, first_name, last_name, email, hire_date

插入数据
sql">INSERT INTO employees (first_name, last_name, email, hire_date)
VALUES ('John', 'Doe', 'john.doe@example.com', '2020-01-01'),('Jane', 'Smith', 'jane.smith@example.com', '2020-02-01');
选择数据
sql">SELECT * FROM employees;
更新数据
sql">UPDATE employees
SET email = 'new.email@example.com'
WHERE id = 1;
删除数据
sql">DELETE FROM employees
WHERE id = 2;

sql>mysql_DQL_189">三、sql>mysql 常见DQL语句

1. 基础查询

选择所有列:

sql">SELECT * FROM table_name;

选择特定列:

sql">SELECT column1, column2 FROM table_name;

2. 条件过滤

使用 WHERE 子句:

sql">SELECT * FROM table_name WHERE condition;

其中 condition 是一个逻辑表达式,例如 column_name = 'value'

3. 排序结果

使用 ORDER BY 子句:

sql">SELECT * FROM table_name ORDER BY column_name [ASC|DESC];

其中 [ASC|DESC] 指定排序方向,默认为 ASC(升序)。

4. 分组结果

使用 GROUP BY 子句:

sql">SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1;

aggregate_function 可以是 COUNT(), SUM(), AVG(), MIN(), MAX() 等。

5. 过滤分组结果

使用 HAVING 子句:

sql">SELECT column1, COUNT(column2) FROM table_name GROUP BY column1 HAVING COUNT(column2) > 5;

HAVING 子句与 GROUP BY 结合使用,用于过滤分组后的结果。

6. 连接表

使用 JOIN:

sql">SELECT t1.column1, t2.column2
FROM table1 t1
INNER JOIN table2 t2 ON t1.common_column = t2.common_column;

这里使用了 INNER JOIN,还有 LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 等其他类型的连接。

7. 子查询

作为 WHERE 子句的一部分:

sql">SELECT * FROM table1 WHERE column1 IN (SELECT column2 FROM table2);

这里的子查询 (SELECT column2 FROM table2) 作为 WHERE 子句的一部分使用。

8. 使用 LIMIT 和 OFFSET

限制返回的行数:

sql">SELECT * FROM table_name LIMIT number_of_rows;

如果需要跳过某些行再开始限制,可以使用 OFFSET:

sql">SELECT * FROM table_name LIMIT offset, number_of_rows;

sql>mysqlTCL_252">sql>mysql常见TCL语句

1. BEGIN / START TRANSACTION

用于开始一个新的事务。

开始事务
sql">START TRANSACTION;

或者

sql">BEGIN;

2. COMMIT

用于提交当前事务中的所有更改。

提交事务
sql">COMMIT;

3. ROLLBACK

用于撤销当前事务中的所有更改。

回滚事务
sql">ROLLBACK;

4. SAVEPOINT

用于设置保存点,可以在之后回滚到这个保存点。

设置保存点
sql">SAVEPOINT savepoint_name;
回滚到保存点
sql">ROLLBACK TO SAVEPOINT savepoint_name;
释放保存点
sql">RELEASE SAVEPOINT savepoint_name;

sql>mysqlDCL_290">五. sql>mysql常见DCL语句

1. GRANT

用于授予用户访问权限。

授予权限
sql">GRANT [权限1], [权限2], ... ON database.table TO 'username'@'host';

以下是可用的权限: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX, REFERENCES, TRIGGER, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, PROCESS, RELOAD, SHUTDOWN, SUPER, CREATE USER, AUDIT SYSTEM EVENTS, REPLICATION CLIENT, REPLICATION SLAVE, REPLICATION SLAVE ADMIN, REPLICATION SLAVE CONNECTION_ADMIN, REPLICATION SLAVE RESTART_ADMIN, REPLICATION SLAVE SQL_ADMIN, REPLICATION SLAVE USER_ADMIN, REPLICATION SLAVE X_ADMIN, REPLICATION SLAVE X_USER_ADMIN, SSL, XADMIN, XUSER, LOCK TABLES, CREATE TEMPORARY TABLES, CREATE ROLE, DROP ROLE 等。

授予所有权限
sql">GRANT ALL PRIVILEGES ON database.* TO 'username'@'host';

2. REVOKE

用于撤销已授予的权限。

撤销权限
sql">REVOKE privilege1, privilege2, ... ON database.table FROM 'username'@'host';
撤销所有权限
sql">REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'username'@'host';

注意事项

  • GRANTREVOKE 语句中,用户名和主机名需要指定。例如 'new_user'@'localhost' 表示 new_user 用户只能从本地主机登录。
  • 如果需要授予全局权限(例如 CREATE USER, SHUTDOWN 等),可以省略 ON database.table 部分。
  • GRANT OPTION 特权允许被授予该特权的用户再次授予其他人相同的权限。

sql>mysql_318">六、sql>mysql数据类型

整型

  • TINYINT: 1 字节,范围 -1281270255(无符号)。
  • SMALLINT: 2 字节,范围 -3276832767065535(无符号)。
  • MEDIUMINT: 3 字节,范围 -83886088388607016777215(无符号)。
  • INT 或 INTEGER: 4 字节,范围 -2147483648214748364704294967295(无符号)。
  • BIGINT: 8 字节,范围 -92233720368547758089223372036854775807018446744073709551615(无符号)。

浮点型

  • FLOAT: 单精度浮点数,最多 7 位有效数字。
  • DOUBLE: 双精度浮点数,最多 15 位有效数字。
  • DECIMAL(M, D): 可变精度十进制数,M 是总位数,D 是小数点后的位数。

字符串类型

  • CHAR(M): 固定长度字符字符串,M 是字符的最大长度。
  • VARCHAR(M): 可变长度字符字符串,M 是字符的最大长度。
  • BINARY(M): 固定长度二进制字符串,M 是字节的最大长度。
  • VARBINARY(M): 可变长度二进制字符串,M 是字节的最大长度。
  • TEXT: 大文本字符串。
  • BLOB: 大二进制对象。
  • TINYTEXT: 较小的文本字符串。
  • TINYBLOB: 较小的二进制对象。
  • MEDIUMTEXT: 中等大小的文本字符串。
  • MEDIUMBLOB: 中等大小的二进制对象。
  • LONGTEXT: 非常大的文本字符串。
  • LONGBLOB: 非常大的二进制对象。
  • ENUM(‘value1’, ‘value2’, …): 枚举类型,只能从给定列表中选取一个值。
  • SET(‘value1’, ‘value2’, …): 集合类型,可以选取给定列表中的多个值。
日期/时间类型
  • DATE: 日期格式 YYYY-MM-DD
  • TIME: 时间格式 HH:MM:SS
  • YEAR: 年份格式 YYYYYY
  • DATETIME: 日期和时间格式 YYYY-MM-DD HH:MM:SS
  • TIMESTAMP: 日期和时间格式 YYYYMMDDHHMMSS,自动维护当前时间戳。
二进制/布尔类型
  • BIT(M): 二进制位字段,M 是位的最大长度。
  • BOOLEAN 或 BOOL: 布尔类型,可以是 TRUEFALSE

http://www.ppmy.cn/server/105789.html

相关文章

vue3+ts+Go使用百度地图路书实现历史轨迹回放、轨迹回放进度、聚合点、自定义弹框和实时监控视频、多路视频轮巡播放

前言 分享一个刚做完项目集成技术,一个车辆行驶轨迹监控、行车视频监控、对特种车辆安全监管平台,今年政府单位有很多监管平台项目,例如:渣土车监控、租出车监管、危害气体运输车监管等平台,这些平台都有车辆行驶轨迹…

python小游戏——躲避球(可当课设)

游戏简介: 没有美术,画面简洁(懒得做)。玩家控制小球躲避敌人(上下左右,闪避),敌人体积越大速度越慢,随机生成道具球(目前只有生命球)&#xff0…

【单片机】LCD1602和OLED里,如何实现滚动显示特效?

如何在OLED显示16个字符的同时实现滚动特效 1. 基本思路 滚动特效的核心思路是在一个固定长度的显示区域内,通过不断改变显示内容的起始位置,模拟出内容在屏幕上滚动的效果。我们可以使用一个定时器来周期性地更新显示内容,从而实现动态滚动。 2. 代码分析 以下是实现滚…

GRL CVPR2023图像修复 使用笔记

目录 github地址: 训练自己的数据教程: 网络学习: 损失函数: github地址: GitHub - ofsoundof/GRL-Image-Restoration 预训练模型,在release里面 如何使用代码: conda create -n Lightn…

前端宝典十:webpack性能优化最佳实践

Webpack 内置了很多功能。 通常你可用如下经验去判断如何配置 Webpack: 想让源文件加入到构建流程中去被 Webpack 控制,配置 entry;想自定义输出文件的位置和名称,配置 output;想自定义寻找依赖模块时的策略&#xff…

Milvus 安装、设置权限和使用

中文文档 使用了docker compose 安装 standalone 版本,即单机docker。 pymilvus 一直在升级,一些函数有变化,中文文档有落后,建议看英文文档。 安装 #下载docker-compose.yml 文件 wget https://github.com/milvus-io/milvus/re…

GitHub每日最火火火项目(8.25)

项目名称:goauthentik / authentik 项目介绍:authentik 是一个满足认证需求的工具,它就像是认证过程中的强力粘合剂。在各种复杂的系统环境和对安全性有高要求的应用场景中,它都能发挥重要作用。通过 authentik,可以实…

iLogtail 开源两周年:感恩遇见,畅想未来

早在上世纪 60 年代,早期的计算机(例如 ENIAC 和 IBM 的大型机)在操作过程中会输出一些基本的状态信息和错误报告,这些记录通常通过打印机输出到纸带或纸卡上,用于跟踪操作流程和调试,最早期的日志系统借此…