3、mysql数据管理
第一种方式:不太建议,看起来复杂些
1
2
3
4
5
|
-- 学生表的 gradeid 字段,要去引用 年级表的 gradeid -- 定义外键key -- 给这个外键添加约束,(执行引用),references 引用 key `fk_gradeid`(`gradeid`) constraint `fk_gradeid` foreign key (`gradeid`) references `grade`(`gradeid`) |
第二种方式:建议
1
2
3
4
5
|
-- 创建表成功后,添加外键约束 -- 创建表的时候没有外键关系 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
1
2
3
4
5
6
7
8
9
10
11
|
-- 插入语句 insert into 表名([字段1,字段2,字段2]) values ( '' ),( '' ),( '' ) -- insert into 'grade'('gradename') values ('大四') -- 一般写插入语句,一定要数据和要插入值的字段一一对应 -- 给某个字段添加多个字段 insert into `表明`(`属性列字段`, ...) values ( '匹配的值1' , '匹配的值2' , '匹配的值3' ) /* 如果不想写属性列的字段名,那么就吧每个属性列完全匹配,一一对应的写出后面的值*/ |
注意事项
- 字段和字段之间使用英文逗号隔开
- 字段是可以省略的,但是后面的值必须要一一对应,不能少
- 可以同时插入多条数据,values 后面的值,需要使用,隔开即可valuse(),(),......
1
2
|
-- 插入多条数据<即元组>,多个行的数据 insert into `s`(`sno`,`sname`,`sex`,`sage`) values ( '180109' , '王五' , '男' , '76' ),( '180108' , '李四' , '男' , '88' ) |
3.3修改
update 修改谁(条件)
1
2
3
4
5
6
|
-- 修改学员名字 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是当前时间
- 多个设置的属性之间,使用英文逗号隔开
1
2
|
-- 修改语句的例子 update `student` set `birthday` = current_time where ` name ` = '长江七号' and sex = '女' |
3.4 删除
delete 命令
语法:delete from 表明 where 判断条件
1
2
3
4
5
|
-- 删除数据<慎用,容易删库跑路> delete from `student` -- 删除指定数据 delete from `student` where id = 1; |
truncate 命令
作用:完全清空一个数据库表,表的结构和索引约束不会改变!!
1
2
3
4
|
-- 清空数据表,例如清空student表 truncate `student` -- 安全写法,删除表,防止删除数据库名为`student` truncate table `student` |
delete 和truncate的区别
相同点:都可以删除数据,都不会删除表的结构
不同:
- truncate 重新设置自增列,计数器会归零
- truncate 不会影响事务
1
2
3
4
5
6
7
8
9
10
11
12
|
-- 测试 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 继续从上一个子增量开始(存在文件当中的,不会丢失)
+++
+++
课后的添加实例展示
添加:
1
2
3
4
5
6
7
|
-- 一条元组的添加示例 insert into `student` values ( '180103' , '对象三' , '女' , '22' , 'cs' ) -- 测试添加多条元组,中间使用英文逗号隔开 insert into `student` values ( '180105' , '对象五' , '男' , '19' , 'is' ),( '180106' , '对象六' , '女' , '20' , 'cs' ),( '180107' , '对象七' , '女' , '20' , 'cs' ) -- 因为表的结构设置非空,这里没有测试只添加某个属性列的值 |
+++
修改:update
1
2
3
|
update `student` set `sname` = '操作修改对象一' where `sno`= 180102; -- 记得添加的时候不要带逗号,我的问题出在了下面带了逗号 -- update `student` set `sname` = '操作修改对象一',where `sno`= 180102; |
添加成功后,表的结果截图展示:
删除:delete
1
2
3
4
5
6
7
|
-- 删除单条记录<符合where条件就删除这条记录> delete from `student` where sname = '操作修改对象一' ; -- 使用truncate清空数据表 truncate table `student` -- 或者使用 delete删除所有数据库 delete from `student` -- 不会影响自增 |
操作结果展示
-- 因为删除了所有数据,所以结果是表为空
总结
到此这篇关于mysql数据库值的添加、修改、删除及清空操作的文章就介绍到这了,更多相关mysql值添加、修改、删除及清空内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.cnblogs.com/yufei12/p/14897047.html