提醒:設定下面的語句是在數據庫名為 db_book執行的。
一、創建表
1. 創建t_booktype表
USE db_book;
CREATE TABLE t_booktype(id INT AUTO_INCREMENT, bookTypeName VARCHAR(20),bookTypeDesc varchar(200),PRIMARY KEY (id)
);
2. 創建t_book表
USE db_book;
CREATE TABLE t_book(id INT PRIMARY KEY AUTO_INCREMENT, bookName VARCHAR(20) DEFAULT NULL, price DECIMAL(6, 2) DEFAULT NULL, bookTypeId INT, constraint `fk` foreign key (`bookTypeId`) references `t_booktype`(`id`)/*添加外鍵*/
);
添加外鍵約束:alter table 從表 add constraint 外鍵(形如:FK_從表_主表) foreign key (從表外鍵字段) references 主表(主鍵字段);
提醒: 大多數情況,不推薦使用外鍵,需要用到外鍵的邏輯最好放到應用層解決
外鍵的優點
- 數據一致性;
- 完整性會更可靠;
- 提高數據質量;
外鍵的缺點
- 損耗性能:當做一些涉及外鍵字段的增,刪,更新操作之前,數據庫需要檢查它是否違反數據完整性,不得不消耗資源。
- 更高層次的框架
許多應用程序使用編程框架,在物理數據庫之上創建另一個邏輯層。開發人員不使用插入或更新語句來修改數據,而使用API或者框架在后臺執行相關操作。ORM(對象關系映射)框架或Ruby on Rails框架就是這種情況。這些工具負責參照完整性,并與RDBMS一起創建更高級別的數據庫引擎。這些框架可以自己創建數據庫表,而不總是創建外鍵。使用這些工具的開發人員很少會干擾自動生成的模式,并且不需要外鍵。- 跨數據庫關系:
一些數據庫跨越更多的物理數據庫甚至引擎,并且在技術上可能不能創建跨越數據庫的它不能在同一臺服務器上的兩個數據庫上創建key。SQL Server就是一個很好的例子 - 它不能在同一臺服務器上的兩個數據庫上創建key。而且這種架構在大型系統中很常見。- 開發和維護不方便
在創建數據庫時,一般創建一些表和列是設置主鍵或唯一鍵,如果設置了外鍵時,后期無論開發還是維護,需要手工維護數據,都不太方便、降低了工作效率。
二、增加、查詢、修改、刪除(CRUD)
1. t_booktype表插入數據
INSERT INTO db_book.t_booktype VALUES(NULL,'Html','前端開發');/*給表的所有字段插入數據*/
查詢t_booktype表所有數據
SELECT * FROM db_book.t_booktype;
2. t_book表插入數據
INSERT INTO db_book.t_book VALUES(NULL,'Html',10.00,1);/*給表的所有字段插入數據*/
查詢t_book表所有數據
SELECT * FROM db_book.t_book;
注意: 因為在步驟一創建t_book表時,添加了外加,所以在給t_book插入數據時,bookTypeId字段的值 需要和 t _booktype 表id字段的值一樣
其他插入數據SQL語句
INSERT INTO t_book(id,bookName,price,bookTypeId) VALUES(NULL,'Html2',10.09,6);/*給表的所有字段插入數據 注意 bookTypeId 值和t_booktype id值一樣*/INSERT INTO t_book(bookName,price,bookTypeId) VALUES('java',10.09,2);/*給表的指定字段插入數據 注意 bookTypeId 值和t_booktype id值一樣*/INSERT INTO t_book(id,bookName,price,bookTypeId) VALUES(NULL,'Html3',10.09,6),(NULL,'Html4',10.09,6),(NULL,'Html5',10.09,6);/*同時插入多條數據*/
3. 修改 t_book 表數據
UPDATE t_book SET bookName ='H5',price = 14.50 WHERE id = 7;/*更新一條數據*/
查詢t_book表所有數據
SELECT * FROM db_book.t_book;
從上圖可以看到id = 7的數據已經修改成功了
使用LIKE修改多條數據
UPDATE t_book SET bookName ='H4'WHERE bookName LIKE'Html';/*更新多條數據*/
4. 指定刪除t_book數據
DELETE FROM t_book WHERE id = 8;/*刪除一條數據*/
驗證刪除id = 8的操作執行成功
刪除多條數據
DELETE FROM t_book WHERE bookName = 'H4';/*刪除多條數據*/
三、查看表的結構
1. 查看表的基本結構:desc t_booktype;
2. 查看表的詳細結構:show create table t_booktype;
修改表示例:將t_book重命名為t_book2
SQL語句:alter table t_book rename t_book2;
提醒:下面目錄標題是博客鏈接,直接點擊即可查看