MySQL数据管理

  • 外键
    • 创建外键的方法
  • DML语言(增删改)
    • 增加
    • 修改
    • 删除

外键

  • 如果一个实体的某个字段指向另一个实体的主键,就称为外键
  • 被指向的实体,称之为主实体(主表),也叫父实体(父表)。
  • 负责指向的实体,称之为从实体(从表),也叫子实体(子表)

创建外键的方法

方式一,在创建表的时候,增加约束

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-- 学生表的 gradeid 字段 要去引用年级表的 gradeid
-- 定义外键key
-- 给这个外键添加约束    (执行引用) REFERENCES 引用
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 '密码',`gender` varchar(2) NOT NULL DEFAULT '女' COMMENT '性别',`birthday` datetime DEFAULT NULL COMMENT '出生日期',`gradeid` int(10) 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 `grade`(`gradeid` int(10) not null auto_increment comment '年级id',`gradename` varchar(50) not null comment '年级名称',Primary key (`gradeid`)
)ENGINE=INNODB default charset=utf8CREATE 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 '密码',`gender` varchar(2) NOT NULL DEFAULT '女' COMMENT '性别',`birthday` datetime DEFAULT NULL COMMENT '出生日期',`gradeid` int(10) 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`);-- ALTER TABLE 表 ADD CONSTRAINT 约束名 FOREIGN KEY(作为外键的列) REFERENCES 哪个表(哪个字段)

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

最佳实践

  • 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
  • 我们想使用多张表的数据,想使用外键(程序去实现)

DML语言(增删改)

数据库意义:数据存储,数据管理

DML语言:数据操作语言

  • insert
  • updata
  • delete

增加

inset

-- 插入语句(添加)
-- 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`,`pwd`,`gender`) VALUES ('张三','aaaaaa','男')INSERT INTO `student` (`name`,`pwd`,`gender`) VALUES ('李四','123','女'),('王五','321','男')
语法:insert into 表名([字段名1,字段2,字段3])values('值1'),('值2'),('值3', ....)

注意事项:

  1. 字段和字段之间使用 英文逗号 隔开
  2. 字段是可以省略的,但是后面的值必须要一一对应,不能少
  3. 可以同时插入多条数据,VALUES后面的值,需要使用,隔开即可 VALUES(),(),…

练习

insert into `student` (`name`,`pwd`,`gender`,`birthday`,`gradeid`,`address`,`e
mail`) values('小田','250','男','1999-09-09',2,'成都','123zhu@qq.com');mysql [school]>select * from student where name='小田';
+----+--------+-----+--------+---------------------+---------+---------+---------------+
| id | name   | pwd | gender | birthday            | gradeid | address | email         |
+----+--------+-----+--------+---------------------+---------+---------+---------------+
|  4 | 小田   | 250 | 男     | 1999-09-09 00:00:00 |       2 | 成都    | 123zhu@qq.com |
+----+--------+-----+--------+---------------------+---------+---------+---------------+
1 row in set (0.00 sec)

修改

updata 修改

-- 修改学员名字UPDATE `student` SET `name`='唐佳' WHERE id = 1;UPDATE `student` SET `name`='夜鹿',`pwd`='123abc',`gender`='男',`birthday`='2000-01-01',`address`='日本',`email`='Yorushika@qq.com' WHERE id = 2 -- 不指定条件的情况下,会改动所有表!
UPDATE `student` SET `name`='哈鲁'-- 修改多个属性,逗号隔开
UPDATE `student` SET `name`='爱谬',`gender`='女',`address`='日本' WHERE id = 3;

语法:

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

条件:where 子句 运算符 id等于某个值,大于某个值,在某个区间内修改…

操作符会返回布尔值

操作符 含义 范围 结果
= 等于 5=6 flase
<> 或 != 不等于 5<>6 true
>
<
<=
>=
BETWEEN … and … [] 闭区间 在某个范围内 [2,5]
AND 我和你 && 5>1 and 1>2 flase
OR 我或你 || 5>1 or 1>2 true
-- 在某个范围内改变
UPDATE `student` SET `name`='刘美玲' WHERE id BETWEEN 2 AND 5-- 通过多个条件定位数据
UPDATE `studnet` SET `name`='刘美玲' WHERE `name`='唐佳' AND gender='女'

语法:

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

注意:

  • colnum_name 是数据库的列,尽量带上``
  • 条件,筛选的条件,如果没有指定,则会修改所有的列
  • value,是一个具体的值,也可以是一个变量
  • 多个设置的属性之间,使用英文逗号隔开
UPDATE `student` SET `birthday`=CURRENT_TIME WHERE `name`='猫猫' OR gender='女'

删除

delete 命令
语法:

delete from 表名 [where 条件]
-- 删除数据 (避免这样写)
DELETE FROM `studnet`-- 删除指定数据
DELETE FROM `student` WHERE id = 1;

TRUNCATE命令
作用:完全清空一个数据库表,表的结构和索引约束不会变!

-- 清空 student 表
TRUNCATE `student`

delete 的 TRUNCATE 区别

  • 相同点:都能删除数据,都不会删除表结构
  • 不同点:
    • 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=utf8INSERT INTO `test`(`coll`) VALUES('1'),('2'),('3')DELETE FROM `test`   -- 不会影响自增TRUNCATE TABLE `test`    -- 自增回归零

了解即可:DELETE 删除的问题,重启数据库,现象

  • innoDB 自增列会从1开始 (存在内存当中的,断电即失)
  • MyISAM 继续从上一个自增量开始 (存在文件中的,不会丢失)

数据库应用——MySQL数据管理相关推荐

  1. MySql学习笔记(2)--数据库操作及数据管理

    2.数据库操作 操作数据库>操作数据库中的表>操作数据库中表的数据 mysql关键字区分大小写 2.1操作数据库 1.创建数据库 create database if not exists ...

  2. 6.(Mysql数据管理相关)连接MYSQL,修改密码,增加新用户,数据库相关命令,表操作相关命令,数据相关命令,数据库sql导入和导出,备份数据库,查看不到mysql数据库的解决办法

     mysql安装完之后,登陆后发现只有两个数据库:mysql>show databases; +--------------------+ | Database           | +- ...

  3. 阿里云mysql宽带_阿里云数据库RDS MySQL版购买使用详细过程

    阿里云数据库 RDS MySQL 版如何购买使用?通过前面学习如何选择阿里云数据库 RDS MySQL 版,魏艾斯博客已经阿里云 MySQL 有了初步认识,接下来跟着老魏一起购买使用阿里云数据库 RD ...

  4. 【数据库】MySQL入门

    文章目录 1. 初识MySQL 1.1.为什么学习数据库 1.2.什么是数据库 1.3.数据库分类 1.4.MySQL简介 1.5.安装MySQL(简单) 1.6.安装Navicate 1.7.连接数 ...

  5. 数据库、mysql和sql的入门简明教程

    数据库.MySQL和SQL 一:数据库的一些基本概念 数据存储的几种方式: 存储位置 优点 缺点 内存 访问速度快 不能永久保存,数据是临时存储在内存中,之后会释放 文件 数据可以永久保存 操作数据不 ...

  6. Mairadb数据库基本操作之数据管理

    Mairadb数据库基本操作之数据管理 一.检查环境状态 二.mariadb的数据库增删改查 1.本地进入mariadb 2.增--创建一个数据库 3.查--查看数据库 4.改--修改数据库名称 ①查 ...

  7. 3 MySQL数据管理

    3 MySQL数据管理 3.1 外键(了解即可) 外键概念 如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键.由此可见,外键表示了两个关系之间的相关联系.以另一个关系的外 ...

  8. MySQL~MySQL数据管理

    3.MySQL数据管理 3.1.外键(了解即可) 方式一.在创建表的时候,增加约束(麻烦,比较复杂) CREATE TABLE `grade`( `gradeid` INT(10) NOT NULL ...

  9. 关于数据库管理系统DBMS--关系型数据库(MySQL/MariaDB)

    数据库管理系统--DBMS:用来管理数据库 数据库的结构(3种):层次,网状,关系型(用的最多):DBMS的三层模型:视图层:面向最终用户:逻辑层:面向程序员或DBA:物理层:面向系统管理员:关系型数 ...

最新文章

  1. Docker 常见问题
  2. SAP Spartacus auto focus Directive响应模型变化的一些触发时机例子
  3. vba九九乘法表代码_VBA代码模块化--数据透视表
  4. BZOJ 3697: 采药人的路径 [点分治] [我想上化学课]
  5. numpy 几个比较重要的链接
  6. 计算机应用技术基础教案,计算机应用技术基础实训教案.doc
  7. JQueryEasyUI datagrid框架的基本使用
  8. 惠普bios硬重置_惠普BIOS密码重置工具下载_惠普重置BIOS下载 1.66 免费版_当载软件站...
  9. echarts柱状图大小显示_百度Echarts入坑(柱状图正负显示)
  10. 赫茨伯格的双因素理论(转载)
  11. 常见HTTP/FTP/WebSockets状态码大全
  12. spring cloud聚合项目打jar包报错
  13. 咸鱼Micropython—GPIO
  14. 什么是时间序列数据?
  15. android获取手机流量使用情况
  16. 小程序开发合同_小程序开发公司在哪里找?
  17. BeeCloud支付接入视频教程-黄君贤-专题视频课程
  18. 错误 1 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 C:\Users\Administ
  19. 燕国胜国际会议英文介绍翻译
  20. 爱因斯坦提出万有引力定律的前因后果

热门文章

  1. 【总结】大学生寒假社会实践-社区志愿服务模板
  2. ArcGIS教程:创建面积图
  3. 洛谷P1796 汤姆斯的天堂梦【DP-数字三角形模型】【橙】
  4. 最近老是卖了就涨 买了就跌呢
  5. 生成数字相加验证码图片并验证
  6. python新浪股票接口 2019_用python爬虫进行新浪腾讯股票数据采集
  7. 用python计算转换温度
  8. FreeSwitch配置开启转码功能及安装G729语音编码
  9. vc中 volatile 的作用
  10. 一键解决重复性设计工作