美文网首页
MySQL数据管理

MySQL数据管理

作者: 奥利夫羊 | 来源:发表于2020-09-03 18:04 被阅读0次

    MySQL数据管理(管理集体的数据,而不是表结构)

    1. 外键

    删除被引用的表前需要删除主表

    创建带外键的表

    CREATE TABLE IF NOT EXISTS `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 '学生id',
        `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
        `gradeid` INT(10) NOT NULL COMMENT '年级',
        `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
        `sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
        `birthday` DATETIME DEFAULT 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 '年级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 '学生id',
        `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
        `gradeid` INT(10) NOT NULL COMMENT '年级',
        `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
        `sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
        `birthday` DATETIME DEFAULT 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`);
    
    -- ALTER TABLE`表名`
    ADD CONSTRAINT `约束名` FOREIGN KEY (`属性名`) REFERENCES `关联的表`(`属性名`);
    
    

    以上操作都是物理外键,数据库级别的外键,不建议使用。

    实践经验:

    • 数据库是单纯的表,只用来存数据,只有数字和字段。
    • 想使用多个表数据,使用外键应该用程序实现。

    2. DML语言

    DML:数据操作语言

    • insert
    • alter
    • delete

    3. 添加

    插入语句(添加)

    INSERT INTO `grade`(`gradeid`,`gradename`) VALUES(1,'大四');
    -- insert into 表名([字段1,字段2,字段3]) values('值1','值2','值3',...)
    -- 添加自增属性的键可以省略,如果不写表的字段,默认一一匹配。
    -- 插入多个字段: insert into 表名(字段1,字段2,字段3,...) values('值1','值2','值3',...), ('值1','值2','值3',...) ...
    

    4. 修改

    修改语句(更新)

    UPDATE `student` SET `name`='NAME' WHERE id = 1;
    -- 修改一个属性 UPDATE `表名` SET `column_name`='value' WHERE [条件];
    -- 修改多个属性 UPDATE `表名` SET `column1`='value1'[`column2`='value2'] WHERE [条件];
    -- 多个条件 通过条件和关系运算符
    

    where字句(具体看后面查询)

    操作符 含义
    = 等于
    <>或者!= 不等于
    > 大于
    < 小于
    <= 大于等于
    >= 小于等于
    between and 在某个范围
    and
    or

    5. 删除

    删除命令

    DELETE FROM `student` WHERE id = 1;
    -- DELETE FROM `表名` WHERE [条件];
    

    TRUNCATE 命令

    TRUNCATE `student`;
    -- TRUNCATE `表名`; 类似DELETE FROM `表名`
    

    TRUNCATE、DELETE之间的区别

    DELETE不会影响自增,TRUNCATE自增归零

    DELETE在删除数据库重启之后

    • InnoDB 自增从1开始,存在内存里面的
    • MyISAM 继续上一个自增量,存在文件里面

    相关文章

      网友评论

          本文标题:MySQL数据管理

          本文链接:https://www.haomeiwen.com/subject/jrozdktx.html