MySQL | 基础教程笔记
0 基础
· 关系型数据库管理系统(RDBMS)来存储和管理的大数据量
· 术语
主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
外键:外键用于关联两个表。
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
1 操作
· 创建/删除数据库:
CREATE/DROP DATABASE 数据库名;
· 创建数据表 需要表名、表字段名、定义每个表字段
CREATE TABLE table_name (column_name column_type);
e.g.
CREATE TABLE IF NOT EXISTS 'runoob_tbl'( 'runoob_id' INT UNSIGNED AUTO_INCREMENT, 'runoob_title' VARCHAR(100) NOT NULL, 'runoob_author' VARCHAR(40) NOT NULL, 'submission_date' DATE, PRIMARY KEY ( 'runoob_id' ) #定义主键 )ENGINE=InnoDB DEFAULT CHARSET=utf8; #设置存储引擎和编码
· 删除数据表
DROP TABLE table_name ;
· 插入数据 INSERT
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); #如果数据是字符型,要使用引号
· 查询数据 SELECT FROM
SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M]
查询语句中可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件;SELECT 命令可以读取一条或者多条记录;
星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据;
WHERE 语句来包含任何条件;
LIMIT 属性来设定返回的记录数;
OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
· 修改或更新数据 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]] filed2 = 'somevalue'
#LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
· UNION连接两个以上SELECT语句的结果到一个集合中
SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions];
#DISTINCT可选,表示删除集合中重复的数据,但默认情况下UNION会自动删除重复的。ALL可选,保留重复数据
· 排序 ORDER BY
SELECT field1, field2,...fieldN table_name1, table_name2... ORDER BY field1, [field2...] [ASC [DESC]]
#可以设定多个字段来排序;ASC/DESC控制升序/降序
· 分组 GROUP BY
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
#在分组的列上可以使用COUNT, SUM, AVG等函数
· JOIN实现多表连接和查询
INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
2 进阶
· MySQL事务
用于处理操作量大,复杂度高的数据;
事务是一系列操作语句;
- 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
- 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
- 事务用来管理 insert,update,delete 语句
- 一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
MYSQL 事务处理主要有两种方法:
1)用 BEGIN, ROLLBACK, COMMIT来实现
- BEGIN 开始一个事务
- ROLLBACK 事务回滚
- COMMIT 事务确认
2)直接用 SET 来改变 MySQL 的自动提交模式:
- SET AUTOCOMMIT=0 禁止自动提交
- SET AUTOCOMMIT=1 开启自动提交