卓越_JF1807A33_日报汇总
一阶段
-------------------------一阶段:知识点汇总------------------------------------
人生就像一场马拉松,可以慢下来,不要停下来,更不要偏离跑道失去方向。
一、数据库知识
1.数据库,存储位置:硬盘
- 数据以数据库的方式存储-for->数据的"持久化"
- VS
- 卡带、磁带cd(不出20~30年就会模糊)
- 内存条(关掉程序就删除、也可能常驻后台但是关机就全over了。)
- 隐患:删库跑路-VS-防范:数据备份,推荐云端。
2.认识——数据库产品
- 本地型数据库:sqlite3(免费、免安装、小巧几百k)
- 常见的数据库产品:
(1)大型数据库:oracle甲骨文,2~4g,(收购sun公司及其Java);-->服务器型
(2)中型数据库:
- mysql,几百M,(%80~%90的免费功能,中小型企业的lover之一)
- Sql-server;-->服务器型
(3)小型数据库:
- sqlite,几百k(小巧玲珑、免费、免安装)
-->应用在移动端、嵌入式设备:电饭煲、洗衣机、打卡机(main-c语言)
- 微软access,服务收费
(4)关于汉化软件
-->很low逼
-->英文原版:提升编程效率==英语词汇学习,一边开发一边查单词(是时候抽时间学习英语了!)
3.数据库利用【二维表】的模式–>来存储数据
- 4个元素:
(1)关键字:当前系统已经定义好的一些单词或词组,例如,public;
(2)标识符:程序员自己给代码取的名字,但不能用关键字;
(3)记录record(行):例,张1、张2、张3;
(4)字段 field(列):例,学号字段、姓名字段。
4.小黑框代码:DOS命令行
(1) 前期准备:
- 文件显示设置
- (不要隐藏文件后缀-->工具-->文件夹选项操作)
- 在硬盘上创建数据库文件DB(database)
- 新建文本,改后缀(.db)
- 用数据库软件打开数据库文件
- 借助sqlite3.exe小程序
- p.s.需要在同级目录内操作db文件
(2)"操作系统"的基本操作-->dos命令:
- win+R。远行cmd
- help回车-显示所有命令;
- cls回车-清净
- 切换盘符
- 输入-->盘符字母:-->根目录
- dir回车-->查看当前目录下所有的文件/文件夹信息
- cd+空格+文件夹名-->进入目标文件夹
- 通过sqlite3进入到db文件中
- sqlite3+空格+文件名.db-->出现【sqlite>】代表操作成功
(3)点命令-->当进入到某个db文件后,就可以使用sqlite的点命令
#1--.database-->查看当前db文件的位置;
#2--.table-->查看当前db文件中,所有表的名字;
#3--.schema(空格 表名)-->查看表内部结构,不加表名就查当前db文件的所有表内部机构;
#4--.q-->退出程序
【p.s.点命令是没有分号结尾的。】
#5:.head on—显示表头;.head off—关闭
#6:.mode column—表格左对齐
#7:.read 脚本全拼.sql-->读取脚本文件代码
(4)sql语言:结构化查询语言(Structured Query Language),简称SQL
-->增删改查
*DCL-数据控制语言:角色授权、权限管理(大型);
*DDL-数据定义语言:创建、删除表格;
*DML-数据操纵语言:增加、删除、修改数据;
*DQL-数据查询语言:数据的查询。
5.创建二维表
(1)数据类型
*数字:整数int、小数real;
*文本:text
(2)创建表格--简单的增删表
- create table 表名 (字段1空格 数据类型,字段2空格 数据类型);-->回车
*表名规范:
-->可用英文字母(不区分大小写)
-->或“_”下划线;
-->不用纯数字(数字开头也不行)与中文,
-->也不能用关键字.
*符号注意:
- 逗号","-->只做间隔,不用结尾
- 分号";"-->代表sqlite命令结束,缺少分号直接回车,系统会默认为sql语句没有写完…
- drop table 表名;
drop table if exists tb_myTable;
二、SQL知识点
1.约束
(1)实体完整性保证:
- 主键约束primary key:
把一个“不可能重复”并且“不能为空”的这样一个字段作为表的主键;
- db文件中的每一张表,都必须,有且仅有一个主键。
- Sqlite中,一个自增长字段可定义为:
integer PRIMARY KEY autoincrement,
(在插入一个新数据时,只需要将这个字段的值指定为NULL,
即可由引擎自动设定其值,引擎会设定为最大的rowid+1。)
(2)域完整性:(域--字段,列)-->规避不正确且不可靠的数据
- 检测约束check();
- 非空约束not null;
- 默认值约束default+'';
- 唯一约束unique;(仅有一次机会为空值null)
- 非空 + 唯一 == 主键约束
(3)用户定义完整性/自定义
-->在对原有约束的基础上进一步进行约束;
(4)参照完整性:-->保证表格有意义
- 至少涉及两张表,表格间具有一定约束,不能随意增删改;
- 外键约束foreign key:PRAGMA foreign_keys = ON;
- references 表名(主键字段)-->外键必须是其他表的主键
+on delete cascade-->删除主表,则会清空对应外键的子表数据;
+on delete set null-->删除主表,子表外键字段值设置为null;
+on update cascade-->存储在子表中的每1行,对应的字段的值会被自动修改成同新的父键匹配。
+on delete default on update no action-->从表不受主表影响
2.完整建表:
(1)语法
- create table 表名(字段1 数据类型 约束条件,字段2 数据类型 约束条件);
(2)外键约束下的——增删表
- 当tb_myTable作为主表,存在外键约束时候:执行这句sql失败,报错:
foreign key constraint failed…
- 意译为:要是被你执行成功,我这个外键岂不是很失败!
- 两种方法:
- 先删从表再删主表; - 从表字段设置外键时添加:on delete set null on update cascade - 克服删除限制; - 依旧无法克服插入限制:主表没有的主键值,不能作为从表的外键输入值。
(3)主键不确定
- 一张表的每一个单独字段都不具备唯一性,可选操作有2:
(A)使用联合/复合主键:外键1,外键2
(B)单独写/添加一个字段作为标识列, - 自增长ID:
row_id integer PRIMARY KEY autoincrement,
- 不能保证数据重复,只是保证了规范而已;
- 由于其便于维护,现实中的企业多会选择此项操作
3.增insert:往表中插入数据
(1)简约完整型:insert into 表名 values (所有字段值);
- 所有字段的值不管能不能为空,都要填进去,
- 并且顺序和表的结构保持一致;
(2)灵活可空字段型:
insert into 表名(非空字段1,非空字段2,字段n)values (值1,值2,值n)
- 输入指定(至少要包含所有非空)字段的值,
- 前后书写顺序要保持一致;
- 报错提示:constraint failed,意为约束失败,
其实约束是成功,只是系统撒娇“如果别被你随便增加进去,那我岂不是失败了?”
(3)简单查:
- select * from 表名;
(4)点命令补充
#5:.head on—显示表头;.head off—关闭
#6:.mode column—表格左对齐
4.删delete
(1)删库跑路:delete from 表名
(2)指定数据:delete from 表名 where 字段=某个值
逻辑删除(现实企业的例行做法,只是不给你看而已,人家还是保留着)VS物理删除(真的删了)
(3)删除关键字
- delete 只删除数据不删除表的结构(定义) ;——DML
- drop 语句将删除表的结构及被依赖的约束(constrain)。——DDL
(4)SQLite3数据库中包含自增列时,会自动建立一个名为 sqlite_sequence 的表。
- 这个表包含两个列:name和seq。
- name记录自增列所在的表,
- seq记录当前序号。
- 所以要想使自增列的序号归零,则需要修改 sqlite_sequence表:
DELETE FROM tb_myTable;
DELETE FROM sqlite_sequence WHERE name = ‘tb_myTable’;
- 或者
UPDATE sqlite_sequence set seq=0 where name='tb_myTable';
5.修改update
(1)针对表字段:
- update 表名 set 某个字段=新的值;
(2)针对某条记录/指定数据的字段值:
- update 表名 set 某个字段=新的值 where 主键字段=某个值;
6.编写sql脚本 -->自动执行
(1)新建.sql文件-->与sqlite3同级目录
- 存储代码,只要是sql语言都能写入,
- 可以用notepad++打开;
(2)sql语言
- DDL:创、删表
- DML:增、删、改数据
- DQL:查
(3)注释:
- 给人类看的解释,计算机是不会识别的;
- 格式:两条横杠(--)+内容
(4)点命令补充
#7:.read 脚本全拼.sql-->读取脚本文件代码
(5)乱码解决:
- 转换为注释-->注释排除
- ANSI本地编码 -VS- UTF-8编码
(6)骚操作:
- drop table if exists 表名;-->如果存在这张表,我先删掉你。
- 先删再建-->防止建表冗余.
7.查询select
(1)认识运算符(待分类)
- 算术运算符:+-*/
- 关系运算符:= > < >= <= ! <>
- 逻辑运算符:and or
- between...and...(>= and <=)
(2)语法
select * from 表名 where 字段+运算符+条件值;
- 查询指定字段:select 字段1,字段n from 表名 where…
- 可以临时重命名表头:字段1 as xxx,字段n as xxx
(3)增加排序
排序order by 放在一句话的最末端
- 默认为,升序Asc
- 降序Desc
(4)模糊查询
增加查询条件: where 字段 like 通配符;
- 下划线_,代表一个字符
- 百分号%,代表任意长度的字符
(5)分页查询
增加条件:limit x offset y;
- 每页限制x条,从第(y+1)条开始查;
- 编号是从0开始的;
- p.s编程中99%的排序,编号都是从0开始的。
- 在查询中,可以做一些简单的运算:
例,
select stu_name, (2018-stu_age) as 出生年份 from t_stu;
三、SQLite expert
1.可视化的图形软件:SQLite expert–>提高开发效率
- 接触的第一款全英文编写的软件。
- 官网可下载,页面download下拉至4.x版本
- 专业版professional--收费
- 个人版personal--免费
2.操作:
调节字体大小:tools--options--fonts--modify--cousolos14
(1)新建db文件:(左侧油桶区)
- file--> database
- 指定数据库存放的路径,并且给数据库命名,后缀名建议设置为.db
(2)创建表
- 点击目录菜单栏sql输入代码
- 复制脚本文件代码(直接打开文件会乱码)
(3)执行sql脚本
- 选中部分脚本-->execute-->执行sql语句
- 左下角会显示执行效率
- 下方区域为控制台会显示执行结果
(4)图形界面操作
- 点击ddl模块-->.schema(查看表内部结构)
- 点击data模块-->select * from;
- 双击data中某个值可以直接修改-->update,改后选勾,refresh更新。
- 右键油桶-->close,关闭db文件;删除数据库文件,需要到磁盘中操作。
- 工具栏,sql--new sql tab添加脚本文件页面;也可以直接在标签栏,右键添加。
四、数据库的高级查询
1.联表查询:
(1)语法要求
至少有两张表,必须有相同对应的字段。
- 两个步骤:生成[笛卡尔积表],再过滤数据:
select * from 表1,表2 where 关联判断(查询条件 and 关联字段);
- 或者,直接根据条件,生成联表数据,效率会更高:
select * from 表1 inner join 表2 on 关联条件 where 过滤判断条件;
- 由于存在同名的关联字段,要注意添加该字段所属表名前缀,避免ambiguous错误(含糊不清,指向不明)!
- 联表查询,推荐使用as别名——减少表名重复书写:
- 如果别名中间含有空格,一定要加'单引号'; - 其他情况不添加,添加了反而会出问题。 - as可以缺省,是一样的效果。(推荐加as,保证编码规范) - 逗号:是用来将字段与字段分隔开的,然而,我们的别名不需要逗号隔开。
(2)连接类型划分
(A)外连接:-->保险用法,谨防数据丢失
- 左外连接:主表 left join 从表 on-->主表中的数据一定会出现;
- 右外、全连接(splite expert不支持)
(B)内连接:
- (inner) join…on…-->交集:显示有对应关系的部分。
(C)自连接:表1与表1做一个外连接或内连接。
- 在数据齐全的情况下,内外连接的结果是一样的。
2.嵌套查询
(1)概念
- 把一个查询语句的结果集作为查询子条件,一环套一环;
- 具有局限性:例如,拿不到内环表的字段…
- 联表才是万能的!
(2)in的子查询:
- where 字段 in(结果集)
- 嵌套查询中in是易错点,用等号=只会出现一个记录呢。
select a.* from t_stu as a join t_score as b on a.stu_no=b.stu_no where b.sub_no=2 and b.score>80;
select * from t_stu where stu_no in (select stu_no from t_score where sub_no=2 and score>80);
五、搭建IDE——eclipse,初识Java
1.搭建java开发环境与运行环境(结合四阶段系统整理)
(1)JDK:JAVA开发工具包
- 课堂推荐:jdk-8u171
(企业在前两年使用的主流版本为1.7,现在逐渐偏向1.8,官网可下8u181,取名规则变化1.1~1.7-->jdk8/9/10)
- 本机:java version "1.8.0_201"(DOS:java -version回车查询)
(2)正常安装jdk,安装包就会自动地配好一些配置:
- 运行cmd(command命令提示符)-->输出Java-->验证环境。
(3)配置环境变量:
- 目的在于在任意盘符下都能够执行某个程序
- 右键_计算机_属性-->高级设置-->环境变量-->系统变量-->path-->把jdk安装的bin 路径加到path的末尾(记得在路径前面加上';'以区隔其他路径)
- 新建:变量名,JAVA_HOME;变量值,jdk安装路径。
- 添加到path中:%JAVA_HOME%\bin;
- 作用:任意盘符下都能执行(编译命令)javac
(4)Java代码的执行过程
- 程序员编写好代码.java文件-->通过javac编译生成.class文件-->通过java运行.class文件:
- dos命令,进入到相应的盘符、文件夹,
- 执行javac xxx.java,
- 成功后再执行java xxx;
- 注意:修改脚本后需要再次编译后才能执行修改成功。
2.编辑脚本
- java严格区分大小写--缩进可用Tab键
- main方法(PSVM):Java程序的主入口
public class 类名 {
public static void main(String[] args){
}
}
- 文件名规范
- 必须以.java作为扩展名;
- 一个Java文件只能有一个public class
- public修饰的类名字必须和文件名字一致;
- 允许拥有多个class,但除了内部类外,不提倡一个Java文件拥有多个类。
- 类的要素:
- 成员变量/属性:理解为类的特征;
- 成员方法/函数:理解为类的行为动作。
3.专业术语
(1)关键字
- 做成表格,常常记忆
(2)标识符:java规则,必须由英文大小写、数字、美元符$、下划线_构成,不能是关键字,也不能以数字开头
(3)变量:会改变的量
(4)常量:不会改变的量
(5)注释://单行注释//;/*多行注释*/;/**文档注释*/。
(6)命名规范:全球同行的默契
- 首字母大写
- public类名/java文件名:首字母一定要大写;
(小写没有错,但不够规范,程序不仅仅是写给自己看的!)
- 驼峰式命名
- 变量名:第一个单词首字母小写,从第二个单词开始每个单词首字母大写;
- 方法名:如,main方法,也是驼峰式命名规则。
- 全大写
- 常量名
4.Java中的数据类型
(1)基本数据类型(8个)
- 数值型:
- byte 字节型;
- short 短整型;
- int 整型;
- long 长整型;
- 浮点数:
- single 单精度;
- double 双精度浮点型;
- 字符型:
- char
- 布尔型:
- boolean 布尔类型,输出真、假(true/false)。
(2)引用数据类型:
- 类,class
- String字符串(这是,类)
- 接口,interface
- 数组,[]
5.Java中常见的运算符:
- 编程语言本质是对一些数据进行运算;
- 运算符是一种特殊的符号,
- 用以表示:数据的运算、赋值和比较等。
- 分为6种:算术、赋值、比较/关系、逻辑、位运算、三元运算符
(1)算术:+ - * / %(取余)
(2)关系/比较:> < >= <= != ==(相等) instanceof---->输出(true/false)
(3)赋值:=, +=, -=, *=, /=, %=
(4)位运算:与&, 或|, 异或^, 反码~ ,左移<<, 右移>>, 无符号右移>>>
(5)逻辑:短路与&&、短路或||、逻辑非!
- 逻辑运算符只能对boolean类型进行逻辑运算,
- 而位运算还可以对数值进行运算;
- 逻辑运算符有短路情况,
即前面的表达式可以得到最终结果时,后面的表达式将不被执行
(6)三元:
- 格式:(条件表达式)?表达式1:表达式2;
- 条件表达式true执行表达式1;
- 结果位false,执行表达式2。
- 表达式1和2为同种类型。
6.知识点运用
(1)定义变量:
- 格式:数据类型 变量名 = 初始化赋值;
(2)字符串的拼接:
- 换行输出:System.out.println("文本1"+变量值1+"文本2"+变量值2);
- 不换行输出:System.out.print();
(3)重新赋值:
- 不用定义数据类型,对原变量直接赋值;
- (vs重新定义新变量:定义新变量名要和原变量名区分开)
7.软件eclipse:
- 各个版本以天体术语命名,如Kepler(开普勒)、Luna(月亮)、Mars(火星)、Oxygen(氧气)、Photon(光子)等;
- 集成开发环境,IDE(Integrated Development Environment )
- 插件开发环境,PDE(plug-in)
- 下载版本:
8.eclipse的使用
(1)workspace路径
(2)修改字号:window--preferences--模糊查询font(同理查询update并关闭自动更新)--basic--text font--14
(3)new others-->新建工程 java project-->src源目录;jre类库;-->在src中新建包new package-->创建类New class
(4)control s 保存即自动编译
(5)输入关键字就会自动"联想";
(6)run as-->java application-->弹出控制台显示执行结果
(7)复制.java文件到工程区,
- 需要在首行添加:关键字package 包名;进入到所属包。
(8)main()方法里的(String[] args)干什么用?——参数列表,传参执行
- 如何进行传参执行?
- Run-->Run Configurations-->Arguments
- 在弹出的Program arguments框里填写参数,多参数以空格隔开;
- 填好以后点击Apply,再点击Run即可。
二阶段
三阶段
四阶段
X、xxx知识点
1.xx
(1)哈哈哈