数据库应用——MySQL数据管理
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', ....)
注意事项:
- 字段和字段之间使用 英文逗号 隔开
- 字段是可以省略的,但是后面的值必须要一一对应,不能少
- 可以同时插入多条数据,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数据管理相关推荐
- MySql学习笔记(2)--数据库操作及数据管理
2.数据库操作 操作数据库>操作数据库中的表>操作数据库中表的数据 mysql关键字区分大小写 2.1操作数据库 1.创建数据库 create database if not exists ...
- 6.(Mysql数据管理相关)连接MYSQL,修改密码,增加新用户,数据库相关命令,表操作相关命令,数据相关命令,数据库sql导入和导出,备份数据库,查看不到mysql数据库的解决办法
mysql安装完之后,登陆后发现只有两个数据库:mysql>show databases; +--------------------+ | Database | +- ...
- 阿里云mysql宽带_阿里云数据库RDS MySQL版购买使用详细过程
阿里云数据库 RDS MySQL 版如何购买使用?通过前面学习如何选择阿里云数据库 RDS MySQL 版,魏艾斯博客已经阿里云 MySQL 有了初步认识,接下来跟着老魏一起购买使用阿里云数据库 RD ...
- 【数据库】MySQL入门
文章目录 1. 初识MySQL 1.1.为什么学习数据库 1.2.什么是数据库 1.3.数据库分类 1.4.MySQL简介 1.5.安装MySQL(简单) 1.6.安装Navicate 1.7.连接数 ...
- 数据库、mysql和sql的入门简明教程
数据库.MySQL和SQL 一:数据库的一些基本概念 数据存储的几种方式: 存储位置 优点 缺点 内存 访问速度快 不能永久保存,数据是临时存储在内存中,之后会释放 文件 数据可以永久保存 操作数据不 ...
- Mairadb数据库基本操作之数据管理
Mairadb数据库基本操作之数据管理 一.检查环境状态 二.mariadb的数据库增删改查 1.本地进入mariadb 2.增--创建一个数据库 3.查--查看数据库 4.改--修改数据库名称 ①查 ...
- 3 MySQL数据管理
3 MySQL数据管理 3.1 外键(了解即可) 外键概念 如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键.由此可见,外键表示了两个关系之间的相关联系.以另一个关系的外 ...
- MySQL~MySQL数据管理
3.MySQL数据管理 3.1.外键(了解即可) 方式一.在创建表的时候,增加约束(麻烦,比较复杂) CREATE TABLE `grade`( `gradeid` INT(10) NOT NULL ...
- 关于数据库管理系统DBMS--关系型数据库(MySQL/MariaDB)
数据库管理系统--DBMS:用来管理数据库 数据库的结构(3种):层次,网状,关系型(用的最多):DBMS的三层模型:视图层:面向最终用户:逻辑层:面向程序员或DBA:物理层:面向系统管理员:关系型数 ...
最新文章
- Docker 常见问题
- SAP Spartacus auto focus Directive响应模型变化的一些触发时机例子
- vba九九乘法表代码_VBA代码模块化--数据透视表
- BZOJ 3697: 采药人的路径 [点分治] [我想上化学课]
- numpy 几个比较重要的链接
- 计算机应用技术基础教案,计算机应用技术基础实训教案.doc
- JQueryEasyUI datagrid框架的基本使用
- 惠普bios硬重置_惠普BIOS密码重置工具下载_惠普重置BIOS下载 1.66 免费版_当载软件站...
- echarts柱状图大小显示_百度Echarts入坑(柱状图正负显示)
- 赫茨伯格的双因素理论(转载)
- 常见HTTP/FTP/WebSockets状态码大全
- spring cloud聚合项目打jar包报错
- 咸鱼Micropython—GPIO
- 什么是时间序列数据?
- android获取手机流量使用情况
- 小程序开发合同_小程序开发公司在哪里找?
- BeeCloud支付接入视频教程-黄君贤-专题视频课程
- 错误 1 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 C:\Users\Administ
- 燕国胜国际会议英文介绍翻译
- 爱因斯坦提出万有引力定律的前因后果