欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > MQSQL笔记二——非操控数据操作

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

2025/5/24 9:39:10 来源:https://blog.csdn.net/JJ1M8/article/details/148168406  浏览:    关键词: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千万条分表,硬件功能。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词