1. 程式人生 > 其它 >MySQL資料管理 -- MySQL03

MySQL資料管理 -- MySQL03

MySQL資料管理


外來鍵(瞭解)

CREATE TABLE `grade`(                                                             
`gradeid` INT(11) NOT NULL AUTO_INCREMENT COMMENT'年級',                            
`gradename` VARCHAR(30) NOT NULL COMMENT'名字',                                     
PRIMARY KEY(`gradeid`)                                                            
)ENGINE = INNODB DEFAULT CHARSET = utf8                                           
                                                                                  
                                                                                  
-- 學生表的gradeid 欄位 要去引用年紀表的gradeid                                                 
-- 定義外來鍵key                                                                        
-- 給這個外來鍵新增約束 (執行引用) references 引用                                                 
CREATE TABLE `student`(                                                          
`id` INT(4)  NOT NULL  AUTO_INCREMENT COMMENT'學號',                                
`name`  VARCHAR(30) NOT NULL  DEFAULT'匿名' COMMENT'姓名',                           
`powdata` VARCHAR(20) NOT NULL DEFAULT'123456'COMMENT'密碼',                        
`sex` VARCHAR(10) NOT NULL DEFAULT'男'COMMENT'性別',                                
`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',                                   
`gradeid` INT(11) NOT NULL  COMMENT'年級',                                          
`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 `grade`(                                               
`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT'班級學號',                         
`gradename` VARCHAR(30) NOT NULL COMMENT'班級姓名',                                   
PRIMARY KEY(`gradeid`)                                                            
)ENGINE=INNODB DEFAULT CHARSET=utf8                                               
                                                                                
-- 學生表的gradeid 欄位 要去引用年紀表的gradeid                                                 
-- 定義外來鍵key                                                                        
-- 給這個外來鍵新增約束 (執行引用) references 引用                                                 
CREATE TABLE `student`(                                                           
`id` INT(4)  NOT NULL  AUTO_INCREMENT COMMENT'學號',                               
`name`  VARCHAR(30) NOT NULL  DEFAULT'匿名' COMMENT'姓名',                            
`powdata` VARCHAR(20) NOT NULL DEFAULT'123456'COMMENT'密碼',                        
`sex` VARCHAR(10) NOT NULL DEFAULT'男'COMMENT'性別',                                
`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',                                  
`gradeid` INT(11) NOT NULL  COMMENT'年級',                                         
`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭住址',                                
`email` VARCHAR(50) DEFAULT NULL COMMENT'郵箱地址',                                   
PRIMARY KEY(`id`)                                                                 
)ENGINE = INNODB  DEFAULT CHARSET=utf8                                            
                                                                                  
-- 建立表的時候沒有外來鍵關係                                                                   
ALTER TABLE `student`                                                             
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`); 

以上都是物理外來鍵,不建議使用

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

DML語言(全部記住)

資料庫意義:資料儲存,資料管理

DML語言:資料操作語言

  • Insert
  • update
  • delete

新增

-- 插入語句                                                                         
-- insert into 表名([欄位名1,欄位名2,欄位名3])values('值1'),('值2'),('值3')                     
INSERT INTO `grade`(`gradename`)VALUES('大四')                                      
                                                                                  
-- 由於主鍵自增外面可以省略(如果不寫表的欄位,他就會一一匹配)                                                 
INSERT INTO `grade` VALUES('大三')                                                 
                                                                                  
-- 一般寫插入語句,外面一定要資料和欄位一一對應                                                         
                                                                                 
-- 插入多個欄位                                                                         
INSERT INTO `grade`(`gradename`)VALUES('大一'),('大二')                               
                                                                                  
INSERT INTO`student`(`name`,`powdata`,`sex`)VALUES('張三','aaaaa','男'),             
('李四','bbbbb','男'),('王二','ccccc','女')                                             
                                                                                  

修改

-- 修改名字                                                                          
UPDATE `student`SET `name` = '狂神' WHERE id = 1                                    
                                                                                  
-- 不指定條件的情況下,會改動所有表                                                               
UPDATE `student` SET `name` = '長江七號'                                              
                                                                                  
-- 修改多個欄位                                                                         
UPDATE `student`SET `name`='張三',`email`='[email protected]' WHERE id =1            
操作符 含義 範圍 結果
= 等於 3=5 false
<>或!= 不等於 3<>5 false
> 小於 4<6 true
< 大於 6>4 true
<= 小於等於 4<=6 true
>= 大於等於 4>=6 false
between 兩者之間 between 2 and 7
and && 5>1 and 1>2 false
or || 5>1 or 1>2 true
-- 指定多個條件定位資料                                                                     
UPDATE `student` SET `name` = '狂神5' WHERE `name` = '長江七號' AND sex = '男'           

注意 :

  • colnum_name是資料庫的列,儘量帶上``
  • 條件,篩選的條件,如果沒有指定,則會修改所有的列
  • value, 是一個具體的值,也可以是一個變數
  • 多個設定的屬性之間,使用英文逗號隔開

刪除

語法:delete from 表名 [where 條件]

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

truncate命令

作用:完全清空一個數據庫表,表的結構和索引約束不會變

-- 清空student表                                                                    
TRUNCATE `student`                                                                

delete和truncate 的區別

  • 相同點:都能刪除資料,都不會刪除表結構
  • 不同:
  • truncate 重新設定自增列 計數器會歸零
  • truncate 不會影響事物
-- dellete 和 truncate的區別                                                          
CREATE TABLE `test`(                                                              
`id` INT(4) NOT NULL AUTO_INCREMENT,                                              
`name` VARCHAR(20) NOT NULL,                                                      
PRIMARY KEY(`id` )                                                                
)ENGINE = INNODB DEFAULT CHARSET = utf8                                          
                                                                                  
INSERT INTO `test`(`name`) VALUES ('1'),('2'),('3')                              
                                                                                  
DELETE FROM `test`   -- 不會影響自增                                                    
                                                                                  
TRUNCATE TABLE `test` -- 自增會歸零