MySQL3数据库管理

MySQL3数据库管理


外键(了解即可)

  • 方式一:在创建表的时候,增加约束(麻烦,比较复杂)
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

CREATE TABLE IF NOT EXISTS `student`(
   `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
   `name` VARCHAR(30) NOT NULL DEFAULT'匿名' COMMENT'姓名',
   `paw` 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`), -- FK_ 外键约束规定
   CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)
)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')    
```                                                                               |
                                                                                  
* 例如                                                                              
                                                                                  
```sql                                                                            
-- 一般写插入语句,我们一定要数据和字段一一对应!                                                        
-- INSERT INTO 表名 ([列1],[列2],[列3]) VALUES ('字段1','字段2','字段3'),('字段1','字段2','字段3') 
INSERT INTO `grade` (`gradename`) VALUES ('大二'),('大三')                            
                                                                                  

修改

  • update

  • 语法

update 表名 (条件) set 原来的值 = 新值 where 条件                                             
  • 例如
-- 修改学院名字,带了简介                                                                   
UPDATE `student` SET `name`='狂神'WHERE id=1;                                       
                                                                                  
-- 不指定条件的情况下,会改动所有的值                                                              
UPDATE `student` SET `name`='长江7号'                                                
                                                                                  
-- 语法:                                                                            
-- update 表名 set 列=值,[列=值],[列=值] where [条件]                                       
                                                                                  
操作符 含义 范围 结果
= 等于 5=6 false
<>或!= 不等于 5<>6 true
between…and… []闭合区间
and 相当于&& 5>1 and 1>2 false
or 相当于|| 5>1 or 1>2 true

删除

  • delete
--  删除数据(避免这样写,会全部删除)                                                             
delete from `student`                                                             
                                                                                  
-- 删除指定数据                                                                         
delete from `student` where id=1;                                                 
                                                                                  
  • truncate

  • 作用:完全清空数据库,表结构和索引约束不会变

-- 清空student表                                                                     
TRUNCATE `student`                                                                

delete 和 truncate

  • 不同

  • truncate重新设置了自增列 计数器会归0

  • truncate不会影响事务

DELETE FROM `test` -- 不会影响自增                                                      
TRUNCATE TABLE `table` -- 自增会归零                                                   
  • 了解即可:delete,重启数据库,现象

  • innoDB自增列会从1开始(存在内存中的,断电即失)

  • MyISAM继续从上一个子增量开始。(存在文件中,不会丢失)

posted @ 2021-09-01 17:15  苏必胜666  阅读(51)  评论(0)    收藏  举报