1. 程式人生 > 遊戲攻略 >《原神攻略》楓原萬葉技能解析及裝備選擇指南

《原神攻略》楓原萬葉技能解析及裝備選擇指南

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…)…
注意事項

  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,繼續從上一個自增了開始(存在檔案中的,不會丟失)