3、MySQL数据管理

3.1、外键(了解即可)

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

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 '密码',`sex` 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=utf8-- 创建表的时候没有外键关系
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 '密码',`sex` 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=utf8ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
-- ALTER TABLE 表 ADD CONSTRAINT 约束名 FOREIGN KEY(作为外键的列) REFERENCES 引用表(引用字段);

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

最佳实践

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

3.2、DML语言(全部记住)

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

DML语言:数据操作语言

  • insert
  • update
  • delete

3.3、添加

insert

-- 插入语句(添加)
-- insert into 表名([字段名1,字段名2,字段名3]) values('值1','值2','值3',...),('值1','值2','值3',...)
INSERT INTO `grade`(`gradename`) VALUES ('大四')-- 由于主键自增,我们可以省略主键(如果不写表的字段,他就会一一匹配)
-- 一般写插入语句,我们一定要数据和字段一一对应!-- 插入多个字段
INSERT INTO `grade`(`gradename`)
VALUES('大二'),('大一')INSERT INTO `student`(`name`) VALUES('张三')INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES('张三','aaaaaa','男')INSERT INTO `student`(`name`,`pwd`,`sex`)
VALUES('李四','aaaaaa','男'),('王五','aaaaaa','男')

语法:insert into 表名([字段名1,字段名2,字段名3]) values('值1','值2','值3',...),('值1','值2','值3',...)

注意事项:

  1. 字段和字段之间使用 英文逗号 隔开
  2. 字段是可以省略的,但是后面的值必须要一一对应,不能省略
INSERT INTO `student`
VALUES(5,'阿飞','aaaaaa','男','1998-12-7',1,'青岛','666@6.com')
  1. 可以同时插入多条数据,VALUES后面的值,需要使用 英文逗号 隔开即可VALUES(),(),...

3.4、修改

update 修改谁 (条件) set 原来的值 = 新值

-- 修改学员名字,带了where条件
UPDATE `student` SET `name` = '老六' WHERE id = 1;-- 不指定条件的情况下,会改动所有表!
UPDATE `student` SET `name` = '老六';-- 修改多个属性,逗号隔开
UPDATE `student` SET `name` = '老大',`email` = '555@5.com' WHERE id = 1;-- 语法:
-- UPDATE 表名 SET colnum_name = value[,colnum_name = value,...] where [条件];

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

操作符会返回布尔值

操作符 含义 范围 结果
= 等于 5=6 false
<> 或 != 不等于 5!=6 true
>
<
<=
>=
BETWEEN … AND … 在某个范围内 [2,5]
AND && 5>1 and 1>2 false
OR || 5>1 or 1>2 true
-- 通过多个条件定位数据,无上限! &&  ||
UPDATE `student` SET `name` = '阿飞' WHERE `name` = '小弟' AND `address` = '青岛';

语法:UPDATE 表名 SET colnum_name = value[,colnum_name = value,...] where [条件];

注意:

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

3.5、删除

delete 命令

语法:delete from 表名 [where 条件]

-- 删除数据(避免这样写,会全部删除)
DELETE FROM `student`;-- 删除指定数据
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数据管理相关推荐

  1. 虚拟机CENTOS7下 安装8.0版本MySQL MySQL主从配置详细~

    全部代码,写在后面吧! 全部的代码在后面. 1.安装mysql 先rz命令上传一下!出现未响应是很正常的情况!等会就好啦. ls查看一下,已经出现啦~ xz -d mysql-8.0.13-linux ...

  2. [mysql] mysql 5.6.X 慢查询日志

    慢查询日志 一篇好文章,学习保存.... 打开慢查询日志 慢查询日志,顾名思义就是记录执行比较慢查询的日志. 查看是否开启慢查询日志: show variables like '%slow%'; 打开 ...

  3. 登录mysql出现/var/lib/mysql/mysql.sock不存在

    问题描述: 1.mysql安装完成后,使用 service mysqld restart 总是出现stop mysqld service 失败. 2.使用mysql -uroot -p登录出现找不到  ...

  4. mysql:mysql error:Access denied for user 'root'@'localhost' (using password: YES)

    在给服务器添加用户的时候,一不小心添加主机名错误.我直接把ip给添加上去了,这就十分尴尬了,然后在修改的时候碰到了这个问题,记录一下. 一.mysql添加用户时的操作: insert into mys ...

  5. 设置更改root密码 连接mysql mysql常用命令

    一.设置更改root密码 #/etc/init.d/mysqld start #ps aux |grep mysql #mysql -uroot //提示-bash: mysql : 未找到命令 #l ...

  6. [MySQL] MySQL的自己主动化安装部署

    有过MySQL运维的人应该都清楚,线上的MySQL一般都採用源代码编译,由于这样才干够依据企业的各自须要选择要编译的功能,尽管MySQL的源代码编译挺简单的,可是试想一下,假设你有几百台server同 ...

  7. useradd -g mysql mysql_Linux —— useradd -g mysql mysql解析及useradd详解

    当我们在不通过yum(CentOS).apt-get(Ubuntu)来安装MySQL的时候,通常执行以下命令来创建一个用户名为mysql 的用户并加入mysql用户组: [root@localhost ...

  8. mysql snmp agent_WebNMS SNMP Micro Agent for MySQL - MySQL Management Console

    主页 > SNMP Micro Agent for MySQL WebNMS SNMP Micro Agent for MySQL™ MySQL数据库服务器是世界上应用最普遍的开放式源码数据库. ...

  9. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)解决方法

    登陆mysql的时候,出现了这个问题: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' ( ...

  10. mysql use mysql_1、设置mysql远程访问执行mysql 命令进入mysql 命令模式,执行如下SQL代码mysql use mysql; mysql GRANT ALL ON ...

    1.设置mysql远程访问 执行mysql 命令进入mysql 命令模式,执行如下SQL代码mysql> use mysql; mysql> GRANT ALL ON *.* TO adm ...

最新文章

  1. 【青少年编程】【三级】小鸡吃虫
  2. 机器学习入门|快速掌握逻辑回归模型
  3. 2018牛客网暑假ACM多校训练赛(第二场)E tree 动态规划
  4. 全球顶会论文作者,28天手把手带你复现顶会论文
  5. 新生儿信息管理系统升级说明
  6. mybatis动态调用表名和字段名
  7. 使用Zookeeper实现leader选举
  8. c语言char有什么作用,C语言中char*和char[]用法区别分析
  9. python使用线程池多线程执行,并得到返回的结果
  10. UVA12039 Goldbach‘s Cardinality【欧拉筛法】
  11. matlab画图命令plot,matlab画图命令plot
  12. 教孩子学编程 python 下载_教孩子学编程 python语言版
  13. myeclipse安装插件phpeclipse后进行PHP代码编写
  14. shell脚本实现逻辑关系与、或、非
  15. java系统化基础-day02-运算符、选择结构、循环结构
  16. 在线教育行业和产品数据分析报告
  17. 英语口语笔记B1-Unit7.交通出行-04-Train travel in Europe
  18. 深入Python 验证码解析
  19. 数学方法生成六位随机数
  20. 软件测试就是点点点?你想的太简单了......

热门文章

  1. 2023年互联网地图测绘资质怎么办理?
  2. 解决:ValueError: (‘Unrecognized keyword arguments:‘, dict_keys([‘ragged‘]))
  3. 从键盘输入一个大写字母,然后转换成小写字母输出。
  4. ESP32+arduino智能浇水系统
  5. 32位机器和64位机器的区别
  6. 养子女对养父母和亲生父母都要有赡养义务吗
  7. css 实现火焰效果
  8. 汇编语言字符串操作指令movs,和逻辑段寄存器【学习笔记】
  9. slot-scope用法及理解
  10. slot-scope写{}