Mysql資料庫值的新增、修改、刪除及清空

TY__F 發表於 2021-06-17
資料庫 MySQL

3、MySQL資料管理

第一種方式:不太建議,看起來複雜些

-- 學生表的 gradeid 欄位,要去引用 年級表的 gradeid
-- 定義外來鍵key
-- 給這個外來鍵新增約束,(執行引用),REFERENCES 引用
key `FK_gradeid`(`gradeid`)
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)

第二種方式:建議

-- 建立表成功後,新增外來鍵約束
-- 建立表的時候沒有外來鍵關係
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
-- ALTER TABLE 表 ADD CONSTRAINT `` FOREIGN KEY (``) REFERENCES `欄位`

以上的操作都是物理外來鍵,資料庫級別的外來鍵,我們不建議使用,(避免資料庫過多造成困擾,這裡瞭解即可)

最佳實踐

  • 資料庫為單純的表
  • 我們想使用多張的表資料,想使用外來鍵(程式去實現)

3.2、DML語言

資料庫語言: 資料儲存、資料管理

3.3、新增 INSERT

-- 插入語句
INSERT INTO 表名([欄位1,欄位2,欄位2])
values(''),(''),('')

-- INSERT INTO 'grade'('gradename') VALUES ('大四')
-- 一般寫插入語句,一定要資料和要插入值的欄位一一對應
-- 給某個欄位新增多個欄位
INSERT INTO `表明`(`屬性列欄位`, ...) 
VALUES ('匹配的值1','匹配的值2','匹配的值3')
/*
如果不想寫屬性列的欄位名,那麼就吧每個屬性列完全匹配,一一對應的寫出後面的值*/

注意事項

  • 欄位和欄位之間使用英文逗號隔開
  • 欄位是可以省略的,但是後面的值必須要一一對應,不能少
  • 可以同時插入多條資料,VALUES 後面的值,需要使用,隔開即可VALUSE(),(),......
-- 插入多條資料<即元組>,多個行的資料
INSERT INTO `s`(`SNO`,`SNAME`,`SEX`,`Sage`) VALUES ('180109','王五','男','76'),('180108','李四','男','88')

3.3修改

update 修改誰(條件)

-- 修改學員名字
UPDATE `student` SET `name`='長江七號' WHERE  id = 1; -- 有條件
-- 不指定的情況下,會改動所有表!!!!!
UPDATE `student` SET `name` = '長江七號'
-- 語法
-- UPDATE 表名 SET colum_name = value,[colum_name = value,....] where [條件]

條件:where 運算子

操作符 含義 範圍 結果
= 等於 5=6 false
<>或者 != 不等於 5<>6 true
> 大於 5>6 false
< 小於 5<6 true
>= 大於等於 5>=6 false
<= 小於等於 5<=6 true
between A and B 在A和B之間 between 1 and 10 在1~10之間,不包括10
AND 連線條件&& 條件1 和條件2都成立 都是true 才是true
OR 或者|| 條件1 和條件2有一個成立即可 有一個true才是true

注意事項:

  • colnum_name 是資料庫的列,儘量帶上 ``
  • 條件,篩選的條件,如果沒有指定,則會修改所有的列
  • VLAUE是一個具體的值,也可以是一個變數,如birthday = CURRENT_TIME current_time是當前時間
  • 多個設定的屬性之間,使用英文逗號隔開
-- 修改語句的例子
UPDATE `student`SET `birthday` = CURRENT_TIME WHERE `name` = '長江七號' AND  SEX = '女'

3.4 刪除

delete 命令

語法:delete from 表明 where 判斷條件

-- 刪除資料<慎用,容易刪庫跑路>
DELETE FROM `STUDENT`

-- 刪除指定資料
DELETE FROM `student` WHERE id = 1;

TRUNCATE 命令

作用:完全清空一個資料庫表,表的結構和索引約束不會改變!!

-- 清空資料表,例如清空student表
TRUNCATE `student`
-- 安全寫法,刪除表,防止刪除資料庫名為`student`
TRUNCATE TABLE `student`

delete 和TRUNCATE的區別

  • 相同點:都可以刪除資料,都不會刪除表的結構
  • 不同:
    • TRUNCATE 重新設定自增列,計數器會歸零
    • TRUNCATE 不會影響事務
-- 測試
CREATE TABLE `test`(
    `id` INT(4) NOT NULL AUTO_INCREMENT,
    `COLL` VARCHAR(20) NOT NULL,
    PRIMARY KEY('id')
)ENGINE=INNODB DEFAULT CHARSET=UTF8

INSERT TNTO `test` (`coll`) VALUES('1')('2')('3')

DELETE FROM `test` -- 不會影響自增

TRUNCATE TABLE `test` -- 自帶會歸零

瞭解即可:delete刪除的問題,重啟資料庫,現象

  • INNODB 自增列會從1開始,(存在記憶體當中的斷電即失)
  • MYISAM 繼續從上一個子增量開始(存在檔案當中的,不會丟失)

+++

+++

課後的新增例項展示

新增:
-- 一條元組的新增示例
insert into `Student` values('180103','物件三','女','22','CS')

-- 測試新增多條元組,中間使用英文逗號隔開
INSERT INTO `Student` VALUES('180105','物件五','男','19','IS'),('180106','物件六','女','20','CS'),('180107','物件七','女','20','CS')

-- 因為表的結構設定非空,這裡沒有測試只新增某個屬性列的值

Mysql資料庫值的新增、修改、刪除及清空

+++

修改:update
UPDATE `student` SET `sname` = '操作修改物件一' WHERE `sno`= 180102;
-- 記得新增的時候不要帶逗號,我的問題出在了下面帶了逗號
-- UPDATE `student` SET `sname` = '操作修改物件一',WHERE `sno`= 180102;

新增成功後,表的結果截圖展示:

Mysql資料庫值的新增、修改、刪除及清空


刪除:delete
-- 刪除單條記錄<符合WHERE條件就刪除這條記錄>
DELETE FROM `student` WHERE sname = '操作修改物件一';
-- 使用TRUNCATE清空資料表
TRUNCATE Table `student`
-- 或者使用 delete刪除所有資料庫
DELETE FROM `student`
-- 不會影響自增

操作結果展示

-- 因為刪除了所有資料,所以結果是表為空

Mysql資料庫值的新增、修改、刪除及清空