《原神攻略》楓原萬葉技能解析及裝備選擇指南
阿新 • • 發佈:2021-07-09
MySQL資料管理
外來鍵(瞭解即可)
方式一:在建立表的時候,增加約束(麻煩,比較複雜)
CREATE TABLE `grade`( `gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年級id', `gradename` VARCHAR(50) NOT NULL COMMENT '年級名稱', PRIMARY KEY (`gradeid`) )ENGINE=INNODB DEFAULT CHARSET=utf8 -- 學生表的gradeid 欄位 要去引用年級表的gradeid -- 定義外來鍵key -- 給這個外來鍵新增約束(執行引用)reference 引用 CREATE TABLE IF NOT EXISTS `student`( `id` INT(10) 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 '年級id', `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址', `email` VARCHAR(50) DEFAULT NULL COMMENT '郵箱', PRIMARY KEY (`id`), KEY `FK_gradeid` (`gradeid`), CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`) )ENGINE =INNODB DEFAULT CHARSET=utf8
刪除有外來鍵關係的表的時候,必須要先刪除引用表,再刪除被引用的表
方式二 :建立表成功之後,新增外來鍵約束
CREATE TABLE IF NOT EXISTS `Student`( `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學號', `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名', `pasw` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密碼', `sex` VARCHAR(3) NOT NULL DEFAULT '女' COMMENT '性別', `birthday` DATETIME DEFAULT NULL COMMENT '生日', `gradeid` INT(10) NOT NULL COMMENT 'grade學號', `address` VARCHAR(100) DEFAULT NULL COMMENT '地址', `email` VARCHAR(80) DEFAULT NULL COMMENT '郵箱', PRIMARY KEY(`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8 -- 建立表的時候沒有外來鍵關係 ALTER TABLE `Student` ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`) -- alter table 表 add constraint 約束名 foreign key (作為外來鍵的列) references 外來鍵的表(外來鍵表的哪個欄位)
以上的操作都是物理外來鍵,資料庫級別的外來鍵,我們不建議使用! (避免資料庫過多而造成困擾)
最佳實踐
- 資料庫就是單純的表,只用來存資料,只有行(資料)和列(欄位)
- 我們想使用多張表的資料,想使用外來鍵(程式去實現)
DML語言(全部記住)
資料庫意義:資料儲存、資料管理
DML語言:資料操作語言
- insert
- update
- delete
新增
insert
-- 插入語句(新增) -- insert into 表名(欄位1,欄位2,欄位3....) values(值1,值2,值3...),(值1,值2,值3...)... INSERT INTO `grade`(`gradename`) VALUES('大四') -- 由於主鍵自增我們可以省略(如果不寫表的欄位,它就會一一匹配 INSERT INTO `grade` VALUES('大三') -- 一般插入語句,我們一定要資料和欄位一一對應! -- 插入多個欄位 INSERT INTO `grade`(`gradename`) VALUES('大二'),('大一') INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES('李四','3243','女'),('李發的','343243','女'),('發的四','32323243','女');
語法:insert into 表名(欄位1,欄位2,欄位3…) values(值1,值2,值3…),(值1,值2,值3…)…
注意事項
- 欄位和欄位之間使用英文逗號隔開
- 欄位是可以省略的,但是後面的值必須要一一對應,不能少
- 可以同時插入多條資料,values後面的值,需要使用,隔開即可 values(),()…
修改
update 修改誰 (條件) set 原來的值=新值
-- 修改學員的名字
UPDATE `student` SET `name`='平庸' WHERE id=1
-- 不指定條件的情況下,會修改所有的資料!
UPDATE `student` SET `name`='平庸'
-- 修改多個屬性,逗號隔開
UPDATE `student` SET `name`='仔細',`address`='武漢' WHERE id=3
-- 語法:
-- UPDATE 表名 SET colnum_name=value,[colnum_name=value,....] where [條件]
條件:where語句 運算子 id等於某個值 ,大於某個值,在某個區間內修改
操作符 | 含義 | 範圍 | 結果 |
---|---|---|---|
= | 等於 | 4=3 | false |
> | 大於 | 6>3 | true |
< | 小於 | 4<5 | true |
<= | 小於等於 | 3<=4 | true |
>= | 大於等於 | 3>1 | true |
<>或 != | 不等於 | 3<>4 | true |
BETWEEN A AND B | 在某個範圍內 | [A,B] | |
AND | 我和你&& | 1>3and3<2 | flase |
OR | 我或者你 | 1>3or3<2 | flase |
-- 通過多個條件定位資料
UPDATE `student` SET `name`='仔細',`address`='武漢' WHERE `name`='平庸' AND sex='男'
語法: UPDATE 表名 SET colnum_name=value,[colnum_name=value,....] where [條件]
注意
- 欄位是資料庫的列,儘量帶上
- 條件,篩選的條件,如果沒有指定,則會修改所有的列
- value,是一個具體的值,也可以是一個變數
- 多個設定屬性之間使用英文逗號隔開
UPDATE `student` SET `name`='仔細',`birthday`=CURRENT_TIME WHERE `name`='仔細' AND sex='女'
刪除
delete
語法:DELETE FROM 表名 WHERE [條件]
-- 刪除資料(避免這樣寫,會刪除全部)
DELETE FROM `student`
-- 刪除指定資料
DELETE FROM `student` WHERE `id`=1
TRUNCATE命令
-- 清空 student 表
TRUNCATE `Student`
delete和TRUNCATE區別
- 相同點:都能刪除資料,都不好刪除表結構
- 不同
- TRUNCATE 重新設定 自增列 計數就會歸零
- TRUNCATE 不會影響事物
例子:
-- 測試delete和 TRUNCATE區別
CREATE TABLE `test`(
`id` INT(4) NOT NULL AUTO_INCREMENT,
`coll` VARCHAR(30) NOT NULL,
PRIMARY KEY(`id`)
)
INSERT INTO `test`(`coll`)VALUES('1'),('2'),('2')
DELETE FROM `test` -- 不會影響自增
TRUNCATE TABLE `test` -- 自增會歸零
瞭解即可:delete刪除問題
,重啟資料庫,現象
INNODB 自增列會重1開始(存在記憶體當中,斷電即失)
MYISAM,繼續從上一個自增了開始(存在檔案中的,不會丟失)