Mysql数据库值的添加、修改、删除及清空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=6false
<>或者 !=不等于5<>6true
>⼤于5>6false
<⼩于5<6true
>=⼤于等于5>=6false
<=⼩于等于5<=6true
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 = '⼥'truncate可以加条件吗
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`
-- 不会影响⾃增
操作结果展⽰
-- 因为删除了所有数据,所以结果是表为空
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论