JAVA-MySQL三{MySQL数据管理-增-删-改}JAVA从基础开始 --7
MySQL数据管理
外键(了解)
创建表时候添加约束
删除表时,有约束就需要先删除引用的表
-- 学生表的gradeid字段 要去匹配年级表的gradeid
-- 定义外键key
-- 给这个外键添加约束 (执行引用) references
CREATE TABLE
IF
NOT EXISTS `student` (
`id` INT ( 4 ) NOT NULL auto_increment COMMENT '学号',
`gradeid` INT ( 10 ) NOT NULL COMMENT '学生年级',
`name` VARCHAR ( 30 ) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR ( 30 ) NOT NULL DEFAULT '123456' COMMENT '密码',
`birthday` DATETIME DEFAULT 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
创建表后添加外键约束
Alter table `student`
add constraint `FK_gradeid` FOREIGN KEY ( `gradeid` ) REFERENCES `grade` ( `gradeid` )
以上的操作都是物理外键,数据库级别的外键,我们不推荐使用(避免数据库过多造成困扰)
最佳实现
数据库就是单纯的表,只用来存储数据,只有行-数据和列-字段
我们想使用多张表数据,想用外键,(用程序实现)
DML语言(全部记住)
数据库管理语言,数据存储和管理
1.insert
2.update
3.delete
增
# insert into 表名([字段1,字段2,]) values ('值1','值2')
insert into `grade` (`name`) values ('大二')
1·主键自增可不输入
2·若不写字段,则会一一匹配
insert into `grade` values ('3','大二')
3·一般写插入语句,一定要保证一一对应
4·多条语句插入
INSERT INTO `grade` ( `name` )
VALUES
( '大三' ),
( '大四' )
4·多个字段插入
INSERT INTO `student` ( `gradeid`, `name`, `pwd`, `birthday`, `address`, `email` )
VALUES
( '1', '李四', '123456', '2021-08-01 08:24:00', 'a', 'a@q' ),
( '1', '李四', '123456', '2021-08-01 08:24:00', 'a', 'a@q' )
5·多个字段,多条数据插入
```sql
INSERT INTO `student` ( `gradeid`, `name`, `pwd`, `birthday`, `address`, `email` )
VALUES
( '1', '李四', '123456', '2021-08-01 08:24:00', 'a', 'a@q' )
改
update 修改字段 (条件) set属性=新值
1.单行修改
update `student` set `name` = '修改1' where id = 1
2.全改(要注意不要有这种操作)
update `student` set `name` = '修改损坏'
3.修改多个属性 用逗号隔开
UPDATE `student`
SET `name` = '修改2',
`email` = '修改@'
WHERE
id = 2
where 子句 运算符
等于 : ‘=’
大于: ‘>’ ‘>=’
小于: ‘<’ ‘<=’
不等于: ‘!=’ ‘<>’
在某个区间:between : ‘BETWEEN 2 AND 5’
↑ 包含了2和5
多个条件定位数据 :
- AND 和语句 等同于&&
- OR 与语句 等同于||
update
表名
set colnum_name = value,[colnum_name = value] where 【条件】
value可以是具体值,或者是变量
多个条件或者属性,用逗号隔开
java中在每个语句开头写逗号,最后应用的时候再去掉第一个,用trim
修改某字段内容中某部分
update user set name = replace(name,'刘','李') where name like '刘%';
删
delete命令
语法:delete from 表名 where [条件]
避免不写条件,会清空数据库
truncate TRUNCATE 命令
作用:完全清空一个表,表的结构和索引不会变
! 使用truncate清空 会重置自增量
使用delete删除,当数据库重启时候,
1.innDB 会重置自增量从1开始,因为它是存在内存中的。
MyISAM 继续从上一个自增量开始,存在文件中的