MySQL
文章平均质量分 51
for SQL language.
Onecat_j
记录才能提高。
展开
-
MySQL-事务
事务的作用MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务;事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行;事务用来管理 insert,update,delete 语句。事物的特性一般来说,事务是必须满足4个条件(A原创 2021-09-27 10:20:02 · 212 阅读 · 1 评论 -
MySQL-索引
索引的类型聚簇索引使⽤记录的主键值的大小进行记录和数据⻚的排序(页内、页间),叶⼦节点存储的是完整的⽤户记录。聚簇索引就是数据的存储方式。二级索引使⽤记录的非主键列值(指定列)的⼤⼩进⾏记录和⻚的排序(页内、页间),叶⼦节点存储的是列和对应主键值。联合索引本质上还是二级索引,但是有多个列共同排序决定大小。创建索引分为建表时创建和建表后创建,建表时创建直接在建表语句后声明索引,建表后创建用ALTER语句添加索引。主键索引ALTER TABLE table_name ADD PRIMAR原创 2021-09-27 09:52:35 · 392 阅读 · 0 评论 -
MySQL-HAVING语句
语法SELECT column1, column2, ... column_n, aggregate_function (expression)FROM tablesWHERE predicatesGROUP BY column1, column2, ... column_nHAVING condition1 ... condition_n;用法where、聚合函数、having 在from后面的执行顺序:where > 聚合函数(sum,min,max,avg,count) &g转载 2021-09-27 09:30:20 · 613 阅读 · 0 评论 -
MySQL-窗口函数&聚合函数
从salaries表中查询emp_no,salary,并根据emp_no字段升序累加salary作为running_total字段。最后的结果如下图所示:MySQL语句如下:SELECT emp_no,salary,SUM(salary) OVER(ORDER BY emp_no ASC) AS running_totalFROM salariesWHERE to_date = '9999-01-01';窗口函数窗口函数也称OLAP函数(online analytical processin原创 2021-09-26 09:53:50 · 671 阅读 · 0 评论 -
MySQL-case语句
btype=1,奖金是薪水的0.1倍;btype=2,奖金是薪水的0.2倍;其他情况奖金是薪水的0.3倍。(case btype when 1 then c.salary*0.1 when 2 then c.salary*0.2 else salary*0.3 end) bonus原创 2021-09-26 09:42:26 · 133 阅读 · 0 评论 -
MySQL-内连接、外连接和全连接
连接过程连接过程首先要确定第一个表,称为驱动表。驱动表上查询的每一条记录分别需要到被驱动表上查找符合过滤条件的记录。因此驱动表只需要访问一次,被驱动表可能需要访问多次。内连接对于内连接的两个表,驱动表中的记录在被驱动表中找不到匹配的记录,那么驱动表中的该记录不会加入到最后的结果集中。select <select list>from tableA Ainner join tableB Bon A.key=B.key;外连接对于外连接的两个表,驱动表中的记录即使在被驱动表中没有原创 2021-09-25 10:16:43 · 1686 阅读 · 0 评论 -
MySQL-limit
在使用数据库过程中,常会遇到查询或者导出某个数据表或者查询集的前几条或者后几条记录,LIMIT可以很好的满足需求。LIMIT基本语法:SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset;如果只给定一个参数,表示记录数。mysql> SELECT * FROM orange LIMIT 5; //检索前5条记录(1-5)相当于mysql> SELECT * from orange LIMIT 0,5;转载 2021-09-24 09:20:41 · 131 阅读 · 0 评论 -
MySQL-group_concat()
创建表格:CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));插入数据:INSERT INTO dept_emp VALUES(10001,'d001','1986-06-26','9999-01-01');INSERT原创 2021-09-24 09:18:05 · 140 阅读 · 0 评论 -
MySQL-修改表(ALTER)
常见的修改有:ALTER TABLE 表名 ADD 列名/索引/主键/外键等;ALTER TABLE 表名 DROP 列名/索引/主键/外键等;ALTER TABLE 表名 ALTER 仅用来改变某列的默认值;ALTER TABLE 表名 RENAME 列名/索引名 TO 新的列名/新索引名;ALTER TABLE 表名 RENAME TO/AS 新表名;ALTER TABLE 表名 MODIFY 列的定义但不改变列名;ALTER TABLE 表名 CHANGE 列名和定义都可以改变。官原创 2021-09-18 09:20:21 · 323 阅读 · 0 评论 -
MySQL-插入数据(insert into,replace into)
插入数据的方法mysql中常用的三种插入数据的语句:insert into:正常的插入数据,插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错;replace into:表示插入并替换数据,若表中有primary key或者unique索引,在插入数据的时候,若遇到重复的数据,则用新数据替换,如果没有数据效果则和insert into一样;insert ignore into:插入并忽略数据,如果中已经存在相同的记录,则忽略当前新数据(有则忽略,无则添加)。语法介绍insert i转载 2021-09-17 09:26:16 · 1214 阅读 · 0 评论 -
MySQL-创建触发器(trigger)
创建触发器在MySQL中,创建触发器语法如下:CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt其中:trigger_name:标识触发器名称,用户自行指定;trigger_time:标识触发时机,取值为 BEFORE 或 AFTER;trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE;tbl_name:标识建转载 2021-09-16 10:16:17 · 6207 阅读 · 0 评论 -
MySQL-强制索引
使用 sql 语句查询数据的时候,如果表里有好几个索引,mysql 优化器会自己判断使用哪个索引进行搜索。但是,where 条件比较复杂的时候,优化器使用的索引就不一定是最优索引了。例如,最近有个需求,查询 4 月份每个商家的微信、支付宝订单额,sql 语句如下:SELECT o.client_id, c.client_name, SUM(IF(o.pay_by IN(4, 5), o.money, 0)) AS m_alipay, SUM(IF(o.pay_by IN(转载 2021-09-15 09:09:07 · 4736 阅读 · 0 评论