Day03 狂神说Java-MySQL>P10-P14

本文详细介绍了MySQL中InnoDB和MyISAM两种存储引擎的区别,包括它们在物理文件和字符集编码上的差异。此外,还探讨了如何在数据库级别创建和管理外键,以及如何使用ALTER TABLE语句修改和删除数据表字段。同时,展示了INSERT和UPDATE语句的用法,用于插入和更新数据。强调了在实际应用中,建议避免使用物理外键,推荐通过程序实现多表数据关联。
摘要由CSDN通过智能技术生成

P10 MyISAM和InnoDB区别

SHOW CREATE DATABASE school -- 查看创建数据库的语句
SHOW CREATE TABLE student -- 查看student数据表的定义语句
DESC student -- 显示表的结构
/*
INNODB 默认使用
MYISAM 早年使用
1. INNODB和MYISAM的区别
所有数据库都存在于data目录下
本质还是文件存储
2. MySQL引擎在物理文件上的区别
设置数据库表的字符集编码
默认编码Latin1不支持中文
my.ini配置默认编码
*/

P11 修改和删除数据表字段

-- 修改表
ALTER TABLE teacher RENAME AS teacher1
-- 增加字段
ALTER TABLE teacher1 ADD age INT(11)
-- 修改表字段
ALTER TABLE teacher1 MODIFY age VARCHAR(11)
ALTER TABLE teacher1 CHANGE age age1 INT(1)
-- 删除表字段
ALTER TABLE teacher1 DROP age1
-- 删除表
DROP TABLE IF EXISTS teacher1
-- 注意点
-- 1.字段名使用``
-- 2.注释
-- 3.关键字大小写不敏感,建议小写
-- 4.所有符号用英文

P12 数据库级别的外键

外键–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
-- 定义外键key
-- 给外键添加约束
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
-- 定义外键key
-- 给外键添加约束
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=utf8

-- 创建表的时候没有外键关系
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(gradeid);

以上操作都是物理外键,数据库级别的外键,我们不建议使用

数据库应该就是单纯的表,只用来存数据,只有行列

想使用多张表的数据,使用外键,这里我们使用程序使用

P13 Insert语句详解

-- 插入语句
INSERT INTO `grade`(`gradename`) VALUES('大四')
-- 由于主键自增,我们可以省略。如果不写表字段,就会自动一一匹配
INSERT INTO `grade` VALUES('大四')
-- 插入多个字段
INSERT INTO `grade`(`gradename`) VALUES('大二'),('大一')

INSERT INTO `student`(`name`) VALUES ('张三')

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

P14 update语句详解

-- 修改学员名字
UPDATE `student` SET `name`='狂神' WHERE id = 1;
-- 不指定条件,会改动所有表
UPDATE `student` SET `name`='狂神';
-- 修改多个属性
UPDATE `student` SET `name`='狂神',`email`='1234@qq.com' WHERE id = 1;
/*
where返回布尔值,可以设置复杂条件
操作符
=
<>或!=
>
<
<=
>=
BETWEEN ... and ...
AND 多个条件成立
OR
*/
UPDATE `student` SET `name`='狂神',`email`='1234@qq.com' WHERE `name`='狂神' and sex='女';
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值