MySQL
表
为了便于解释,因此作出以下两个表便于直观可见。
id | name | pid |
---|
1 | 小明 | 1 |
2 | 小芳 | 1 |
3 | 小强 | 2 |
4 | 小李 | 3 |
外键约束
- 外键约束:MyISAM不支持外键约束。InnoDB支持外键约束和事务。
- 修改存储引擎:ALTER TABLE 表名 ENGINE=‘InnoDB’。
- 性能对比:InnoDB < MyISAM。
多表查询
一、内连接
- 隐式内连接:SELECT 列名1,列名2 FROM 表名1,表名2 WHERE 表名1.列名1=表名2.列名2。
SELECT table1.id,table1.name,table2.class FROM table1,table2 WHERE table1.pid=table2.id
id | name | class |
---|
1 | 小明 | 一班 |
2 | 小芳 | 一班 |
3 | 小强 | 二班 |
- 显示内连接:SELECT 列名1,列名2 FROM 表名1 [INNER] JOIN 表名2 ON 表名1.列名1 = 表名2.列名2。 //INNER可不写。
SELECT table1.id,table1.name,table2.class FROM table1 JOIN table2 ON table1.pid=table2.id
id | name | class |
---|
1 | 小明 | 一班 |
2 | 小芳 | 一班 |
3 | 小强 | 二班 |
- 两者相比:查询效果相同。
二、外连接
- 左外连接:SELECT 列名1,列名2 FROM 表名1 LEFT OUTER JOIN 表名2 WHERE 表名1.列名1=表名2.列名2。
SELECT table1.id,table1.name,table2.class FROM table1 LEFT OUTER JOIN table2 WHERE table1.pid=table2.id
id | name | class |
---|
1 | 小明 | 一班 |
2 | 小芳 | 一班 |
3 | 小强 | 二班 |
4 | 小李 | null |
- 右外连接:SELECT 列名1,列名2 FROM 表名1 RIGHT OUTER JOIN 表名2 WHERE 表名1.列名1=表名2.列名2。
SELECT table1.id,table1.name,table2.class FROM table1 RIGHT OUTER JOIN table2 WHERE table1.pid=table2.id
id | name | class |
---|
1 | 小明 | 一班 |
2 | 小芳 | 一班 |
3 | 小强 | 二班 |
null | null | 三班 |
三、自连接:mysql有时在信息查询时需要对自身连接。
SELECT id,name FROM table1 as a,table1 as b where b.name = "小强" and b.pid < a.pid
插入操作
- 插入语句:(id自增)。
INSERT INTO table1(`name`,`pid`) values ("李白","666")
id | name | pid |
---|
1 | 小明 | 1 |
2 | 小芳 | 1 |
3 | 小强 | 2 |
4 | 小李 | 3 |
5 | 李白 | 666 |
- 批量插入。
INSERT INTO table1(`name`,`pid`) values ("关羽","666"),("张飞","666")
id | name | pid |
---|
1 | 小明 | 1 |
2 | 小芳 | 1 |
3 | 小强 | 2 |
4 | 小李 | 3 |
5 | 李白 | 666 |
6 | 关羽 | 666 |
7 | 张飞 | 666 |
- 插入查询(测试:仅用于此处)。
INSERT INTO table1(`name`,`pid`) SELECT `name`,`pid` FROM table1
id | name | pid |
---|
1 | 小明 | 1 |
2 | 小芳 | 1 |
3 | 小强 | 2 |
4 | 小李 | 3 |
5 | 李白 | 666 |
6 | 小明 | 1 |
7 | 小芳 | 1 |
8 | 小强 | 2 |
9 | 小李 | 3 |
10 | 李白 | 666 |
修改操作
修改语句:
UPDATE table1 set `name` = `刘备`,pid=`777` WHERE id = 5
id | name | pid |
---|
1 | 小明 | 1 |
2 | 小芳 | 1 |
3 | 小强 | 2 |
4 | 小李 | 3 |
5 | 刘备 | 777 |
6 | 关羽 | 666 |
7 | 张飞 | 666 |
修改操作
修改语句:
DELETE FROM table1 WHERE id = 5
id | name | pid |
---|
1 | 小明 | 1 |
2 | 小芳 | 1 |
3 | 小强 | 2 |
4 | 小李 | 3 |
6 | 关羽 | 666 |
7 | 张飞 | 666 |
小结
数据备份与恢复(dos命令操作):
- 导出:mysqldump -u账户 -p密码 数据库名称 > 脚本文件存储地址。
mysqldump -uroot -p12345 mybam > c:/myBam.sql
2.导入:mysql -u账户 -p密码 数据库名称 < 脚本文件地址。
mysql -uroot -p12345 mybam < c:/myBam.sql