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

MQSQL笔记二——非操控数据操作

表操作

创建表

CREATE TABLE 表名(列名 类型 要求(NOT NULL等),PRIMARY KEY(列名)
)

AUTO_INCREMENT 在没有指定数值时自动增加,一般设置在id上,

CREATE TABLE 表名(列名 类型 AUTO_INCREMENT,PRIMARY KEY(列名)
)

每个表只能有1个列写AUTO_INCREMENT,该列必须为索引

设置默认值DEFAULT 值

CREATE TABLE 表名(列名 类型 AUTO_INCREMENT,列名2 类型 NOT NULL DEFAULT 1,PRIMARY KEY(列名)
)

修改表

-- 增加1列
ALTER TABLE 表名
ADD 列名 类型;-- 删除1列
ALTER TABLE 表名
DROP COLUMN 列名;

另一个常用用途——定义外键

ALTER TABLE 要添加外键的表名
ADD CONSTRAINT 约束名称
FOREIGN KEY (添加外键的列名) 
REFERENCES 主表名 (主表被引用列)
[ON DELETE 操作] [ON UPDATE 操作];
  • CONSTRAINT 约束名称:外键约束的名称(建议命名为 fk_子表名_主表名 格式,如 fk_orders_customer),用于后续管理(如删除约束)。
  • FOREIGN KEY (子表外键列):子表中用于关联的列(需与主表被引用列数据类型一致)。
  • REFERENCES 主表名 (主表被引用列):指向主表的主键或唯一键列(必须已存在且有唯一性约束)。
  • ON DELETE/UPDATE(可选):定义主表数据删除 / 更新时,子表的联动行为(如 CASCADE 级联删除、RESTRICT 拒绝操作等)。

删除表

DROP TABLE 表名;-- 修改表名
RENAME TABLE a TO b;

视图

类似于封装宏定义宏操作。把某一条件的SQL封装成一个虚拟表。

  • 复用sql
  • 简化sql
  • 保护数据,设置权限
CREATE VIEW	视图名 AS SELECT
DROP VIEW 视图名

存储过程

相当于数据库中创建、使用函数

  • 适合使用:需要强事务性、高频重复执行、跨多表复杂操作的场景(如金融、传统企业信息化系统)。
  • 谨慎使用:互联网高并发、需要快速迭代或可能跨数据库的系统。
-- 执行
CALL productpricing(@pricelow,@pricehigh,@priceaverage);-- 建立存储过程
CREATE PROCEDURE productpricing()
BEGINSELECT ...
END;
-- 调用
CALL productpricing();-- 删除
DROP PROCEDURE productpricing;

在这里插入图片描述

游标

能够对检索出来的结果 前进一行、后退一行等操作

CREATE PROCEDURE processorders()
BEGINDECLARE ordernumbers CURSORFORSELECT order_num FROM orders;
END;OPEN ordernumber;CLOSE ordernumbers;-- close或在end之前可以使用fetch访问
FETCH ordernumbers INTO o;

触发器

在时间发生时自动执行的 语句,以下是支持的事件

DELETE
INSERT
UPDATE

-- 创建时显示打印
CREATE TRIGGER 触发器名 AFTER INSERT ON 表名
FOR EACH ROW SELECT 'Product add';
-- 删除
DROP TRIGGER 触发器名;

也能够使用BEFORE 等控制触发时机,不过多解释。

管理事务处理

几个术语:

事务:一组SQL语句
回退:撤销知道SQL语句的过程
提交:将为存储的SQL语句结果写入数据表
保留点:设置的临时占位符,可以对它发布回退

事务开始START TRANSACTION

回滚

SELECT * FROM ordertotals;
START TANSACTION;
DELETE FROM ordertotals;
ROLLBACK;
SELECT * FROM ordertotals;

提交(只有事务内都成功提交才会成功)

START TRANSACTION;
DELETE FROM XXX WHERE xx=xx;
DELETE FROM XXX WHERE xx2=xx2;
COMMIT;

保留点SAVEPOINT xx1

ROLLBACK TO xx1

事务的特性:ACID 原子、一致、隔离、持久

权限控制

调试中会使用root账号进行控制,但在实际应用不可以。

应该创建多个用户区分权限

MySQL中用户存在mysql表中

USE mysql;
SELECT user FROM user;

创建用户 CREATE USER xxx IDENTIFIED BY '密码';

重命名 RENAME USER xxx TO bforta;

删除DROP USER xxx;

赋予权限GRANT SELECT ON 表名.* TO 用户名

取消权限REVOKE SELECT ON XXX.* TO 用户名

修改用户密码:SET PASSWORD FOR 用户 = Password('密码')

改善性能

最简单的3方面:

1、加索引:在常用的列上增加,检查索引是否正常生效
2、优化SQL本身:不使用SELECT *,使用正确的条件连接还是交集并集
3、查看数据库本身:表中数据是否超2千万条分表,硬件功能。

http://www.dtcms.com/a/207930.html

相关文章:

  • esp32-idf框架学习笔记/教程
  • 甘特图实例 dhtmlxGantt.js
  • 前端状态管理介绍(React状态管理)(通过管理状态来控制UI的呈现,确保数据的一致性和可维护性)(界面与数据分离、可预测性、组件化、响应式更新)
  • table表格鼠标圈选数据并复制且自带html结构
  • React从基础入门到高级实战:React 基础入门 - JSX与组件基础
  • JAVA查漏补缺(2)
  • Ubuntu 上进行树莓派交叉编译
  • 跨域解决方案之JSONP
  • SQL实战之索引失效案例详解
  • 【机械视觉】Halcon—【二、Halcon算子全面介绍(超详细版)】
  • 基于Java(GUI)实现五子棋
  • 【ARM/RISCV 嵌入式 编译系列 16 -- GCC 进制优化编译的常用方法】
  • SQL进阶之旅 Day 1:高效表设计与规范
  • leetcode-快慢指针系列
  • FFTW图像处理之频域滤波和频域分析
  • 2025语音语聊系统源码开发深度解析:WebRTC与AI降噪技术如何重塑语音社交体验
  • 苍穹外卖07 缓存菜品缓存套餐 添加购物车
  • 电脑风扇转速不正常的原因
  • Python、PyTorch、TensorFlow和飞桨(PaddlePaddle)的核心介绍及对比
  • EtherNet IP到modbus TCP网关完成AGV系统的安全解决方案及应用
  • Day34 Python打卡训练营
  • 关于千兆网络变压器的详细介绍
  • 03 基于 java udp 做一个dns服务器 和 一个dns代理服务器
  • 【ISP算法精粹】ISP算法管线的预处理算法有哪些?
  • 新能源汽车滑行阻力参数计算全解析:从理论推导到MATLAB工具实现
  • 深度学习中的分布偏移问题及其解决方法
  • LeetCode Hot100(字串)
  • 在 Ubuntu 虚拟机中实现 HTML 表单与 C 语言 HTTP 服务器交互
  • 前后端联调实战指南:Axios拦截器、CORS与JWT身份验证全解析
  • WPF骨架屏控件(Skeleton)