美文网首页程序员Ping说MySQL
MySQL之MySQL数据管理

MySQL之MySQL数据管理

作者: Ping开源 | 来源:发表于2020-11-28 16:35 被阅读0次

三、MySQL数据管理

1.外键

:学生的grade列引用年级表的id(约束)。

学生的grade列引用年级表的id

方式一:在创建表的时候,增加约束(比较复杂)。

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 '姓名',
  `gradeid` INT(10) NOT NULL COMMENT '年级',
  PRIMARY KEY (`id`),
  --定义外键key
  KEY `FK_gradeid` (`gradeid`),
  --给此外键添加约束(执行引用),用references引用
  CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
在创建表的时候,增加约束

注:删除有外键关系的表的时候,必须要先删除引用别人的表(从表),再删除被引用的表(主表)。
可视化里查看外键:右击表——>改变表——>选择3个外部键

可视化里查看外键

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

--创建表的时候没有外键关系
--ALTER TABLE 表` ADD CONSTRAINT 约束名 FOREIGN KEY(作为外键的列) REFERENCES 被引用的表(其字段);
ALTER TABLE `student` ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
创建表成功后添加外键约束

以上的操作都是物理外键,数据库级别的外键,不建议使用。(避免数据库过多造成困扰)
最佳实践
①数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)。
②想使用多张表的数据,想使用外键(用程序去实现)。

2.DML语言

数据库的意义:数据存储、数据管理。
DML语言:数据操作语言
Insert、update、delete

3.添加(insert)

语法

insert into 表名([字段名1,字段名2,…]) values[('值1',…),('值2',…),……]

INSERT INTO `student`(`name`,`pwd`,`sex`)
VALUES('张三','aaaa','男'),('李四','bbbb','女')

注:由于主键自增可以省略。(但如果不写表的字段,它会一一匹配。)
一般写插入语句,一定要使数据和字段一一对应。

注意事项:
①字段和字段直接使用英文逗号,隔开。
②字段是可以省略的,但后面的值必须要是一一对应的,不能缺少。
③可以同时插入多条数据,VALUS后面的值,使用,隔开。

4.修改(update)

语法

UPDATE 表名 set colnum_name = value,[colnum_name = value,…] where [条件]

UPDATE `student` SET `name`='王五',`email`='2585801995@qq.com' WHERE id = 1;

注:①不指定条件的情况下,会改动整个表。
②修改多个属性用逗号,隔开。

条件:where 子句(等于某个值,小于或大于某个值,在某个区间内修改…)
操作符:返回布尔值

操作符 含义
= 等于
<>或!= 不等于
> 大于
< 小于
<= 小于等于
>= 大于等于
BETWEEN…AND… 在某个范围内
AND
OR

--通过多个条件定位数据
UPDATE `student` SET name='长江' WHERE `name`='张三' AND `sex`='男'

注意:①column_name是数据库的列,尽量带上``。
②作为筛选的条件吗,如果没有指定,则会修改所有的列。
③value是一个具体的值,也可以是一个变量。

UPDATE `student` SET `birthday`=CUPPENT_TIME WHERE `name`='张三' AND `sex`='男'

④多个设置的属性之间,使用英文逗号,隔开。

5.删除(delete、truncate)

1)delete命令
语法

delete from 表名 [where条件]

DELETE FROM `student` WHERE id=1;

注:若无指定的条件,会全部删除,避免这样写。
2)truncate命令
作用:完全清空一个数据表,表的结构和表的索引不会变。

--清空student表
TRUNCATE `student`
TRUNCATE TABLE `student`

2)delete和truncate的区别
相同点:都能删除数据,且不会删除表的结构。
不同点:TRUNCATE会重新设置自增列,计数器会归零,且不会影响事务。

--测试delete和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 INTO `test`(`coll`) VALUES('1'),('2'),('3')
DELETE FROM `test` --不会影响自增
TRUNCATE TABLE `test` --自增会归零

DELETE删除的问题
InnoDB:自增列会重新从1开始(存在内存当中的,断电即失)。
MyISAM:继续从上一个自增量继续(存在文件中的,不会丢失)。

相关文章

  • MySQL之MySQL数据管理

    三、MySQL数据管理 1.外键 例:学生的grade列引用年级表的id(约束)。 方式一:在创建表的时候,增加约...

  • MYSQL

    MYSQL : Mysql是一种开源的关系型数据库MYSQL使用最常用的数据管理语言——结构化查询语言。具有速度...

  • musql 04day

    数据管理技术的发展阶段 数据库的概念(DB) 数据管理系统(DBMS) MySQL安装配置

  • mysql常用命令书目录

    mysql常用命令之连接MYSQL mysql常用命令之修改密码 mysql常用命令之增加新用户 mysql常用命...

  • MySQL索引及查询优化书目录

    MySQL索引的原理之索引目的 MySQL索引的原理之索引原理 MySQL索引的原理之索引的类型 MySQL索引的...

  • MySQL学习笔记一之MySQL语法

    title: MySQL学习笔记一之MySQL语法tags: MySQL 数据库categories: MySQL...

  • MySQL数据管理

    MySQL数据管理(管理集体的数据,而不是表结构) 1. 外键 删除被引用的表前需要删除主表 创建带外键的表 修改...

  • Superset_报错解决

    Superset_报错解决 No module named sqlite2由于元数据管理统一使用mysql,后面就...

  • MySQL day7 (2019.5.14)

    一、回顾 视图外键事务数据管理用户管理 二、MySQL变量 MySQL的变量有两种,一种是系统变量,另一种是用户自...

  • BigData-MySQL总结大全(一)苏暖人

    BigData之MySQL总结大全 MYSQL常用的基本语句 MYSQL常用的基本语句 例:SELECT TOP ...

网友评论

    本文标题:MySQL之MySQL数据管理

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