3、MySQL数据管理

第一种方式:不太建议,看起来复杂些

-- 学生表的 gradeid 字段,要去引用 年级表的 gradeid
-- 定义外键key
-- 给这个外键添加约束,(执行引用),REFERENCES 引用
key `FK_gradeid`(`gradeid`)
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)

第二种方式:建议

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

以上的操作都是物理外键,数据库级别的外键,我们不建议使用,(避免数据库过多造成困扰,这里了解即可)

最佳实践

  • 数据库为单纯的表
  • 我们想使用多张的表数据,想使用外键(程序去实现)

3.2、DML语言

数据库语言: 数据存储、数据管理

3.3、添加 INSERT

-- 插入语句
INSERT INTO 表名([字段1,字段2,字段2])
values(''),(''),('') -- INSERT INTO 'grade'('gradename') VALUES ('大四')
-- 一般写插入语句,一定要数据和要插入值的字段一一对应
-- 给某个字段添加多个字段
INSERT INTO `表明`(`属性列字段`, ...)
VALUES ('匹配的值1','匹配的值2','匹配的值3')
/*
如果不想写属性列的字段名,那么就吧每个属性列完全匹配,一一对应的写出后面的值*/

注意事项

  • 字段和字段之间使用英文逗号隔开
  • 字段是可以省略的,但是后面的值必须要一一对应,不能少
  • 可以同时插入多条数据,VALUES 后面的值,需要使用,隔开即可VALUSE(),(),......
-- 插入多条数据<即元组>,多个行的数据
INSERT INTO `s`(`SNO`,`SNAME`,`SEX`,`Sage`) VALUES ('180109','王五','男','76'),('180108','李四','男','88')

3.3修改

update 修改谁(条件)

-- 修改学员名字
UPDATE `student` SET `name`='长江七号' WHERE id = 1; -- 有条件
-- 不指定的情况下,会改动所有表!!!!!
UPDATE `student` SET `name` = '长江七号'
-- 语法
-- UPDATE 表名 SET colum_name = value,[colum_name = value,....] where [条件]

条件:where 运算符

操作符 含义 范围 结果
= 等于 5=6 false
<>或者 != 不等于 5<>6 true
> 大于 5>6 false
< 小于 5<6 true
>= 大于等于 5>=6 false
<= 小于等于 5<=6 true
between A and B 在A和B之间 between 1 and 10 在1~10之间,不包括10
AND 连接条件&& 条件1 和条件2都成立 都是true 才是true
OR 或者|| 条件1 和条件2有一个成立即可 有一个true才是true

注意事项:

  • colnum_name 是数据库的列,尽量带上 ``
  • 条件,筛选的条件,如果没有指定,则会修改所有的列
  • VLAUE是一个具体的值,也可以是一个变量,如birthday = CURRENT_TIME current_time是当前时间
  • 多个设置的属性之间,使用英文逗号隔开
-- 修改语句的例子
UPDATE `student`SET `birthday` = CURRENT_TIME WHERE `name` = '长江七号' AND SEX = '女'

3.4 删除

delete 命令

语法:delete from 表明 where 判断条件

-- 删除数据<慎用,容易删库跑路>
DELETE FROM `STUDENT` -- 删除指定数据
DELETE FROM `student` WHERE id = 1;

TRUNCATE 命令

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

-- 清空数据表,例如清空student表
TRUNCATE `student`
-- 安全写法,删除表,防止删除数据库名为`student`
TRUNCATE TABLE `student`

delete 和TRUNCATE的区别

  • 相同点:都可以删除数据,都不会删除表的结构
  • 不同:
    • TRUNCATE 重新设置自增列,计数器会归零
    • 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 TNTO `test` (`coll`) VALUES('1')('2')('3') DELETE FROM `test` -- 不会影响自增 TRUNCATE TABLE `test` -- 自带会归零

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

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

+++

+++

课后的添加实例展示

添加:
-- 一条元组的添加示例
insert into `Student` values('180103','对象三','女','22','CS') -- 测试添加多条元组,中间使用英文逗号隔开
INSERT INTO `Student` VALUES('180105','对象五','男','19','IS'),('180106','对象六','女','20','CS'),('180107','对象七','女','20','CS') -- 因为表的结构设置非空,这里没有测试只添加某个属性列的值

+++

修改:update
UPDATE `student` SET `sname` = '操作修改对象一' WHERE `sno`= 180102;
-- 记得添加的时候不要带逗号,我的问题出在了下面带了逗号
-- UPDATE `student` SET `sname` = '操作修改对象一',WHERE `sno`= 180102;

添加成功后,表的结果截图展示:


删除:delete
-- 删除单条记录<符合WHERE条件就删除这条记录>
DELETE FROM `student` WHERE sname = '操作修改对象一';
-- 使用TRUNCATE清空数据表
TRUNCATE Table `student`
-- 或者使用 delete删除所有数据库
DELETE FROM `student`
-- 不会影响自增

操作结果展示

-- 因为删除了所有数据,所以结果是表为空

Mysql数据库值的添加、修改、删除及清空的更多相关文章

  1. MySQL 字段常用操作 添加,修改,删除,调整字段顺序

    整理备忘: 添加字段:alter table 表名Add column 字段名 字段类型  默认值 AFTER 字段名 (在哪个字段后面添加) 例子: alter table appstore_sou ...

  2. postgresql数据库primary key约束/not null约束/unique约束及default值的添加与删除、列的新增/删除/重命名/数据类型的更改

    如果在建表时没有加primary key约束.not null约束.unique约束.default值,而是创建完表之后在某个字段添加的话 1.primary key约束的添加与删除 给red_pac ...

  3. Web 1三级联动 下拉框 2添加修改删除 弹框

    Web  三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...

  4. 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件

    第三章 建议学习时间8小时      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demo ...

  5. SpringBoot定时任务升级篇(动态添加修改删除定时任务)

    需求缘起:在发布了<Spring Boot定时任务升级篇>之后得到不少反馈,其中有一个反馈就是如何动态添加修改删除定时任务?那么我们一起看看具体怎么实现,先看下本节大纲: (1)思路说明: ...

  6. JavaWeb_day03_员工信息添加修改删除

    day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ...

  7. MySQL数据库数据存放位置修改

    MySQL数据库数据存放位置修改 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方 ...

  8. MySQL数据库字符集由utf8修改为utf8mb4一例

    对于mysql 5.5 而言,如果不设定字符集,mysql默认的字符集是 latin1 拉丁文字符集: 为了统一管理和应用开发的方便,一般都会统一将操作系统,客户端,数据库各方面的字符集都设置为 ut ...

  9. 【转】C#添加修改删除文件文件夹大全

    [转]C#添加修改删除文件文件夹大全 C#添加修改删除文件文件夹大全 StreamWriter sw = File.AppendText(Server.MapPath(".")+& ...

随机推荐

  1. 3.逆向分析Hello World!程序-下

    5.继续补充,常用操作指令: Ctrl+G    Go to       移动到指定地址,用来查看代码或内存,运行时不可用 F4        Execute till Cursor 执行到光标位置, ...

  2. 插入排序——Python实现

    插入排序Python实现 # -*- coding: utf-8 -*- # @Time : 2019/10/28 20:47 # @Author : yuzhou_1shu # @Email : y ...

  3. 【HTML】HTML5从入门到深入(复习查漏向

    HTML5从入门到深入(复习查漏向 冷知识 万维网之始:第一个网站·蒂姆伯纳斯-李 HTML5 html5文档类型声明: 头部: <!doctype html> 字符集(charset): ...

  4. [LeetCode每日一题]81. 搜索旋转排序数组 II

    [LeetCode每日一题]81. 搜索旋转排序数组 II 问题 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k(0 & ...

  5. 腾讯暑期 前后七面 + hr(已拿offer面经)

    以下是时间线 魔方 魔术师工作室 3.19 一面(120mins) c++ struct和union区别? 指针和引用的区别? 左值和右值? 字节对齐的作用? 什么情况下需要自定义new? mallo ...

  6. [题解] CF786B Legacy

    前言 题目链接 题意 有 \(n\) 个点,\(q\) 次连边,以及起点 \(s\) .连边具体分三种: \(1\) \(v\) \(u\) \(w\) 从 \(v\) 到 \(u\) 连一条边. \ ...

  7. MySQL关于日期为零值的处理

    前言: 前面文章我们介绍过日期和时间字段的查询方法,最近遇到日期值为零的问题.原来了解过和 sql_mode 参数设置有关,但还不是特别清楚,本篇文章将探究下MySQL怎么处理日期值为零的问题. 1. ...

  8. too much recursion

    今天在火狐浏览器上调试swagger接口遇到一个浏览器报错: too much recursion 刚开始以为接口出问题了,但是调试之后发现,后台有数据返回,往下一拉,看到了差不多两千多条数据,一下子 ...

  9. suse12 设置ssh 远程连接

    前提:已安装相应的sshd软件包. 编辑sshd_config文件:vim /etc/ssh/sshd_config PermitRootLogin yes PasswordAuthenticatio ...

  10. WordPress的config.php不小心删掉

    [原文件] <?php /** * WordPress基础配置文件. * * 这个文件被安装程序用于自动生成wp-config.php配置文件, * 您可以不使用网站,您需要手动复制这个文件, ...