mysql表與表之間創建外鍵關系


CREATE DATABASE bankDB;

USE bankDB;

##drop TABLE user_info
CREATE TABLE user_info(
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    user_name NVARCHAR(30),
    user_sex NVARCHAR(4)
);

##drop TABLE card_type
CREATE TABLE card_type(
    usertype_id INT AUTO_INCREMENT PRIMARY KEY,
    usertype_Name NVARCHAR(30)
);

##DROP TABLE user_card
CREATE TABLE user_card(
    usercard_id INT AUTO_INCREMENT PRIMARY KEY,
    usercard_number NVARCHAR(30),
    usercard_pwd INT,
    usercard_remark TEXT,
    usertype_id INT,#外鍵user_type
    user_id INT,#外鍵user_info
    FOREIGN KEY(usertype_id) REFERENCES  card_type(usertype_id) ON DELETE CASCADE,##創建外鍵關系語句
    FOREIGN KEY(user_id) REFERENCES  user_info(user_id) ON DELETE CASCADE ##創建外鍵關系語句
)TYPE=INNODB;

INSERT INTO user_card VALUES (NULL,'500226198705088574',123456,'備注',1,1);
INSERT INTO user_card VALUES (NULL,'500226199995088574',123456,'備注',2,1);
INSERT INTO user_card VALUES (NULL,'500226155505088574',123456,'備注',3,1);
INSERT INTO user_card VALUES (NULL,'500226198705088574',123456,'備注',1,2);
INSERT INTO user_card VALUES (NULL,'500226777705088574',123456,'備注',1,3);
INSERT INTO user_card VALUES (NULL,'500226192115088574',123456,'備注',1,4);
INSERT INTO user_card VALUES (NULL,'500226097050488574',123456,'備注',1,6);
INSERT INTO user_card VALUES (NULL,'500226777705088574',123456,'備注',2,3);
INSERT INTO user_card VALUES (NULL,'500226192115088574',123456,'備注',3,4);
INSERT INTO user_card VALUES (NULL,'500226097050488574',123456,'備注',1,8);

INSERT INTO user_info VALUES (NULL,'張三0','男');
INSERT INTO user_info VALUES (NULL,'張三1','女');
INSERT INTO user_info VALUES (NULL,'張三2','男');
INSERT INTO user_info VALUES (NULL,'張三3','男');
INSERT INTO user_info VALUES (NULL,'張三4','男');
INSERT INTO user_info VALUES (NULL,'張三5','男');
INSERT INTO user_info VALUES (NULL,'張三6','女');
INSERT INTO user_info VALUES (NULL,'張三7','女');
INSERT INTO card_type VALUES (NULL,'信貸卡');
INSERT INTO card_type VALUES (NULL,'借記卡');
INSERT INTO card_type VALUES (NULL,'消費卡');

SELECT * FROM user_info;
SELECT * FROM card_type;
SELECT * FROM user_card;


######查詢卡:信貸卡用戶信息記錄#######
##方法一:
SELECT  user_info.user_id,user_info.user_name,user_info.user_sex
    FROM user_info,user_card,card_type
        WHERE   user_info.user_id=user_card.user_id
            AND user_card.usertype_id=card_type.usertype_id
            AND card_type.usertype_Name='信貸卡';
           
SELECT  * FROM user_info,user_card,card_type
##方法二
SELECT * FROM user_info WHERE user_id IN(
    SELECT user_id FROM user_card WHERE usertype_id =(
        SELECT usertype_id FROM card_type WHERE usertype_Name='信貸卡')
    );

##左連接(以user_info為顯示基礎,user_card沒有符合條件則以null填充顯示)
SELECT DISTINCT * FROM user_info LEFT JOIN user_card ON user_info.user_id=user_card.user_id
##右連接(與上面相反)
SELECT DISTINCT * FROM user_info RIGHT JOIN user_card ON user_info.user_id=user_card.user_id
##內連接(ON等同於where)
SELECT DISTINCT * FROM user_info INNER JOIN user_card ON user_info.user_id=user_card.user_id


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM