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
