SQLクエリ(マルチテーブルのクエリ)

クリエイティブコモンズライセンス 著作権:帰属、紙ベースを作成するために他人を許可し、(同じライセンスで元のライセンス契約に基づいて用紙配布する必要がありますクリエイティブコモンズ

目標:

 今までのマルチテーブルクエリ、マスターはもう一度今夜それを書く、非常に深いではありません。(リトル感情)

 マルチテーブルクエリに:、クロスコネクト、接続クエリを照会外側には、サブクエリをクエリに参加。

まず、データ準備:

​
# 分类表
CREATE TABLE category (
  cid VARCHAR(32) PRIMARY KEY ,
  cname VARCHAR(50)
);

#商品表
CREATE TABLE products(
  pid VARCHAR(32) PRIMARY KEY ,
  pname VARCHAR(50),
  price INT,
  flag VARCHAR(2), #是否上架标记为:1表示上架、0表示下架
  category_id VARCHAR(32),
  CONSTRAINT products_fk FOREIGN KEY (category_id) REFERENCES category (cid)
);

#分类
INSERT INTO category(cid,cname) VALUES('c001','家电');
INSERT INTO category(cid,cname) VALUES('c002','服饰');
INSERT INTO category(cid,cname) VALUES('c003','化妆品');

INSERT INTO category(cid,cname) VALUES('c004','奢侈品');
#商品
INSERT INTO products(pid, pname,price,flag,category_id) VALUES('p001','联想',5000,'1','c001');
INSERT INTO products(pid, pname,price,flag,category_id) VALUES('p002','海尔',3000,'1','c001');
INSERT INTO products(pid, pname,price,flag,category_id) VALUES('p003','雷神',5000,'1','c001');

INSERT INTO products (pid, pname,price,flag,category_id) VALUES('p004','JACK JONES',800,'1','c002');
INSERT INTO products (pid, pname,price,flag,category_id) VALUES('p005','真维斯',200,'1','c002');
INSERT INTO products (pid, pname,price,flag,category_id) VALUES('p006','花花公子',440,'1','c002');
INSERT INTO products (pid, pname,price,flag,category_id) VALUES('p007','劲霸',2000,'1','c002');

INSERT INTO products (pid, pname,price,flag,category_id) VALUES('p008','香奈儿',800,'1','c003');
INSERT INTO products (pid, pname,price,flag,category_id) VALUES('p009','相宜本草',200,'1','c003');

​

マルチテーブルクエリ:

クロスは、クエリに参加します:

     注:クロス加入クエリ、どうなる直積。

     構文: A、BからのSELECT *;

     問題:

SELECT * FROM products,category;

インナーには、クエリに参加します:

 左外への問い合わせが参加EN、右外部結合。

コネクタ内暗黙: `A、BからSELECT * WHERE条件;`
表示接続: `SELECT * FROMの条件の内A Bに参加します。

質問:何が商品の棚は、情報を分類されていますか?

コード:

#隐式内连接
SELECT * FROM products p,category c WHERE c.cid=p.category_id AND p.flag='1';
#内连接
SELECT * FROM products p INNER JOIN category c ON c.cid=p.category_id WHERE p.flag='1';

外側のクエリに参加します:

左外側に分け外部結合クエリと右の外部結合クエリに参加

左外部結合:外部結合左
:参加する権利外側を右外部結合

Q:全ての商品の各分類の数を照会しますか?

コード:

#左外连接
SELECT c.cname,COUNT(p.category_id) FROM category c LEFT OUTER JOIN products p ON c.cid=p.category_id GROUP BY c.cname;

#右外连接
SELECT c.cname,COUNT(p.category_id) FROM products p RIGHT OUTER JOIN category c ON c.cid=p.category_id GROUP BY c.cname;

サブクエリ:

文法の他の部分の結果として、SELECT文(クエリ、クエリ結果、テーブル、等)を選択します。
構文:

    ....クエリフィールドを選択...から...照会表..どこ...

問題:クエリー「化粧品」カテゴリの棚商品の詳細

コード:


#隐式内连接
SELECT * FROM products p,category c WHERE c.cid=p.category_id AND cname='化妆品';

##作为查询条件
SELECT *FROM products p WHERE p.category_id=(SELECT cid FROM category WHERE cname='化妆品');

##作为另一张表
SELECT *FROM products p ,(SELECT cid FROM category WHERE cname='化妆品') cc WHERE p.category_id=cc.cid;

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/longyanchen/article/details/93257044