MYSQL構文でよく使われる

3908 ワード

     

CREATE TABLE TT (ID INT, NAME VARCHAR(20));

       

CREATE TABLE TT AS SELECT * FROM CC;
2011-01-07                 22:18:00

Mysqlのinner join,left join,right join詳細
まず公式の説明を借りて、
inner join(等値接続):2つのテーブルの結合フィールドが等しい行のみを返します.
left join(左結合):左テーブルのすべてのレコードと右テーブルの結合フィールドが等しいレコードを返します.
right join(右結合):右テーブルのすべてのレコードと左テーブルの結合フィールドが等しいレコードを返します.
 
mysql> create table account( id int ,name varchar(16));mysql> create account1 ( id int, sex int);
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| account        |
| account1       |
+----------------+
2 rows in set (0.00 sec)
mysql> insert into account (id,name) values(1,'lee');
Query OK, 1 row affected (0.00 sec)
mysql> insert into account (id,name) values(2,'sophia');
Query OK, 1 row affected (0.00 sec)
mysql> insert into account (id,name) values(3,'unlown');
Query OK, 1 row affected (0.00 sec)
mysql> insert into account1 (id, sex) values (1,1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into account1 (id, sex) values (2,0);
Query OK, 1 row affected (0.00 sec)
mysql> select * from account;
+------+--------+
| id   | name   |
+------+--------+
|    1 | lee    |
|    2 | sophia |
|    3 | unlown |
+------+--------+
3 rows in set (0.00 sec)
mysql> select * from account1;
+------+------+
| id   | sex  |
+------+------+
|    1 |    1 |
|    2 |    0 |
+------+------+
2 rows in set (0.00 sec)
mysql> select * from account left join account1 on account.id = account1.id;+------+--------+------+------+
| id   | name   | id   | sex  |
+------+--------+------+------+
|    1 | lee    |    1 |    1 |
|    2 | sophia |    2 |    0 |
|    3 | unlown | NULL | NULL |
+------+--------+------+------+
3 rows in set (0.00 sec)
the same as :
mysql> select * from account,account1 where account.id = account1.id;+------+--------+------+------+
| id   | name   | id   | sex  |
+------+--------+------+------+
|    1 | lee    |    1 |    1 |
|    2 | sophia |    2 |    0 |
+------+--------+------+------+
2 rows in set (0.00 sec)
 
mysql> select * from account left join account1 on account.id = account1.id;


+------+--------+------+------+
| id | name | id | sex |
+------+--------+------+------+
| 1 | lee | 1 | 1 |
| 2 | sophia | 2 | 0 |
| 3 | unlown | NULL | NULL |
+------+--------+------+------+
3 rows in set (0.00 sec)

mysql> select * from account right join account1 on account.id = account1.id;
+------+--------+------+------+
| id | name | id | sex |
+------+--------+------+------+
| 1 | lee | 1 | 1 |
| 2 | sophia | 2 | 0 |
+------+--------+------+------+
2 rows in set (0.00 sec)

mysql> select * from account inner join account1 using (id);
+------+--------+------+
| id   | name   | sex  |
+------+--------+------+
|    1 | lee    |    1 |
|    2 | sophia |    0 |
+------+--------+------+
2 rows in set (0.00 sec)