MySql汇总【上】
reng99 opened this issue · comments
Jimmy commented
数据库的关键字大小写无所谓,为了方便学习,这里的关键字我用大写来区分。
创建数据库
CREATE DATABASE database_name
删除数据库
DROP DATABASE database_name
选择数据库
USE database_name
创建数据表
CREATE TABLE table_name (column_name column_type)
例子:
CREATE TABLE IF NOT EXISTS demo (
id INT UNSIGNED AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
) ENGINE=innoDB DEFAULT CHARSET=utf8
删除数据表
DROP TABLE table_name
插入数据
INSERT INTO table_name (field1, field2, ...fieldN)
VALUES
(value1, value2, ...value3)
例子:
INSERT INTO demo (title)
VALUES
('标题')
查询数据
SELECT column_name1, column_name2
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
WHERE子句
SELECT field1, field2, ...fieldN
FROM table_name1, table_name2 ...
[WHERE condition1 [AND [OR]]] condition2 ...
UPDATE更新
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
DELETE语句
DELETE FROM table_name [WHERE Clause]
LIKE子句
SELECT field1, field2, ...fieldN
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] field2 = 'somevalue'
UNION
SELECT expression1, expression2, ...expression_n
FROM table_name
[WHERE condition]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ...expression_n
FROM another_table_name
[WHERE condition]
排序
SELECT field1, field, ...fieldN
FROM
table_name1, table_name2 ...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...][ASC [DESC][默认 ASC]]
分组
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
连接
可以使用JOIN
进行联合多表查询。
- INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录
- LEFT JOIN(左连接):获取左表所有记录,即使右表中没有对应匹配的记录
- RIGHT JOIN(右连接):与
LEFT JOIN
相反,用于获取右表所有记录,即使左表没有对应匹配的记录
NULL值处理
为了处理NULL
值,MYSQL
提供了三大运算符:
-
IS NULL:当列的值是
NULL
,此运算符返回true
-
IS NOT NULL:当列的值不为
NULL
,此运算符返回true
-
<=>:比较操作符(不同于 = 运算符),当比较的两个值相等或者都为
NULL
时返回true
正则
关键字REGEXP
事务
MYSQL
事务主要用来处理操作量打,复杂度高得数据。
一般来说,事务是必须满足4个条件ACID:
-
原子性(Atomicity)
-
一致性(Consistency)
-
隔离性(Isolation)
-
持久性(Durability)
本汇总分两篇完成,下篇再见。