当前位置: 首页 > news >正文

MySQL 语法教程

MySQL 语法教程

目录

  1. 简介
  2. 数据库操作
    • 创建数据库
    • 删除数据库
  3. 表操作
    • 创建表
    • 删除表
    • 查看表结构
  4. 数据操作
    • 插入数据
    • 查询数据
    • 更新数据
    • 删除数据
  5. 约束与索引
    • 主键约束
    • 外键约束
    • 唯一约束
    • 创建索引
    • 删除索引
  6. 视图
    • 创建视图
    • 删除视图
  7. 存储过程与函数
    • 创建存储过程
    • 创建函数
    • 删除存储过程与函数
  8. 触发器
    • 创建触发器
    • 删除触发器
  9. 事务处理
    • 启动事务
    • 提交事务
    • 回滚事务

简介

MySQL 是一种关系型数据库管理系统,用于存储、管理和检索数据。它使用结构化查询语言(SQL)来执行数据库操作。以下是 MySQL 中常用的语法和操作。

数据库操作

创建数据库

CREATE DATABASE database_name;

删除数据库

DROP DATABASE database_name;

表操作

创建表

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

示例:

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT,department VARCHAR(50)
);

删除表

DROP TABLE table_name;

查看表结构

DESCRIBE table_name;

数据操作

插入数据

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

示例:

INSERT INTO employees (name, age, department)
VALUES ('Alice', 30, 'HR');

查询数据

SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column
LIMIT number;

示例:

SELECT name, age
FROM employees
WHERE age > 25
ORDER BY age DESC;

更新数据

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

示例:

UPDATE employees
SET age = 31
WHERE name = 'Alice';

删除数据

DELETE FROM table_name
WHERE condition;

示例:

DELETE FROM employees
WHERE name = 'Alice';

约束与索引

主键约束

CREATE TABLE table_name (column1 datatype PRIMARY KEY,...
);

示例:

CREATE TABLE departments (id INT PRIMARY KEY,name VARCHAR(50) NOT NULL
);

外键约束

CREATE TABLE table_name (column1 datatype,column2 datatype,FOREIGN KEY (column1) REFERENCES other_table(column)
);

示例:

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT,department_id INT,FOREIGN KEY (department_id) REFERENCES departments(id)
);

唯一约束

CREATE TABLE table_name (column1 datatype UNIQUE,...
);

示例:

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) UNIQUE,password VARCHAR(100)
);

创建索引

CREATE INDEX index_name
ON table_name (column);

示例:

CREATE INDEX idx_department
ON employees (department);

删除索引

DROP INDEX index_name
ON table_name;

视图

创建视图

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

示例:

CREATE VIEW employee_view AS
SELECT name, age, department
FROM employees
WHERE age > 25;

删除视图

DROP VIEW view_name;

存储过程与函数

创建存储过程

DELIMITER //
CREATE PROCEDURE procedure_name (IN param1 datatype, OUT param2 datatype)
BEGIN-- 过程逻辑
END //
DELIMITER ;

示例:

DELIMITER //
CREATE PROCEDURE GetEmployeeCount (OUT count INT)
BEGINSELECT COUNT(*) INTO count FROM employees;
END //
DELIMITER ;

创建函数

DELIMITER //
CREATE FUNCTION function_name (param datatype)
RETURNS datatype
BEGIN-- 函数逻辑RETURN value;
END //
DELIMITER ;

示例:

DELIMITER //
CREATE FUNCTION GetEmployeeAge (emp_name VARCHAR(100))
RETURNS INT
BEGINDECLARE emp_age INT;SELECT age INTO emp_age FROM employees WHERE name = emp_name;RETURN emp_age;
END //
DELIMITER ;

删除存储过程与函数

DROP PROCEDURE procedure_name;
DROP FUNCTION function_name;

触发器

创建触发器

CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON table_name
FOR EACH ROW
BEGIN-- 触发器逻辑
END;

示例:

CREATE TRIGGER before_employee_insert
BEFORE INSERT
ON employees
FOR EACH ROW
BEGINSET NEW.age = IFNULL(NEW.age, 30);
END;

删除触发器

DROP TRIGGER trigger_name;

事务处理

启动事务

START TRANSACTION;

提交事务

COMMIT;

回滚事务

ROLLBACK;

以上就是详细的 MySQL 语法教程,涵盖了从数据库、表操作到高级操作和事务处理的各个方面。希望对您有所帮助。

相关文章:

  • 【SCAU操作系统】期末复习简答及计算题例题解析
  • Spring Boot与微服务治理框架的集成方法
  • 【ARM】MCU和SOC的区别
  • python将多个文件夹里面的文件拷贝到一个文件夹中
  • 【云原生监控】Prometheus 普罗米修斯从搭建到使用详解
  • C# 特性 Attribute 反射 Reflection 元数据 Metadata
  • Jdk17是否有可能代替 Jdk8
  • 你想活出怎样的人生?
  • 使用Python进行文件属性修改
  • UE4_材质_材质节点_DepthFade
  • 【CUDA】 归约 Reduction
  • 电通出席2024年世界经济论坛(WEF),重申推动可持续发展创新和人才培育的承诺
  • 永劫无间国服延迟高、报错、卡顿的处理措施一览
  • 51单片机第21步_将TIM0用作两个8位定时器同时将TIM1用作波特率发生器
  • 【SPIE独立出版】第四届智能交通系统与智慧城市国际学术会议(ITSSC 2024)
  • 分享的文章《人生如棋》
  • 【刷算法】从上往下打印二叉树
  • 〔开发系列〕一次关于小程序开发的深度总结
  • co模块的前端实现
  • Hibernate【inverse和cascade属性】知识要点
  • markdown编辑器简评
  • nodejs:开发并发布一个nodejs包
  • springMvc学习笔记(2)
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • text-decoration与color属性
  • vue 配置sass、scss全局变量
  • 将回调地狱按在地上摩擦的Promise
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • ​Python 3 新特性:类型注解
  • ​如何防止网络攻击?
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Matlab)使用竞争神经网络实现数据聚类
  • (pojstep1.3.1)1017(构造法模拟)
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (算法二)滑动窗口
  • (轉貼) UML中文FAQ (OO) (UML)
  • .dwp和.webpart的区别
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Core 版本不支持的问题
  • .net framework profiles /.net framework 配置
  • .NET 读取 JSON格式的数据
  • .NET 快速重构概要1
  • .NetCore项目nginx发布
  • .NET使用存储过程实现对数据库的增删改查
  • @ComponentScan比较
  • @Data注解的作用
  • @RequestMapping处理请求异常
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [2024-06]-[大模型]-[Ollama]- WebUI
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [bzoj2957]楼房重建
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]
  • [Golang]K-V存储引擎的学习 从零实现 (RoseDB mini版本)