mysql学习04( DML )

mysql学习04

  • MYSQL的数据管理:目录

    • 外键(了解即可)

    • DML:数据库管理语言(必会)

    • 添加:insert

    • 修改

    • 删除

 

  • 外键:

     

    • 方式1:在创建表的时候,增加约束(麻烦,比较复杂)

      CREATE TABLE IF NOT EXISTS `student` (
      `id` INT(4) 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 '出生日期',
      `address` VARCHAR(50) DEFAULT NULL COMMENT '家庭住址',
      `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
      `gradeId` INT(10) NOT NULL COMMENT '年级ID',

      PRIMARY KEY (id),
      KEY `FK_gradeId`(`gradeId`),
      CONSTRAINT `FK_gradeId` FOREIGN KEY (`gradeId`) REFERENCES `grade`(`gradeId`)
      )ENGINE=INNODB DEFAULT CHARSET=utf8



      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

      --删除有外键关系表的时候,必须要删除引用别人的表(从表),再删除被引用的表(主表);

       

    • 方式2:创建表成功后,添加外键约束

      -- 创建表的时候,没有外键关系
      ALTER TABLE `student` ADD CONSTRAINT `FK_greadeid`
      FOREIGN KEY (`gradeId`) REFERENCES `grade`(`gradeId`)

      -- alter table 表 add CONSTAINT 约束名 FOREIGN KEY(作为外键的列) REFERENCES 哪个表(哪个字段)

       

    • 以上的操作都是物理外键,都是数据库级别的,不建议使用;(避免数据库过多,造成困扰)

    • 最佳:

      • 数据库就是单纯的表,只用来存数据,只有行(列);

      • 如果我们想使用多张表,想使用外键(使用程序去实现);

      • 阿里巴巴开发规范:明确说明不得使用外键;

 

  • DML语言:数据库管理语言

    • 数据库的意义:数据存储,数据管理;

    • DML:insert , update ,delete (增,删,改,查)

       

    • 添加:插入语句:

      • insert ;

      • 字段和字段之间使用英文隔开;

      • 字段是可以省略的,但是后面的值,必须一一对应,不能少;

      • 可以同时插入多条数据:后面的值需要使用逗号隔开;

        -- 插入语句:insert 
        INSERT INTO 表名([字段1,字段2]) VALUES('值1'),('值2');
        INSERT INTO `grade` (`gradeName`) VALUES ('大四');
        --一般写插入语句,我们一定要数据和字段一一对应!

        -- 一次插入多条记录
        INSERT INTO `grade` (`gradeName`) VALUES ('大三'),('大二');

         

       

    • 更新语句:

      • update ;

      • 条件:where子句;

        //语法
        update 表名 set column=新值1,column=新值2  where 条件;

        -- 修改学员名字
        UPDATE `student` SET `name` ='张三' WHERE id=1;
        -- 不指定条件的情况下,会改动所有记录;
        UPDATE `student` SET `name` ='张三' WHERE id=1;

        --修改多个属性
        UPDATE `student` SET `name`='zs' ,`email`='2223@qq.com' ;

         

    • 删除语句:

      • delete

        --语法:
        delete from 表名 where 条件;

      • truncate命令:

        --清空一个数据库表,表的结构,索引,约束不会变;

        TRUNCATE `student` ;
      • delete 和 truncate的区别:

        --相同点:
        1,都能删除数据,都不会删除表结构;

        --不同点:
        1,truncate 重新设置自增列,自增会归零;不会影响事务;
        2,delete 不会影响自增;


        --了解即可:delete删除的问题,重启数据库,现象:
        1,InnoDB:自增列会从1开始(存在内存中,断电即失)
        2,MyISAM:继续从上一个自增量开始(存在文件中,不会丢失)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @   gzs1024  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示