crazybrick 2019-03-31
CREATE DATABASE database_name
DROP DATABASE database_name
数据库存储引擎
数据库存储引擎是数据库底层软件组成,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。
MySQL的核心就是存储引擎。
存储引擎比较
|功能|MyISAM|Memory|InnoDB|Archive|
|---|---|---|---|---|
|存储限制|256TB|RAM|64TB|None|
|支持事务|No|No|Yes|No|
|支持全文索引|Yes|No|No|No|
|支持数索引|Yes|Yes|Yes|No|
|支持哈希索引|No|Yes|No|No|
|支持数据缓存|No|N/A|Yes|No|
|支持外键|No|No|Yes|No|
SQL CREATE TABLE<表名> ( 字段名1 数据类型 [列级别约束条件] [默认值], 字段名2 数据类型 [列级别约束条件] [默认值], …… [表级别约束条件] );
使用主键约束
主键约束要求主键列的数据唯一,并且不允许为空。他能唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。
字段名 数据类型 PRIMARY KEY [默认值]
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
PRIMARY KEY [字段1、字段2...]
[CONSTRAINT<外键名>] FOREIGN KEY 字段1[,字段2...] REFERENCES<主表名> 主键列1[,主键列2...]
字段名 数据类型 NOT NULL
字段名 数据类型 UNIQUE
[CONSTRAINT<约束名>] UNIQUE(<字段名>)
字段名 数据类型 DEFAULT 默认值
设置表的属性值自动增加
在数据库应用中,可以通过为表的主键添加 AUTO_INCREMENT
关键字来实现:当每新增加一条记录,使该主键自动加一。一个表只能有一个字段使用 AUTO_INCREMENT
约束,且该字段必须为主键的一部分。其约束的字段可以是任何整数类型。字段名 数据类型 AUTO_INCREMENT
DESCRIBE 表名;
或者简写为 DESC 表名;
SHOW CREATE TABLE <表名/G>;
/G
参数,显示的结果可能非常混乱,加上参数 /G
后,可使显示结果更加直观,易于查看。ALTER TABLE <旧表名> RENAME [TO] <新表名>;
ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
ALTER TABLE <表名> ADD <新字段名> <新数据类型> [约束条件] [FIRST|AFTER 已存在字段名];
ALTER TABLE <表名> DROP <字段名>;
ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;
ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
DROP TABLE [IF EXISTS] 表1,表2...表n;
SELECT {*|<字段列表>} [ FROM <表1>,<表2>... [WHERE <表达式>] [GROUP BY <group by definition>] [HAVING <expression>[{<operator><expression>}...]] [ORDER BY <order by definition>] [LIMIT [offset,] <row count>] ] SELECT [字段1,字段2,...,字段n] FROM [表或视图] WHERE [查询条件];
SELECT * FROM 表名;
SELECT 字段名1[,字段名2,...,字段名n] FROM 表名;
SELECT
语句中,通过 WHERE
子句可以对数据进行过滤。SELECT 字段名1[,字段名2,...,字段名n] FROM 表名 WHERE 查询条件;
IN
关键字的查询IN
操作符用来查询满足指定范围内的条件的记录,使用 IN
操作符,将所有检索条件用括号括起来,检索条件之间用逗号隔开,只要满足条件范围内的一个值即为匹配项。IN
关键字前面加上 NOT
即可使得查询的结果正好相反。BETWEEN AND
的范围查询BETWEEN AND
用来查询某个范围内的值,该操作符需要有两个参数,即范围的开始值和结束。如果字段值满足指定的范围查询条件,则这些记录被返回。BETWEEN AND
关键字前面加上 NOT
即可使得查询的结果正好相反。LIKE
的字符匹配查询LIKE
关键字即是使用通配符来进行匹配查找。通配符是一种在SQL的 WHERE
条件子句中拥有特殊意思的字符,可以和 LIKE
一起使用的通配符有 %
和 _
。%
,匹配任意长度的字符,甚至包括零字符。_
,一次只能匹配任意一个字符。SELECT
语句中使用 IS NULL
子句,可以查询某字段内容为空记录。AND
的多条件查询AND
主要用于 WHERE
子句中,用来链接两个甚至多个查询条件,表示所有的条件都需要满足才会返回值。OR
的多条件查询OR
也主要用于 WHERE
子句中,用来链接两个甚至多个查询条件,表示所有的条件仅需满足其中之一项便会返回值。SELECT
语句中,使用 DISTINCT
关键字来指示MySQL消除重复的记录。SELECT DISTINCT 字段名 FROM 表名;
ORDER BY
语句来对查询的结果进行排序。DESC
表示降序排序ASC
或默认,表示升序排序GROUP BY
来对数据进行分组[GROUP BY 字段] [HAVING <条件表达式>] [WITH ROLLUP]
HAVING
关键字用来过滤数据,因为 WHERE
不能和 GROUP BY
混用WITH ROLLUP
关键字是在所有查询出的记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量。但是ROLLUP
和能够与 GROUP BY
同时使用的ORDER BY
不能同时使用。LIMIT
限制查询结果的数量LIMIT [位置偏移量,] 行数
函数 | 作用 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值的和 |
(INNER) JOIN
指定。 使用这种语法的时候,连接的条件使用 ON
子句给出,而不是用 WHERE
。LEFT JOIN
左连接RIGHT JOIN
右连接子查询指一个查询语句嵌套在另一个查询语句内部的查询。
ANY
、SOME
关键字的子查询ANY
和 SOME
关键字是同义词,表示满足其中任一条件,它们允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。ALL
关键字的子查询ALL
时,需要同时满足所有内层查询的条件。EXISTS
关键字的���查询EXISTS
关键字后面的参数是一个任一的子查询,系统对子查询进行运算以判断它是否返回行,如果至少返回一行,那么 EXISTS
的结果为 true
,此时外层查询语句将进行查询;如果子查询没有返回任何行,那么 EXISTS
的结果为 false
,此时外层语句不进行查询。IN
关键字的子查询IN
关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作。当外层查询语句内只要有一个内层查询语句返回的数据列中的数据时,则判断为满足条件,外层查询语句将进行查询。'<','<=','=','>','>=','!='
等比较运算符。利用 UNION
关键字,可以给出多条 SELECT
语句,并将他们的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同。各个 SELECT
语句之间使用 UNION
或 UNION ALL
关键字分割。 UNION
不适用关键字 ALL
,执行的时候删除重复的记录,所有返回的行都是唯一的;使用关键字 ALL
的作用时不删除重复行也不对结果进行自动排序。
表名 [AS] 表别名
列名 [AS] 列别名
MYSQL
中使用REGEXP
关键字指定正则表达式的字符匹配模式。
正则表达式常用字符匹配列表
|选项|说明|
|:---:|---|
|^
|匹配文本的开始字符|
|$
|匹配文本的结束字符|
|.
|匹配任何单子符|
|*
|匹配零个或多个在他前面的字符|
|+
|匹配前面的字符1次或多次|
|<字符串>
|匹配保护指定的字符串的文本|
|[字符集合]
|匹配字符集合中的任何一个字符|
|[^]
|匹配不在括号中的任何字符|
|字符串{n,}
|匹配前面的字符串至少n次|
|字符串{n,m}
|匹配前面的字符串至少n次,至多m次|