在学校的安排下来东软进行实训,虽然说寝室条件并不是很好但是对比学校的宿舍还是好不少hhh 2018new_erha_org.png 虽然说这里的老师讲的比较慢,但是每一点都是很实用的点,今天就将这两天学到的内容做一个简单的总结吧。

在学习Spring框架之前,老师先带着我们学习了对于数据库的基础操作,让我也对数据库有了初步的认识,最初对数据库的认识就是一个简单的文件,然后通过软件来读写数据库,然后就是一些查表等等操作,但是后来实际操作发现并不是这样子,数据库的操作远比想象的复杂,但是功能也远比想象的强大。

1.先说说我现在对于数据库的整体认识吧

        首先数据库大概可以看成一个运行在你计算机上面的小型服务器,但是只有对数据的操作,但你需要操作数据库的时候,你需要使用用户密码连接登录数据库,然后通过特定的语句操数据库(是不是特别熟悉,通过控制台登录你的linux服务器,然后通过特定的命令来操作你的linux),然后你就可以写一些程序通过特定的端口访问你的数据库,这里也和你通过特定端口ssh你的服务器类似。然后你就可以在程序里面往数据库里面存放,取出以及查找数据等操作,这样的话就可以减少程序在运行时候的负担。何出此言呢,在以前写程序的时候总会遇到数据过多然后导致内存占用过多的情况,使用数据库就不会这样,数据库的数据都是存到硬盘里面,相对于内存来说,硬盘的大小可是大很多,基本上不用考虑数据溢出的问题。而且在程序退出的时候数据并不会像在内存里面储存的一样消失,按照软件工程里面的原则来说,数据和程序实现了解耦,两个模块的关系尽可能地减少,可维护性可扩展性都极大增强,这可以极大延长程序的生命周期。然后就是成熟的数据库系统具有强大的查询能力,比如多表联合查询等,对比编写程序在内存里面查询要高效的多。

2.基础数据库操作

        跟着老师学了一些基础操作,现在将这些代码记录一下吧,以后肯定会用到的。

-- 创建数据表
CREATE TABLE class_table(
    class_id INT(4) PRIMARY KEY AUTO_INCREMENT, 
    -- INT表示数据类型括号里面表示最大长度 PRIMARY KEY 表示主关键字就是只能出现一次 AUTO_INCREMENT表示在新添加数据的时候这个值是自动增加1的
    class_name VARCHAR(20) NOT NULL 
    -- NOT NULL 表示不能为空
)


CREATE TABLE student_table(
    student_id VARCHAR(10) PRIMARY KEY,
    student_name VARCHAR(20) NOT NULL,
    student_birthday DATE,class_table
    -- DATE表示一种数据类型
    class_id INT(4),
    CONSTRAINT FOREIGN KEY(class_id) REFERENCES class_table(class_id) ON DELETE SET NULL
    -- 这里是多表联结的操作 表示当class_table有class_id删除的时候连带将这个里面的class_id的值设置为NULL
)

-- 添加班级
INSERT INTO class_table(class_name) VALUES("java1");
-- 表示往class_table中添加一个class_name “java1” 注意这里的class_id可以自加 所以不用主动添加
INSERT INTO student_table(student_id,student_name,student_birthday,class_id) VALUES("2017090911", "lS", "19980709",1);
-- 与上面类似,要注意参数的顺序就可以 注意这里的student_id不可以自加 所以要主动增加

-- -- 删除数据 
DELETE FROM student_table WHERE student_id = "2017090911"
DELETE FROM class_table WHERE class_id = 1;
-- 简单粗暴 从数据库中删除id为某个值的数据(要注意主键值不可以重复)

-- 修改数据
UPDATE student_table
-- 先写要修改哪一个表
SET student_name = 'ls', student_birthday = '2015-01-23'
-- 写要修改那些值
WHERE student_id = '2017090910'
-- 写你要修改哪个 这里和删除的效果一样 可以使用多个条件筛选 用 and 和 or 连接 逻辑和代码里面一样

-- -- 查找数据
SELECT student_name, student_birthday
-- 你要的结果模板
FROM student_table 
-- 从哪一个表里面查询
WHERE student_id = '2017090910'

-- -- 排序查询
SELECT student_name, student_birthday
FROM student_table 
Order by student_birthday desc
-- 就多了一个排序的功能 里面的参数指的是通过哪个参数排序

-- 分组查询
-- 每个班级的人数
select count(*),student_id
-- count(*)表示挑选出数据的数量
From student_table
-- where class_id = 1 写上这个表示查询特定班级的顺序,就不需要下面那一个分组,下面那个分组的作用是将查询出的数据按照不同班级分开
Group by class_id;

-- 多表查询
-- 学生名字,学生编号,班级名字
-- 查询学生信息,查询条件是班级名字是java1

select s.student_name,s.student_id,c.class_name
from student_table s, class_table c
-- 防止歧义 使用别名
where s.class_id = c.class_id;

SELECT s.*
-- *表示所有数据
FROM student_table s, class_table c
WHERE c.class_name = 'java1' AND s.class_id = c.class_id