数据库
我的上一篇Blog简单列举了几种查询的方式方法等,写的很没有思路我觉得我需要重新梳理一下思路跟大家讨论下数据库
数据库的操作归根结底是增删改查的操作
那么再操作增删改查之前肯定的是我们需要有一个数据库供我们去操作,而且有相关的环境。我最早的那篇blog有关于mysql的软件下载并且没有积分要求需要的朋友可以移步https://blog.csdn.net/weixin_41950282/article/details/82083597
对于数据库的创建,依照个人喜好就好,可以用Navicat等可视化软件去点点点的进行创建,也可以在shell命令行模式下进行
例如你要建一个school库 库里有students表 classes表score表等
打开你的命令行窗口进入到mysql中
然后create database school; 新建你的数据库
这时你可以show databases;查看你的数据库有哪些
这时你的数据库是建好了的但是库中没有表单以及任何数据,你需要按照需求去新建一些表单并向其中添加某些数据首先你需要新建你的表单
create table students(
id int unsigned primary key auto_increment not null,
name varchar(20) default '',
age tinyint unsigned default 0,
height decimal(5,2),
gender enum('男','女','中性','保密') default '保密',
cls_id int unsigned default 0,
is_delete bit default 0
);
--这里新建了你的学生表单,
-- id 一般为主键 不可重复不可为空的一个自增量
-- name 学生的姓名,这里用到的是varchar类型
-- age 年龄,因为一般不会超过200岁,所以选择较短的tinyint类型
-- height 身高一般是不会超过5位数(包括两位小数的情况下)
-- gender 性别,男女或者保密或者像某主持人一样的这种使用enum,枚举类型,但更多的时候会选择使用tinyint然后用某一个数字代表一个选择项,这相对于以后会增加更多的可扩展性,毕竟改代码要比改数据库简单的多,这里使用enum也仅仅是为了为大家展示下数据库可用的数据类型
-- cls_id 这个为班级的id,同时也是students表中的主键
-- 例如我要记录学生的信息及考试成绩,
--+----+--------+---------+-------+
--| id | name | subject | score |
--+----+--------+---------+-------+
--| 1 | 张三 | 语文 | 90 |
--| 2 | 张三 | 数学 | 80 |
--| 3 | 张三 | 英语 | 60 |
--| 4 | 李四 | 语文 | 75 |
--| 5 | 李四 | 数学 | 85 |
--| 6 | 李四 | 英语 | 45 |
--| 7 | 王五 | 语文 | 99 |
--| 8 | 王五 | 数学 | 55 |
--| 9 | 王五 | 英语 | 59 |
--| 10 | 赵六 | 语文 | 88 |
--| 11 | 赵六 | 数学 | 88 |
--| 12 | 赵六 | 英语 | 70 |
--| 13 | 田七 | 语文 | 77 |
--| 14 | 田七 | 数学 | 100 |
--| 15 | 田七 | 英语 | 90 |
--+----+--------+---------+-------+
--这个表中记录的学生的姓名就太多次的重复了,我们可以把学生的成绩单独形成一张表,然后再把成绩和该生用外键进行关联那么表中的冗余数据就会减少很多。
--is_delet 中记录该条记录是否删除用0或者1来表示,这样我们就可以对该条数据进行逻辑上的删除(在查询时略过该数据,避免物理删除后想要恢复数据时尴尬)
表建好之后需要我们向表中插入数据,这时会用到增删改查中的增
insert into
- 说明:主键列是自动增长,但是在全列插入时需要占位,通常使用0或者 default 或者 null 来占位,插入成功后以实际数据为准
- 全列插入:值的顺序与表中字段的顺序对应
insert into 表名 values(...)
例:
insert into students values(0,’郭靖‘,1,'蒙古','2016-1-2');
- 部分列插入:值的顺序与给出的列顺序对应
insert into 表名(列1,...) values(值1,...)
例:
insert into students(name,hometown,birthday) values('黄蓉','桃花岛','2016-3-2');
- 上面的语句一次可以向表中插入一行数据,还可以一次性插入多行数据,这样可以减少与数据库的通信
- 全列多行插入:值的顺序与给出的列顺序对应
insert into 表名 values(...),(...)...;
例:
insert into classes values(0,'python1'),(0,'python2');
insert into 表名(列1,...) values(值1,...),(值1,...)...;
例:
insert into students(name) values('杨康'),('杨过'),('小龙女');
说完增我们来聊一聊数据库中的删
drop
drop在英文中有放弃,停止的意思,那当我们要放弃这个数据库或者这个数据库中的某一个表时可以用到drop drop关键字可以摧毁数据库或者表并不仅仅是清除数据那么简单,其表结构也会被删除
drop table 表名;
drop database 库名;
请记得在摧毁前备份数据库,同时不建议使用物理删除这么暴力的方式清除数据,除非这个数据对你对别人都没什么意义或者作用
清除数据但是不清除表结构的话我们还可以用
truncate table 表名;
如果要删除的不是全部而是一部分数据的话,我们可以使用
delete
delete from 表名 where 条件
例:
delete from students where id=5;
删除我们聊的差不多了,接下来我们聊聊修改
同时还有一部分修改和删除连接在一起的部分,逻辑删除
逻辑删除,本质就是修改操作
update students set is_delete=1 where id=1;
修改使用的就是update,我们可以理解为修改或者说对旧的数据进行更新
格式: update 表名 set 列1=值1,列2=值2… where 条件
update 表名 set 列1=值1,列2=值2... where 条件
例:
update students set gender=0,hometown='北京' where id=5;
这些目前就是我对数据库进行的增删改的一般性操作,欢迎在sql语句中游了很远的大佬对我进行指正,万分感谢!