分类目录归档:技术栈

MySQL COUNT


COUNT

COUNT(*) = COUNT(1) > COUNT(字段)

尽量使用COUNT(*),当然如果你要统计的是就是某个字段的非空数据行数,那另当别论。
尽量在数据表上建立二级索引,系统会自动采用key_len小的二级索引进行扫描。

Read more

MySQL SELECT 查询


WHERE 条件过滤

比较运算符

含义 运算符
等于 =
不等于 <>或 !=
小于 <
小于等于(不大于) <= 或 !>
大于 >
大于等于(不小于) >= 或 !<
不小于 !<
在指定的两个数值之间 BETWEEN
为空值 IS NULL

逻辑运算符

含义 运算符
并且 AND
或者 OR
在指定范围内 IN
非(否定) NOT

通配符

含义 运算符
匹配任意字符串出现任意次数 %
匹配单个字符 -

eg1:

SELECT nam

Read more

MySQL DDL


DDL

下面列举了常见的 DDL 建表、修改表结构的语句

CREATE DATABASE IF NOT EXISTS nba;

USE nba;

DROP TABLE IF EXISTS player;
CREATE TABLE player (
 `player_id` INT(11) NOT NULL AUTO_INCREMENT,
 `team_id` INT(11) NOT NULL,
 `player_name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
 `height` fl

Read more

MySQL 函数


SQL 函数

算术处理、字符串处理、日期处理、数据类型转换

算术处理

SELECT ABS(-2);
SELECT MOD(101,3);
SELECT ROUND(37.25,1);

字符串处理

SELECT CONCAT('abc', 123);
SELECT LENGTH('你好');
SELECT CHAR_LENGTH('你好');
SELECT LOWER('ABC');
SELECT UPPER('abc');
SELECT REPLACE('fabcd', 'abc'

Read more

MySQL 索引


索引

需要创建索引的情况

1、 字段值唯一
2、 Where条件
3、 Group by 和order by
4、 Update、delete的where条件
5、 Distinct字段
6、 多表join操作时,表尽量不超过3个,对where条件创建索引,对连接的字段创建索引且类型一致
7、 多个单列索引在多条件查询时只会生效一个索引(MySQL 会选择其中一个限制最严格的作为索引),所以在多条件联合查询的时候最好创建联合索引。

不需要创建索引的情况

1、 WHERE 条件(包括 GROUP BY、ORDER BY)里用不到的字段不需要创建索引
2、 如果表记录太少,比如少于 100

Read more

MySQL 视图


视图

-- 创建
CREATE VIEW view_name AS
SELECT column1, column2
FROM table
WHERE condition

-- 修改
ALTER VIEW view_name AS
SELECT column1, column2
FROM table
WHERE condition

-- 删除
DROP VIEW view_name

Read more

MySQL 连接


SQL92 连接

笛卡尔积

笛卡尔乘积是一个数学运算。假设我有两个集合X和Y,那么X和Y的笛卡尔积就是X和Y的所有可能组合,也就是第一个对象来自于X,第二个对象来自于Y的所有可能。 笛卡尔积也称为交叉连接,英文是CROSS JOIN,它的作用就是可以把任意表进行连接,即使这两张表不相关。

SELECT * FROM player, team;

SQL92 等值连接

SELECT player_id, player.team_id, player_name, height, team_name FROM player, team WHERE player.team_id = team.tea

Read more

MySQL 子查询


子查询

非关联子查询

如果子查询需要执行多次,即采用循环的方式,先从外部查询开始,每次都传入子查询进行查询,然后再将结果反馈给外部,这种嵌套的执行方式就称为关联子查询。

-- 查找最高身高的球员的身高和名字
SELECT player_name, height FROM player WHERE height = (SELECT max(height) FROM player);

关联子查询

子查询从数据表中查询了数据结果,如果这个数据结果只执行一次,然后这个数据结果作为主查询的条件进行执行,那么这样的子查询叫做非关联子查询。

eg1:

-- 查找每个球队中大于平均身高的球员有哪些,并显示他

Read more