0%

#web开发/czh_blog/数据库
2017年8月30日 下午2:39

相关子查询:子查询中会使用外部表

两种情况会出现先查询外部产生表的第一条信息,用这条信息中的内容在内部表中匹配查询信息

  1. 这个可以作为我原先总结的第三种写sql思维的补充
  2. select
    1. 使用情形:当我们的需要对中间表(视图)中的每一条数据进行处理
    2. 例子
      1. 这里可以很容的查出来每个学生的总分zcj对应的表
      2. select sc.s,sum(sc.score) zcj from sc group by sc.s
      3. 然后,在这个表的基础上进行查询,查询出来的内容中的具体某个人的信息中的总分都要和整个表中的所有人的总分进行比较,然后看看有几个人比他大。
      4. 最后的数值,就是他的排名
        1. 这里的关键是:select到from之间的语句是可以进行单独的sql语句执行的。这条是这种写法成立的本质原因
        2. 执行的时候,a.zcj就是一个具体的数值
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          --18、查询学生的总成绩并进行排名
          select a.s,a.zcj,
          (select count(1) from
          (select sc.s,sum(sc.score) zcj from sc group by sc.s) b where b.zcj>a.zcj
          )+1 mc
          from
          (
          select sc.s,sum(sc.score) zcj from sc group by sc.s
          ) a
          order by mc;
    3. 另外一种写法:
      1
      SELECT b.s,b.zcj,count(1) mc from  (select sc.s,sum(sc.score) zcj from sc group by sc.s) b ,  (select sc.s,sum(sc.score) zcj from sc group by sc.s) a where b.zcj<=a.zcj GROUP BY b.s ORDER BY mc
    4. 区别在于:b.zcj<=a.zcj 这是由于主表不一样,上面的是a,下面的是b
    5. 体现的重要知识点是:b.zcj<=a.zcj 两个变量可以直接比较,平常我们都是其中一个是变量
  3. exit
    1. 以前的文章写过SQL书本笔记摘抄

表的结构

总体的结构

的 的用法

主干

4+2

select

group

6
7

datetime Oracle没有

select 中使用group by ,那么select能查出来的结果一定要使用goup by 来分组

Rownum

null count

数据类型

#web开发/czh_blog/数据库
2017年8月30日 下午2:39

相关子查询:子查询中会使用外部表

两种情况会出现先查询外部产生表的第一条信息,用这条信息中的内容在内部表中匹配查询信息

  1. 这个可以作为我原先总结的第三种写sql思维的补充
  2. select
    1. 使用情形:当我们的需要对中间表(视图)中的每一条数据进行处理
    2. 例子
      1. 这里可以很容的查出来每个学生的总分zcj对应的表
      2. select sc.s,sum(sc.score) zcj from sc group by sc.s
      3. 然后,在这个表的基础上进行查询,查询出来的内容中的具体某个人的信息中的总分都要和整个表中的所有人的总分进行比较,然后看看有几个人比他大。
      4. 最后的数值,就是他的排名
        1. 这里的关键是:select到from之间的语句是可以进行单独的sql语句执行的。这条是这种写法成立的本质原因
        2. 执行的时候,a.zcj就是一个具体的数值
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          --18、查询学生的总成绩并进行排名
          select a.s,a.zcj,
          (select count(1) from
          (select sc.s,sum(sc.score) zcj from sc group by sc.s) b where b.zcj>a.zcj
          )+1 mc
          from
          (
          select sc.s,sum(sc.score) zcj from sc group by sc.s
          ) a
          order by mc;
    3. 另外一种写法:
      1
      SELECT b.s,b.zcj,count(1) mc from  (select sc.s,sum(sc.score) zcj from sc group by sc.s) b ,  (select sc.s,sum(sc.score) zcj from sc group by sc.s) a where b.zcj<=a.zcj GROUP BY b.s ORDER BY mc
    4. 区别在于:b.zcj<=a.zcj 这是由于主表不一样,上面的是a,下面的是b
    5. 体现的重要知识点是:b.zcj<=a.zcj 两个变量可以直接比较,平常我们都是其中一个是变量
  3. exit
    1. 以前的文章写过SQL书本笔记摘抄

表的结构

总体的结构

的 的用法

主干

4+2

select

group

6
7

datetime Oracle没有

select 中使用group by ,那么select能查出来的结果一定要使用goup by 来分组

Rownum

null count

数据类型

2017年8月30日 下午1:03

不完善的地方

  1. 没有经过大的检测
  2. 应该讲具体的每个知识点的连接放上去

动画的几个要素

  1. 事件源(html)
  2. 事件处理(函数)
  3. 事件类型(事件句柄)(触发类型)

先弄清楚几个问题(对应上面说的动画的几个要素)

  1. 由谁触发
  2. 怎样触发
  3. 触发后如何执行
    1. 拆分,一部分一部分的完成
    2. 把每部分步骤细化
    3. 先别想程序,先站在生活的角度把步骤写出来
  4. 排除

将具体细化的每一部分与知识相连接

  1. 只有两中实现方式:对象的属性 或 对象的方法
  2. 一个最小的功能的实现是通过控制对象属性?还是通过对象的方法
  3. 对象
    1. BOM对象:就是那几种,用的比较少吧
    2. JS对象:通过js来产生DOM对象(JS对象可以是一个统称
    3. DOM对象:(DOM中属性、文本等也可以当做对象来操作
      1. Html标签(元素)
        1. 通用的标签操作
          1. DOM树的增删改查
        2. 特有的标签操作
          1. 不同的标签有不同的设置项
      2. event对象(全局变量)
        1. 鼠标
        2. 键盘
        3. Event就像一个boss,可以全局的看,并且还可以控制一定的事件
      3. 属性
      4. 文本、注释

2017年8月28日 上午8:23

关于oracle的的一些基础知识

Oracle 11g安装步骤详谈 - starskyhu - 博客园
Oracle 11g 默认用户名和密码 - sz_bdqn的专栏 - CSDN博客
Oracle_11g中解决被锁定的scott用户的方法 - CSDN博客

表空间的概念

请问下oracle为什么要创建表空间?表空间该如何创建?是将所有表放入一个表空间,还是将几个大表放入表空间? - 知乎
请问下oracle为什么要创建表空间?表空间该如何创建?是将所有表放入一个表空间,还是将几个大表放入表空间? - 知乎
表空间_百度百科

Sql语句总结

常用sql语句及案例(oracle) - wishyouhappy - 博客园
Oracle系统表整理+常用SQL语句收集 - Aloys寒风 - 博客园

五种约束

  1. 主键约束 primary key:保证数据不能为空,切不能重复
  2. 非空约束:保证了该列不能存储null
  3. 默认值约束 not null:如果用户不为此列添加数据,那么数据字典会为该列添加默认值
  4. Check约束 check:为某一列添加条件约束,如果用户不满足条件,那么操作被驳回
  5. 唯一约束 unique:数据唯一性
  6. 外键约束 foreign key:存在于两张表中,有其中一张表的某一字段指向另一章标的主键,从而让两张表产生关系

2017年8月28日 下午4:55

Navicat的官方手册:
Navicat Tutorials | Navicat Online Manual

补充:

当我升级了Mac os10.13后,出现ORA-21561: OID generation failed这个错误。这是由于升级系统导致的问题。
解决:解决 ORA-21561: OID generation failed - ElonLink的博客 - CSDN博客
我的步骤:

1
2
3
4
5
6
7
8
Last login: Sun Oct  8 13:09:31 on ttys000
czhdeMacBook-Pro:~ czh$ hostname
czhdeMacBook-Pro.local
czhdeMacBook-Pro:~ czh$ cd /etc
czhdeMacBook-Pro:etc czh$ open hosts
czhdeMacBook-Pro:etc czh$ sudo scutil --set HostName localhost
Password:
czhdeMacBook-Pro:etc czh$

下面是一个错误,其实我还遇见的好多问题,但是按下面的步骤改的改的就好得了,具体哪个问题怎么呢解决我就不知道了

将虚拟机中的防火墙关掉


否则出现超时timeout的错误:

连接过程的注意事项

  1. 这里要使用SID,不要使用service Name

  1. 要填虚拟机中的ip(这里的192.168.42.64)

  2. 要将虚拟机设置为桥接模式,为了保证虚拟机与主机在同一网段(这里的42)

关于PL/SQL Developer

  1. 我的虚拟机装的是win7,好像win7中安装PL/SQL本身就要问题,我查了好久,但是还是解决不了,我放弃了,因为我找不到原因。
  2. 换用navicat效果一样

关于ORACLE中的配置文件的修改

  1. 网上有好多blog都是让改oracle中的这两个问题,我这里没有改,也照样解决了问题(能不改就不改)

在navicat中注册新用户

navicat 关于orcale新建表空间,用户和权限分配 - 仁波切 - 博客园

  1. 这里的User Name这一项一定要大写(不能写成chen)
  2. 这里的chen就是错的,而且role这里我虽然给CHEN设置的ROLE是DBA,但是这里的role依然要选default,不要选DBA

附录

在这里:软件开发的相关密码

2017年8月23日 上午10:57

TP中的一个特点

  1. TP执行过程中很大部分都是环境的配置,这里要组织各种不同位置、不同作用的文件。那么,如何组织他们之间的工作其实也是一个大工程,就好像一个公司,boss需要思考自己需要哪些职位、各个职位他们之间如何协作、如何调节他们之间的关系、出现冲突如何处理、如何处理人员的流动(CBD模式)

  2. 这个的环境配置不仅仅是各种数组配置文件(define,static)

  3. 还有各种类加载(include),类加载之后是为了可以直接使用他们的方法

  4. 这里说是为了说明方法的来源,我以前目光里只有配置文件

TP中函数的特点、及它引出的深层思考

  1. TP中单个函数却要执行多个功能,这中情况还不少

  2. 这就导致的他的函数会有很多的判断,这样不仅加大了自己设计代码时的难度,让读的人也不舒服

  3. 但是,这样做的好处就是让上层使用更加方便

  4. 各有利弊吧

  5. 还有另一种情形:

  6. 就是其实功能说起来也很简单,让我实现的话也觉得不难

  7. 但是,当你去看他函数写的实现过程时,各种判断,绕来绕去,觉得麻烦

  8. 当然,这样麻烦不是由于人家水平不行,而是由于要站在一个框架的高度去思考,它自然就复杂了

  9. 我们思考的时候都是单一情景下的,而框架中的情景太多,那么,自然会让一个功能的实现过程变得复杂,需要各种判断、处理

  10. 这就是框架设计者设计的核心,在开工之前需要进行严密的思考。

  11. 理清各种情景,各种情景之间的关系

  12. 这也是各个框架最不同、最有价值的地方

  13. 像老师说的看一个string类等是怎样实现的,这些其实都是框架的皮毛

最后:看框架的人,最高境界就是能理清楚上面说的,能够画出他们之间的逻辑关系图

到现在为止我就把TP一个应用的启动过程看完了,没完成的有

  1. TP的core代码,在Library/Think目录下的那些.php文件
    1. 我只粗略的看了看Hook.class.php,Dispatcher.class.php
  2. ThinkPHP源码分析-2中关于View的一些东西我没有看,这个其实很关键的,但是没时间了
    1. Thinkphp源码分析系列(七)–控制器基类-TC部落
    2. Thinkphp源码分析系列(九)–视图view类-TC部落

2017年8月23日 上午8:18

Hook.class.php

  1. 这个类其实很简单,其中有一个$tags static数组变量用来报错tag和行为的对应关系
  2. static public function listen($tag, &$params=NULL)这个监听函数,其实是一个执行函数,他直接调用了 static public function exec($name, $tag,&$params=NULL)函数来执行给的tag对应的行为
  3. 除了上面核心的,其他的都是$tags的导入、获取方法

Dispatcher.class.php

  1. URL映射到控制器,将URL进行解析对应到相应控制器的方法
  2. 这里并不执行,最后要将解析结果保存在define中、全局变量中
  3. 还有具体的看他的解析过程

2017年8月22日 上午9:51

方法的执行是一个短暂的过程,那么他如何维持它的效果

  1. 字符串
    1. define
    2. static变量
    3. 数组
  2. 这就涉及到一个抽象的过程,一个抽象的状态你用一个字符串来表示,这个字符串就是所谓的状态
  3. 这说明了两点
    1. 字符串(数组)是每一个项目的核心。不论是用来处理数据、还是完成让人不可思议的功能
    2. 抽象建模的能力。不是实物的东西,用一个字符串(数组)来表示

2017年8月22日 下午5:29

由这几部分组成

  1. Js的非对象语法规则:这个其实简单,基本上和其他语言一致,一定不会造成大问题
  2. 对象:如图1
    1. javaScript对象
    2. Browser对象
    3. DOM对象
    4. HTML对象
  3. 事件机制:
    1. 事件包括:事件源()

对象的来源
如何操作对象
对象可以干什么

2017年8月21日 上午11:37

反思1

  1. Tp源码中一个函数看似看挺长,其实目的很简单
  2. 长的原因是是要处理多种情况
    1. 上层设计中,让一个功能呢有多种操作方式,那么,下层对于每种方式都要做好适配
    2. 不同的操作环境

反思2

  1. 一个类定义的变量/函数都是static的
  2. 大量的使用static来维持自己的阶段性成果
  3. 随着程序的执行static变量不断的扩充
  4. 其实都属于Thinkphp_3.2.3/index.php 这个作用域
  5. 这个回答的为啥autoload()函数只定义在了think.class.php中,但是却可以让自己的项目实现自动加载
  6. Include/require 引入另一个php文件+执行代码
  7. Include/require 包含进来的php程序,可以直接使用上文中的变量
  8. include/require 可以理解直接剪贴过来了

反思3

  1. Think.class.php
    1. 这时候还没有真正的跑起来项目,还是在做它运行需要的准备工作
  2. 主要作用:
    1. 加载各种配置文件(都是return 数组),将他们变成static变量
      1. 由于TP要实现,同一功能根据不同的情景,采取不同的配置方法
      2. 所以,这里的配置文件的加载步骤比较繁琐
    2. 重写php本身的函数,自动加载类库、异常处理、错误处理等
      1. 这些功能的实现php本身就有很好的辅助函数
      2. 这就可以很方便的实现上面的功能
  3. 阅读框架,依靠
    1. 了解业务
    2. 语言功底
  4. TP这个框架思想其实比较简单,在这个过程中锻炼的是自己对语言本身的理解。
  5. 结论:框架学习过程中觉得难,并不是框架的作者发明了多少让人难以理解的代码过程,一定是由于自己:
    1. 业务本身不了解, 跟不上作者的思路。在具体的看之前,就要脑子中知道作者的目的是啥、有啥效果、要考虑啥特殊情况、大概有几个步骤等
    2. 语言功底中要知道语言本身他又那些特性、这些特性能如何巧用、已经封装好了那些功能、那些没有封装好