MySQL:
-
CRUD(创,读,更,删)
-
表单结构
- 表由表名,行,列,列名构成(本质为二维数组
- 表中,一列为一个字段
- 主键:标识数据(一个表最多有一个),用主键和其他表关联
- 类型:VARCHAR,INT,DOUBLE,DATETIME,BIGINT
- 创造:CREATE,读取:READ,更新:UPDATE,删除:DELETE
-
创建表格
- CREATE TABLE `user`
- (`id` INT(10)NOT NULL, `gmt_created` datetime , `gmt_modified` datetime NOT NULL,PRIMARY KEY ( `id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
插入语句
- INSERT INTO table_name(field1,field2,...fieldN)
- VALUES(value1,value2,...valueN);
-
查询SELECT
- SELECT field1,field2,.... FROM table_name;
- SELECT * FROM table_name WHERE condition;
- where条件中相等用=
-
Limit子句
- SELECT * FROM table_name LIMIT parameter(参数);
-
排序(ORDER BY子句)
- 语法:SELECT * FROM table_name ORDER BY field_name;
- 加上ORDER BY win_rate DESC;表示反向排序(高到低)
-
更新/删除
- 更新语法:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
- update语句必须加入where限定条件,否则的话,update语句会对整列起作用
- 删除语法:DELETE FROM table_name [WHERE Clause]
- 备份与恢复
-
-
查询优化
-
LIKE查询
- 语法:SELECT * FROM table_name WHERE condition LIKE condition;
- SQL LIKE子句中,我们使用百分号%字符来表示任意字符,如果没有使用任何%,那么此时的LIKE就相当于=
- ‘%A%’表示含有A,%A表示以A结尾,A%表示以A开头
-
AND和OR
- 语法:SELECT * FROM table_name WHERE conditionA AND/OR condtionB;
-
IN和NOT IN
- 语法:SELECT * FROM table_name WHERE column IN (condtionA,condtionB);
-
NULL值的处理
- 概念:null是MySQL字段的数据类型的属性,本身不属于任何数据类型,但NULL的值也不等于是空值,空值是不占用存储空间的,但NULL占用存储空间。
- MySQL为了处理NULL值提供了三种运算符:1. IS NULL 2. IS NOT NULL 3.<=>比较操作符。
- 语法:SELECT field_name1,field_name2FROM table_nameWHERE field_name2 IS NOT NULL/IS NULL;
-
-
MySQL字符串处理
-
CONCAT函数
- 语法:SELECT concat(column_name1,str,column_name2),column_name3 from table_name
-
TRIM函数
- 语法:TRIM (str)
- 作用:去除不需要的空格
- 语法拓展:精确去除前面或者后面的TRIM( BOTH|LEADING前|TRAILING后 removed_str FROM str);
- REPLACE()函数
- 如果要修改字符串中间的值可以使用replace函数
- 语法:UPDATE table_name SET colunm_name = REPLACE(column_name,string_find,string_to_replace) WHERE conditions;(不如直接使用update函数改完)
-
-
MySQL的关联查询
-
左连接
- 多个表格记录关联查询,简称关联查询,关联查询有很多种:常见的有左连接,右连接,内连接。
- 左连接语法:SELECT *FROM TableA LEFT JOIN TableB ON condition;
- 左连接就是返回左表的所有数据,即使右表没有匹配的数据(此时右表会以null的形式匹配数据。)
-
表结构的设计规范
- 1.表必须要有主键
- 2.一个字段只表示一个含义
- 3.总是包含两个日期字段:gmt_created(创建日期),gmt_modified(修改日期),且这两个字段不应该包含有额外的业务逻辑。
- 4.MySQL中,gmt_created,gmt_modified使用datetime类型
- 5.禁止使用复杂的数据类型(数组或者自定义类型等)
- 6.禁止使用无力外键,应该使用逻辑外键
- 7.禁止物理删除,应该使用逻辑删除is_deleted(逻辑删除,又叫做软删除,假删除,是一种数据库操作,使用标记将数据标为不可用,从而不从数据库中删除数据本身,使用适当的方法可以恢复被删除的数据。)
-
右连接
- 右连接就是返回右表的所有数据,即使左表没有匹配的数据
- 语法:SELECT *FROM TableA RIGHT JOIN TableB ON condition;
-
内连接
- 当左右连接无法满足所有的查询需要时,就需要用到内连接了
- INNER连接
- 得到的是两个表的内部共有的数据
- 语法:SELECT *FROM table_a INNER JOIN table_bON table_a.id = table_b.student_id;(此处的inner可以省略,只写join,效果是一样的)
- 除开共有数据的外连接:SELECT *FROM table_a LEFT JOIN table_b ON table_a.id = table_b.student_idWHERE table_b.student_id IS NULL;
- UNION关键词
- 有时需要联合查询所有的内容,即查询两表的全部内容,可以写:SELECT *FROM table_a LEFT JOIN table_bON table_a.id = table_b.student_idUNION DISTINCTSELECT *FROM table_a RIGHT JOIN table_b ON table_a.id=table_b.student_id;(相当于同时执行两个表的左右连接。)
-