MySQL資料庫資料管理

Esrs發表於2020-10-15

1.外來鍵

  • 方式一:在建立表的時候新增約束
CREATE TABLE IF NOT EXISTS `student`(
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學號',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密碼',
	`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性別',
	`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
	`gradeid` INT(10) NOT NULL COMMENT '學生的年紀',
	`dddress` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '郵箱',
	PRIMARY KEY (`id`),
	KEY `FK_gradeid` (`gradeid`),--定義外來鍵key
	CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)--給這個外來鍵新增約束
)ENGINE=INNODB DEFAULT CHARSET=utf8
  • 方法二:建立表的時候沒有外來鍵約束,然後用alter修改新增
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);

以上操作都是物理外來鍵(資料庫級別的),不建議使用。(避免資料庫過多造成困擾)

最佳實踐

  • 資料庫就是單純的表,只用來存資料,只有行和列
  • 我們想使用多張表的資料,想使用外來鍵(程式去實現)

刪除有外來鍵關係的表的時候,必須要先刪除引用別人的表(從表),再刪除被引用的表(主表)。

2.DML語言(全部記住)

資料庫意義:資料儲存,資料管理
DML語言:資料操作語言

  • insert
  • update
  • delete

3.新增

-語法
sql insert into 表名([欄位1,欄位2]) values('值1'),('值2)...
INSERT INTO `grade` (`gradename`)VALUES ('大四')

  • 如果不寫表的欄位,它就會一一對應
  • 欄位可以省略,但一定要資料和欄位一一對應
  • 插入多個欄位
  • 欄位和欄位使用英文隔開
  • 可以同時插入多條資料,values後面的值使用“,”隔開即可INSERT INTO `grade`(`gradename`) VALUES('大二'),('大一')

4.修改

update 修改誰 (條件) set原來的值,新值

  • 不指定條件的情況下會改動所有表
  • 語法:
    update 表名 set colnum_name=value where 條件[ ]
  • 修改多個屬性,逗號隔開
  • 操作符
運算子含義
=等於
<>或!=不等於
>
<
>=
<=
BETWEEN…and……和…之間
AND且&&
OR||

5.刪除

  • delete命令
    語法:delete from 表名 where 條件
  • truncate命令
    完全清空一個資料庫表,表的結構和索引資料不會變
    truncate 表名

兩者的區別:

  • truncate 重新設定自增列,計數器會歸零
  • truncate不會影響事務
  • delete刪除後,InnoDB重啟資料庫,自增列會從1開始(存在記憶體當中,斷點即失);MYISAM繼續從上一個自增量開始(存在檔案中的,不會丟失)。

相關文章