[MySQL]基本的なデータベース操作を学ぶための5分(2)


序文

先ほどMySQLのシングルテーブル操作について説明しましたが、MySQLマルチテーブル操作の部分に入りました。この章では、
(1)マルチテーブルクエリに**内部結合**を使用する方法を学び、次のことができるようにします。 **左外部結合**と**右外部結合**を使用して、マルチテーブルクエリを実行します。
(2)トランザクションとは何か、MySQLでトランザクションを使用する方法を理解します。
(3)ファントムリーディングの概念を理解する
(4)DCLを使用してMySQLでユーザーを管理する

ヒント:以下はこの記事の内容です。以下のケースは参照用です。

1.マルチテーブルクエリ

1.データの準備

# 创建部门表
create table dept(
id int primary key auto_increment,
name varchar(20) -- 部门名称
)
insert into dept (name) values ('开发部'),('市场部'),('财务部');
# 创建员工表
create table emp (
	id int primary key auto_increment,
	name varchar(10),
	gender char(1), -- 性别
	salary double, -- 工资
	join_date date, -- 入职日期
	dept_id int,
	foreign key (dept_id) references dept(id) -- 外键,关联部门表(部门表的主键)
)
insert into emp(name,gender,salary,join_date,dept_id) values('孙悟空','男',7200,'2013-02-24',1);
insert into emp(name,gender,salary,join_date,dept_id) values('猪八戒','男',3600,'2010-12-02',2);
insert into emp(name,gender,salary,join_date,dept_id) values('唐僧','男',9000,'2008-08-08',2);
insert into emp(name,gender,salary,join_date,dept_id) values('白骨精','女',5000,'2015-10-07',3);
insert into emp(name,gender,salary,join_date,dept_id) values('蜘蛛精','女',4500,'2011-03-14',1);

2.デカルト積

table1 * table2に従って行列乗算積を作成し、それは大きな直積テーブルの
原則になります。クロス結合は左側のテーブルのすべての行を返し、左側のテーブルの各行と右側のテーブルのすべての行は1つずつです。 1つの組み合わせ

select * from table2, table2 ;

3.マルチテーブル接続

なぜ接続するのですか?
実際の開発プロセスでは、複数のテーブルのデータを同時に使用する必要があるためです。

#直接多表连接,用from
#SELECT 字段名 FROM 左表, 右表 WHERE 条件
select t1.name, t1.sex, t1.age, t2.id 
from emp t1, dept t2
where t1.id = t2.id; -- 筛选条件,避免笛卡尔积

#inner可省略,on用来确定连接条件,where用来确定查询范围。
#SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 条件
select * from emp inner join dept;
select * from emp inner join dept on emp.id = dept.id where ;
 
#左外连接:求交集(左边的表完全显示)
#SELECT 字段名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 条件
select * from emp left join dept on emp.id = dept.id where ;

#SELECT 字段名 FROM 左表 RIGHT [OUTER ]JOIN 右表 ON 条件
select * from emp right join dept on emp.id = dept.id where ;

#子查询:【用一个查询的结果作为另外一个查询的条件】
#SELECT 查询字段 FROM 表 WHERE 字段 =(子查询);
#SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);

総括する

つづく

おすすめ

転載: blog.csdn.net/weixin_43801418/article/details/110918760