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')
-- 修改学员名字UPDATE `student` SET `name`='长江七号' WHERE  id = 1; -- 有条件-- 不指定的情况下,会改动所有表!!!!!UPDATE `student` SET `name` = '长江七号'-- 语法-- UPDATE 表名 SET colum_name = value,[colum_name = value,....] 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是当前时间
  • 多个设置的属性之间,使用英文逗号隔开
-- 修改语句的例子UPDATE `student`SET `birthday` = CURRENT_TIME WHERE `name` = '长江七号' AND  SEX = '女'

语法:delete from 表明 where 判断条件

-- 删除数据<慎用,容易删库跑路>DELETE FROM `STUDENT`-- 删除指定数据DELETE FROM `student` WHERE id = 1;

作用:完全清空一个数据库表,表的结构和索引约束不会改变!!

-- 清空数据表,例如清空student表TRUNCATE `student`-- 安全写法,删除表,防止删除数据库名为`student`TRUNCATE TABLE `student`

相同点:都可以删除数据,都不会删除表的结构

不同:

  • TRUNCATE 重新设置自增列,计数器会归零
  • TRUNCATE 不会影响事务
-- 测试CREATE TABLE `test`(    `id` INT(4) NOT NULL AUTO_INCREMENT,    `COLL` VARCHAR(20) NOT NULL,    PRIMARY KEY('id'))ENGINE=INNODB DEFAULT CHARSET=UTF8INSERT TNTO `test` (`coll`) VALUES('1')('2')('3')DELETE FROM `test` -- 不会影响自增TRUNCATE TABLE `test` -- 自带会归零
  • 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`-- 不会影响自增

-- 因为删除了所有数据,所以结果是表为空

总结

更多相关文章

  1. 《Android和PHP最佳实践》官方站
  2. android用户界面之按钮(Button)教程实例汇
  3. TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
  4. Android(安卓)UI开发第十七篇——Android(安卓)Fragment实例(Lis
  5. Android——Activity四种启动模式
  6. Android布局(序章)
  7. Android发送短信方法实例详解
  8. Android(安卓)读取资源文件实例详解
  9. android 蓝牙通讯

随机推荐

  1. android:Spinner(下拉框)控件的使用
  2. Android 一个apk多个入口
  3. Android中的Junit单元测试
  4. android 列表 数据显示总结
  5. android定位个人当前位置
  6. 安卓隐藏标题栏状态栏 ,实现全屏效果
  7. Android程序意外终止问题
  8. Android核心分析之二十一Android应用框架
  9. Android/iOS 和js的交互的兼容性写法
  10. Android Dialog背景全透明无边框 Theme S