#先登錄數據庫
mysql -uroot -p
#然後選擇數據庫
use 數據庫
#導入
source 路徑名/名字.sql
綜合練習
創建商城數據庫表結構
#創建用戶表
CREATE TABLE USER(
userId INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
PASSWORD VARCHAR(18) NOT NULL,
address VARCHAR(100),
phone VARCHAR(11)
);
#一對多的實現
#創建分類表
CREATE TABLE category(
cid VARCHAR(32) PRIMARY KEY ,
cname VARCHAR(100) NOT NULL
#分類名稱
);
# 商品表
CREATE TABLE `products` (
`pid` VARCHAR(32) PRIMARY KEY,
`name` VARCHAR(40) ,
`price` DOUBLE(7,2),
category_id VARCHAR(32),
CONSTRAINT FOREIGN KEY(category_id) REFERENCES category(cid)
);
#多對多的實現
#訂單表
CREATE TABLE `orders`(
`oid` VARCHAR(32) PRIMARY KEY ,
`totalprice` DOUBLE(12,2),
#總計
`userId` INT,
CONSTRAINT FOREIGN KEY(userId) REFERENCES USER(userId)
#外鍵
);
#訂單項表
CREATE TABLE orderitem(
oid VARCHAR(32),
#訂單id
pid VARCHAR(32),
#商品id
num INT ,
#購買商品數量
PRIMARY KEY(oid,pid),
#主鍵
FOREIGN KEY(oid) REFERENCES orders(oid),
FOREIGN KEY(pid) REFERENCES products(pid)
);
#初始化數據
#用戶表添加數據
INSERT INTO USER(username,PASSWORD,address,phone) VALUES('張三','123','北京昌平沙 河','13812345678');
INSERT INTO USER(username,PASSWORD,address,phone) VALUES('王五','5678','北京海 澱','13812345141');
INSERT INTO USER(username,PASSWORD,address,phone) VALUES('趙六','123','北京朝 陽','13812340987');
INSERT INTO USER(username,PASSWORD,address,phone) VALUES('田七','123','北京大 興','13812345687');
#給分類表初始化數據
INSERT INTO category VALUES('c001','電器');
INSERT INTO category VALUES('c002','服飾');
INSERT INTO category VALUES('c003','化妝品');
INSERT INTO category VALUES('c004','書籍');
#給商品表初始化數據
INSERT INTO products(pid,NAME,price,category_id) VALUES('p001','聯想',5000,'c001');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p002','海爾',3000,'c001');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p003','雷神',5000,'c001');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p004','JACK JONES',800,'c002');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p005','真維斯',200,'c002');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p006','花花公子',440,'c002');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p007','勁霸',2000,'c002');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p008','香奈兒',800,'c003');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p009','相宜本草',200,'c003');
INSERT INTO products(pid,NAME,price,category_id) VALUES('p010','梅明子',200,NULL);
#添加訂單
INSERT INTO orders VALUES('o6100',18000.50,1);
INSERT INTO orders VALUES('o6101',7200.35,1);
INSERT INTO orders VALUES('o6102',600.00,2);
INSERT INTO orders VALUES('o6103',1300.26,4);
#訂單詳情表
INSERT INTO orderitem VALUES('o6100','p001',1),('o6100','p002',1),('o6101','p003',1);
多表查詢
查詢所有用戶的訂單
SELECT o.oid,o.totalprice,u.userId,u.username
FROM orders o
INNER JOIN
USER u
ON o.userId=u.userId;
查詢用戶id爲1的所有訂單詳情
SELECT o.oid,o.totalprice,o.userId,u.username,om.pid
FROM orders o
INNER JOIN USER u
ON o.userId=u.userId
INNER JOIN orderitem om
ON o.oid=om.oid
WHERE u.userId=1;
子查詢
查看用戶爲張三的訂單
SELECT *
FROM orders
WHERE userId=(
SELECT userId
FROM USER
WHERE username = '張三'
);
查詢出訂單的價格大於800的所有用戶信息
SELECT *
FROM USER
WHERE userId IN(
SELECT DISTINCT userId
FROM
orders
WHERE totalprice>800
);