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

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.xdnf.cn/news/8248.html

相关文章:

  • 【Python】Python 装饰器的用法总结
  • 聚铭安全管家平台2.0重磅发布——大模型智驱高效降本新方向
  • 基于OpenLCA、GREET、R语言的生命周期评价方法、模型构建及典型案例应用
  • LVGL(lv_span富文本控件)
  • Ubuntu 25.04 锁屏不能远程连接的解决方案
  • JavaScript闭包
  • 数据保护与通讯安全
  • 【论文精读】2023 CVPRW--EAVSR现实世界视频超分辨率(RealWorld VSR)
  • 【Go】1、Go语言基础
  • LeRobot 框架的开发指南 (下)
  • react native搭建项目
  • 计算机操作系统(十二)详细讲解调计算机操作系统调度算法与多处理机调度
  • 设计模式系列(05):工厂方法模式(Factory Method)
  • 量化研究---bigquant策略交易api研究
  • 清华大学:基于生成模型的上肢外骨骼机器人助力个性化中风康复
  • 【菜狗work前端】小程序加if判断时不及时刷新 vs Web
  • Spring源码编译
  • 数学建模day01
  • 【AI测试革命】第七期:AI性能测试的深度实践——从智能建模到自动化调优的全链路升级
  • 力扣-最大连续一的个数
  • == 和 equals 的区别
  • 汽车充电桩专用ASCP210系列电气防火限流式保护器
  • 2025年河北省职业院校技能大赛“网络空间安全技能大赛”赛项样题A
  • 软考 UML中的 用例图 的泛化 包含 扩展 关系
  • 院校机试刷题第九天:P1042乒乓球、回顾代码随想录第二天
  • NBA足球赛事直播源码体育直播M35模板赛事源码
  • 智能办公协同系统开发日志(三):画板模块设计与实现全记录
  • windows 删除文件夹提示“操作无法完成,因为其中的文件夹或文件已在另一程序中打开”
  • Git命令汇总(自用,持续更新update 5/23)
  • Python绘制新冠疫情的知识图谱