01 2018 档案

摘要:享元模式: 运用共享技术有效地支持大量细粒度的对象。 示例代码: Flyweight类,它是所有具体享元类的超类或接口,通过这个接口,Flyweight可以接受并作用于外部状态。 ConcreteFlyweight是继承Flyweight超类或实现Flyweight接口,并为内部状态增加存储空间。 阅读全文
posted @ 2018-01-28 12:32 _sanjun 阅读(170) 评论(0) 推荐(0)
摘要:建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 示例代码: Product类————产品类,由多个部件组成。 Builder类————抽象建造者类,确定产品由两个部件PartA和PartB组成,并声明一个得到产品建造后结果的方法GetResult。 Conc 阅读全文
posted @ 2018-01-28 11:56 _sanjun 阅读(107) 评论(0) 推荐(0)
摘要:设计模式: 它定义了算法家族,分别封装起来,让它们之间可以替换,此模式让算法的变化,不会影响到使用算法的客户。 示例代码: Strategy类,定义所有支持的算法的公共接口 ConcreteStrategy,封装了具体的算法或行为,继承于Strategy Context,用一个ConcreteStr 阅读全文
posted @ 2018-01-26 13:38 _sanjun 阅读(129) 评论(0) 推荐(0)
摘要:责任链模式: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 代码示例: Handler类,定义一个处理请示的接口。 ConcreteHandler类,具体处理者类,处理它所负责的请求,可访问它的后继者 阅读全文
posted @ 2018-01-26 09:52 _sanjun 阅读(118) 评论(0) 推荐(0)
摘要:组成: 抽象角色:通过接口或抽象类声明真实角色实现的业务方法。 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。 代理模式: 为其他对象提供一种代理以控制对这个对象的访 阅读全文
posted @ 2018-01-23 20:54 _sanjun 阅读(107) 评论(0) 推荐(0)
摘要:4.2 Java虚拟机对锁优化所做的努力 介绍几种JDK内部的“锁”优化策略。 4.2.1 锁偏向 锁偏向是一种针对加锁操作的优化手段。它的核心思想是:如果一个线程获得了锁,那么锁就进入偏向模式。当这个线程再次请求锁时,无须再做任何同步操作。这样就节省了大量有关锁申请的操作,从而 提高了程序性能。因 阅读全文
posted @ 2018-01-23 00:14 _sanjun 阅读(154) 评论(0) 推荐(0)
摘要:4.1 有助于提高“锁”性能的几点建议 “锁”的竞争必然会导致程序的整体性能下降。 4.1.1 减小锁持有时间 在锁竞争过程中,单个线程对锁的持有时间与系统性能有着直接的关系。 程序开发也是类似的,应该尽可能地减少对某个锁的占有时间,以减少线程间互斥的可能。以下面的代码段为例: syncMethod 阅读全文
posted @ 2018-01-22 22:11 _sanjun 阅读(173) 评论(0) 推荐(0)
摘要:3.3 不要重复发明轮子:JDK的并发容器 3.3.1 超好用的工具类:并发集合简介 JDK提供的这些容器大部分在java.util.concurrent包中。 ConcurrentHashMap:这是一个高效的并发HashMap。可以理解为一个线程安全的HashMap。 CopyOnWriteAr 阅读全文
posted @ 2018-01-22 17:40 _sanjun 阅读(162) 评论(0) 推荐(0)
摘要:3.2.5 自定义线程创建:ThreadFactory 线程池的主要作用是为了线程复用,也就是避免了线程的频繁创建。 ThreadFactory是一个接口,它只有一个方法,用来创建线程: 当线程池需要新建线程时,就会调用这个方法。 下面的案例使用自定义的ThreadFactory,一方面记录了线程的 阅读全文
posted @ 2018-01-21 00:10 _sanjun 阅读(126) 评论(0) 推荐(0)
摘要:3.2 线程复用:线程池 一种最为简单的线程创建和回收的方法类似如下代码: 在run方法结束后,自动回收。 在真实的生产环境中,系统由于真实环境的需要,可能会开启很多线程来支撑其应用。而当线程数量过大时,反而会耗尽CPU和内存资源。 3.2.1 什么是线程池 为了避免系统频繁地创建和销毁线程,我们可 阅读全文
posted @ 2018-01-20 20:55 _sanjun 阅读(136) 评论(0) 推荐(0)
摘要:3.1.2 重入锁的好搭档:Condition条件 它和wait()和notify()方法的作用是大致相同的。但是wait()和notify()方法是和synchronized关键字合作使用的,而Condition是与重入锁相关联的。通过Lock接口的Condition newCondition() 阅读全文
posted @ 2018-01-20 14:11 _sanjun 阅读(115) 评论(0) 推荐(0)
摘要:3.1 多线程的团队协作:同步控制 3.1.1 synchronized的功能扩展:重入锁 重入锁可以完全替代synchronized关键字。 重入锁使用java.util.concurrent.locks.ReentrantLock类来实现。下面是一段最简单的重入锁使用案例: public cla 阅读全文
posted @ 2018-01-20 10:04 _sanjun 阅读(138) 评论(0) 推荐(0)
摘要:2.8 程序中的幽灵:隐蔽的错误 2.8.1 无提示的错误案例 以求两个整数的平均值为例。请看下面代码: 输出如下: 这是一个典型的溢出问题!显然,v1 + v2的结果已经导致了int的溢出。 2.8.2 并发下的ArrayList ArrayList是一个线程不安全的容器。如果在多线程中使用Arr 阅读全文
posted @ 2018-01-19 23:33 _sanjun 阅读(145) 评论(0) 推荐(0)
摘要:2.3 volatile 与 Java 内存模型(JMM) volatile对于保证操作的原子性是由非常大的帮助的(可见性)。但是需要注意的是,volatile并不能代替锁,它也无法保证一些复合操作的原子性。比如下面的例子,通过volatile是无法保证i++的原子性操 作的: 在对count累加前 阅读全文
posted @ 2018-01-19 21:59 _sanjun 阅读(254) 评论(0) 推荐(0)
摘要:1. 第一范式 __第一范式__ 是最基本的规范形式,即关系中每个属性都是不可再分的简单项。 __定义__ 如果关系模式R所有的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式,简称1NF,记住R属于1NF。 把满足1NF的关系称为规范化。在关系数据库系统中只讨论规范化的关系,凡是非规 阅读全文
posted @ 2018-01-19 21:14 _sanjun 阅读(2981) 评论(1) 推荐(0)
摘要:2.1 有关线程你必须知道的事 进程是系统进行资源分配和调度的基本单位,是程序的基本执行实体。 线程就是轻量级进程,是程序执行的最小单位。 线程的生命周期,如图2.3所示。 线程的所有状态都在Thread中的State枚举中定义,如下所示: NEW状态表示刚刚创建的线程,这种线程还没有开始执行。等到 阅读全文
posted @ 2018-01-19 16:37 _sanjun 阅读(189) 评论(0) 推荐(0)
摘要:1.1 概念 1.1.1 同步(Synchronous)和异步(Asynchronous) 同步和异步通常用来形容一次调用。 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。 异步调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常 阅读全文
posted @ 2018-01-19 12:46 _sanjun 阅读(234) 评论(0) 推荐(0)
摘要:MongoDB MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式, 阅读全文
posted @ 2018-01-18 23:29 _sanjun 阅读(142) 评论(0) 推荐(0)
摘要:String String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象。 StringBuffer 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。 和 String 类不同的是,StringBuffer 阅读全文
posted @ 2018-01-18 18:46 _sanjun 阅读(154) 评论(0) 推荐(0)
摘要:__桥接模式__ 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 ConcreteImplementorA 和 ConcreteImplementorB等派生类 Abstraction类 RefinedAbstraction类 客户端实现 阅读全文
posted @ 2018-01-17 23:09 _sanjun 阅读(113) 评论(0) 推荐(0)
摘要:观察者模式又叫做发布 订阅模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生 变化时,会通知所有观察者对象,使它们能够自动更新自己。 Subject类,可翻译为主题或抽象通知者,一般用一个抽象类或者一个接口实现。它把所有对观察者对象的引用保存 阅读全文
posted @ 2018-01-17 22:51 _sanjun 阅读(120) 评论(0) 推荐(0)
摘要:装饰者模式,顾名思义,就是将某个类重新装扮一下,使得它比原来更"漂亮",或者在功能上更强大,这就是装饰者模式所要达到的目的。但是作为原来的这个类的使用者还不应该感受到装饰前与装饰后有什么不同,否则就破坏了原有类的结构了,所以装饰器模式要做到对被装饰类的使用者透明,这是对装饰器模式的一个要求。 装饰者 阅读全文
posted @ 2018-01-17 22:01 _sanjun 阅读(145) 评论(0) 推荐(0)
摘要:对适配器模式的功能很好的理解,就是把一个类的接口变成客户端所能接受的另一种接口,从而使两个接口不匹配而无法在一起工作的两个类能够在一起工作。 通常被用在一个项目需要引用一些开源框架来一起工作的情况下,这些框架的内部都有一些关于环境信息的接口,需要从外部传入,但是外部的接口不一定能匹配,在这种情况下, 阅读全文
posted @ 2018-01-17 21:25 _sanjun 阅读(127) 评论(0) 推荐(0)
摘要:2.5 I/O调优 下面总结一些磁盘I/O和网络I/O的常用优化技巧。 __2.5.1 磁盘I/O优化__ __1. 性能检测__ 应用程序通常都需要访问磁盘来读取数据,而磁盘I/O通常都很耗时,要判断I/O是否是一个瓶颈,有一些参数指标可 以参考。 我们可以压力测试应用程序,看系统的I/O wai 阅读全文
posted @ 2018-01-17 18:24 _sanjun 阅读(188) 评论(0) 推荐(0)
摘要:大部分Web应用系统的瓶颈都是I/O瓶颈 2.1 Java的I/O类库的基本架构 Java的I/O操作类在包java.io下,大概有将近80个类,这些类大概可以分成如下4组。 基于字节操作的I/O接口:InputStream和OutputStream。 基于字符操作的I/O接口:Writer和Rea 阅读全文
posted @ 2018-01-17 16:34 _sanjun 阅读(577) 评论(0) 推荐(0)
摘要:短连接 短连接(short connnection)是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发 送。 优点:不需要长期占用通道,对于业务频率不高的场合,能节省通道的使用。 缺点:需要在每次发送业务 阅读全文
posted @ 2018-01-17 11:47 _sanjun 阅读(259) 评论(0) 推荐(0)
摘要:1.1 B/S网络架构概述 B/S 网络架构从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,与大多数传统C/S互联网应用程 序采用的长连接的交互模式不同,HTTP采用无状态的短连接的通信方式,通常情况下,一次请求就完成了一次数据交互,通常也对应一个业务逻辑,然后这次通信连接就断开 阅读全文
posted @ 2018-01-16 20:12 _sanjun 阅读(196) 评论(0) 推荐(0)
摘要:28.1 改善性能 数据库管理员把他们生命中的相当一部分时间花在了调整、试验以改善DBMS性能之上。在诊断应用的滞缓现象和性能问题时,性能不良的数据通常是最常见的祸因。 可以看出,下面的内容并不能完全决定MySQL的性能。我们只是想回顾一下前面各章的重点,提供进行性能优化探讨和分析的一个出发点。 首 阅读全文
posted @ 2018-01-16 12:50 _sanjun 阅读(146) 评论(0) 推荐(0)
摘要:27.1 备份数据 像所有数据一样,MySQL的数据也必须经常备份。由于MySQL数据库是基于磁盘的文件,普通的备份系统和例程就能备份MySQL的数据。但是,由于这些文件总是处于打开和使用状态,普通的文件副本备份不一定总是有效。 下面列出这个问题的可能解决方案。 使用命令行使用程序mysqldump 阅读全文
posted @ 2018-01-16 11:50 _sanjun 阅读(167) 评论(0) 推荐(0)
摘要:26.1 访问控制 MySQL服务器idea安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。换句话说,用户不能对过多的数据具有过多的访问权。 可虑以下内容: 多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表 某些用户需要读表,但可能不需要更新表 你可能想允许用户 阅读全文
posted @ 2018-01-16 10:50 _sanjun 阅读(161) 评论(0) 推荐(0)
摘要:25.1 字符集和校对顺序 数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL需要适应不同的字符集,适应不同的排序和检索数据的方法。 语言和字符集的重要术语: __字符集__ 为字母和符合的集合 __编码__ 为某个字符集成员的内部表示 __校对__ 为规定 阅读全文
posted @ 2018-01-16 09:42 _sanjun 阅读(140) 评论(0) 推荐(0)
摘要:24.1 事务处理 __并非所有引擎都支持事务处理__ MyISAM和InnoDB是两种最常使用的引擎。前者不支持明确的事务处理管理,而后者支持。这就是为什么本书中使用的样例表被创建来使用InnoDB而不是更经常使用的MyISAM的原因。如果你的应用中需要事务处理功能,则一定要使用正确的引擎类型。 阅读全文
posted @ 2018-01-16 09:18 _sanjun 阅读(181) 评论(0) 推荐(0)
摘要:23.1 触发器 MySQL语句在需要时被执行,存储过程也是如此。但是,如果你想要某条语句在事件发生时自动执行,怎么办呢?例如: 每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正确,州的缩写是否为大写 每当订购一个产品时,都从库存数量中减去订购的数量 无论何时删除一行,都在某个存档表中保 阅读全文
posted @ 2018-01-15 22:56 _sanjun 阅读(236) 评论(0) 推荐(0)
摘要:22.1 游标 MySQL检索操作返回一组称为结果集的行。这组返回的行都是与SQL语句相匹配的行(零行或多行)。使用简单的select语句,例如,没有办法得到第一行、下一行或前10行,也不存在每次一行地处理所有行的简单方法。 有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原因。游标 阅读全文
posted @ 2018-01-15 21:09 _sanjun 阅读(150) 评论(0) 推荐(0)
摘要:21.1 存储过程 迄今为止,使用的大多数SQL语句都是针对一个或多个表的单条语句。并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成。例如,考虑以下的情形。 为了处理订单,需要核对以保证库存中有相应的物品。 如果库存有物品,这些物品需要预定以便不将它们再卖给别人,并且要减少可用的物 阅读全文
posted @ 2018-01-15 18:02 _sanjun 阅读(114) 评论(0) 推荐(0)
摘要:20.1 视图 视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。 理解视图最好的方法是看一个例子: 此查询用来检索订购了某个特定产品的客户。任何需要这个数据的人都必须理解相关表的结构,并且知道如何创建 查询和对表进行联结。为了检索其他产品的相同数据,必须修改最后的where 阅读全文
posted @ 2018-01-15 16:45 _sanjun 阅读(115) 评论(0) 推荐(0)
摘要:19.1 创建表 MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理。 一般有两种创建表的方法: 使用具有交互式创建和管理表的工具 表也可以直接用MySQL语句操纵 __19.1.1 表创建基础__ 为利用create table创建表,必须给出下列信息: 阅读全文
posted @ 2018-01-15 00:09 _sanjun 阅读(117) 评论(0) 推荐(0)
摘要:18.1 更新数据 为了更新表中的数据,可使用update语句。可采用两种方法使用update: 更新表中特定行 更新表中所有行 __不要省略where子句__ 在使用update时一定要注意细心。因为稍不注意,就会更新表中所有行。 update语句非常容易使用,甚至可以说是太容易使用了。基本的up 阅读全文
posted @ 2018-01-14 21:57 _sanjun 阅读(212) 评论(0) 推荐(0)
摘要:17.1 数据插入 顾名思义,INSERT是用来插入行到数据库表的。插入可以用几种方式使用: 插入完整的行 插入行的一部分 插入多行 插入某些查询的结果 __插入及系统安全__ 可针对每个表或每个用户,利用MySQL的安全机制禁止使用INSERT语句。 17.2 插入完整的行 把数据插入表中的最简单 阅读全文
posted @ 2018-01-14 20:05 _sanjun 阅读(144) 评论(0) 推荐(0)
摘要:16.1 理解全文本搜索 __并非所有引擎都支持全文本搜索__ MySQL支持几种基本的数据库引擎。并非所有的引擎都支持本 书所描述的全文本搜索。两个最常用的引擎为MyISAM和InnoDB,前者支持全文搜索,而后者不支持。这就是为什么虽然本书中创建的多数样例使用InnoDB,而有一个样例表(pro 阅读全文
posted @ 2018-01-14 17:40 _sanjun 阅读(174) 评论(0) 推荐(0)
摘要:15.1 组合查询 多数SQL查询都只包含从一个或多个表中返回数据的单条select语句。MySQL也允许执行多个查询(多条select语句),并将结果作为单个查询结果返回。这些组合查询通常称为并或复合查询。 有两种基本情况,其中需要使用组合查询: 在单个查询中从不同的表返回类似结构的数据 对单个表 阅读全文
posted @ 2018-01-14 13:41 _sanjun 阅读(150) 评论(0) 推荐(0)
摘要:14.1 使用表列名 别名除了用于列名和计算字段外,SQL还允许给表名起别名。这样做有两个主要理由: 缩短SQL语句 允许在单条select语句中多次使用相同的表。 请看下面的select语句。它与前一章的例子中所有的语句基本相同,但改成了使用别名: 可以看到,from子句中3个表全都具有别名。cu 阅读全文
posted @ 2018-01-14 12:58 _sanjun 阅读(122) 评论(0) 推荐(0)
摘要:13.1 联结 SQL最强大的功能之一就是能在数据检索查询的执行中联结表。联结是利用SQL的select能执行的最重要的操作,很好 地理解联结及其语法是学习SQL的一个极为重要的组成部分。 在能够有效地使用联结前,必须了解关系表以及关系数据库设计的一些基础知识。下面的介绍并不是这个内容的全部知识,但 阅读全文
posted @ 2018-01-14 10:09 _sanjun 阅读(145) 评论(0) 推荐(0)
摘要:12.1 子查询 select语句是SQL的查询。迄今为止我们所看到的所有select语句都是简单查询,即从单个数据库表中检索数据的单条语句。 __查询__ 任何SQL语句都是查询。但此术语一般指select语句。 SQL还允许创建子查询,即嵌套在其他查询中的查询。 12.2 利用子查询进行过滤 本 阅读全文
posted @ 2018-01-14 00:21 _sanjun 阅读(181) 评论(0) 推荐(0)
摘要:11.1 数据分组 从上一章知道,SQL聚集函数可用来汇总数据。这使我们能够对行进行计数,计算和平均数,获得最大和最小值而不是检索所有数据。 目前为止的所有计算都是在表的所有数据或匹配特定的WHERE子句的数据上进行的。提示一下,下面的例子返回供应商 1003提供的产品数目: 但如果要返回每个供应商 阅读全文
posted @ 2018-01-13 12:09 _sanjun 阅读(152) 评论(0) 推荐(0)
摘要:10.1 聚集函数 我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数。使用这些函数,MySQL查询可用于检索数据,以便分析和报表生成。这种类型的检索例子有以下几种。 确定表中行数(或者满足某个条件或包含某个特定值得行数)。 获得表中行组的和。 找出表列(或所有行或某些特定 阅读全文
posted @ 2018-01-13 10:43 _sanjun 阅读(112) 评论(0) 推荐(0)
摘要:9.1 函数 与其他大多数计算机语言一样,SQL支持利用函数来处理数据。函数一般是在数据上执行的,它给数据的转换和处理提供了方便。 __函数没有SQL的可移植性强__ 能运行在多系统上的代码称为可移植的。相对来说,多数SQL语句是可移植的,在SQL实现之间有差异时,这些差异通常不那么难处理。而函数的 阅读全文
posted @ 2018-01-13 09:39 _sanjun 阅读(137) 评论(0) 推荐(0)
摘要:8.1 计算字段 存储在数据库表中的数据一般不是应用程序所需要的格式。 如:列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来。 我们需要直接从数据库中检索出转换、计算或格式化的数据;而不是检索出数据,然后再在客户机应用程序或报告程序中重新格式化。 这就是计算字段发挥作用的所在了。与前面介 阅读全文
posted @ 2018-01-12 20:57 _sanjun 阅读(232) 评论(0) 推荐(0)
摘要:7.1 正则表达式介绍 正则表达式用正则表达式语言来建立,正则表达式语言是用来完成刚讨论的所有工作以及更多工作的一种特殊语言。与任意语言一样,正则表达式具有你必须学习的特殊的语法和指令。 7.2 使用MySQL正则表达式 正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。My 阅读全文
posted @ 2018-01-12 19:36 _sanjun 阅读(591) 评论(0) 推荐(0)
摘要:6.1 LIKE操作符 例如,怎样搜索产品中包含文本anvil的所有产品?用简单的比较操作符肯定不行,必须使用通配符可创建比较特定数据的搜索模式。在这个例子中,如果你想找出名称包含anvil的所有产品,可构造一个通配符搜索模式,找出产品名中任何位置出现anvil的产品。 __通配符__ 用来匹配值的 阅读全文
posted @ 2018-01-12 16:07 _sanjun 阅读(173) 评论(0) 推荐(0)
摘要:5.1 组合WHERE子句 前面介绍的所有where子句在过滤数据时使用的都是单一的条件。为了进行更强的过滤控制,MySQL允许给出多个where子句。这些子句可以两种方式使用:以AND子句的方式或OR子句的方式使用。 __操作符(operator)__ 用来联结或改变where子句中的子句的关键字 阅读全文
posted @ 2018-01-12 14:57 _sanjun 阅读(138) 评论(0) 推荐(0)
摘要:4.1 使用where子句 数据库表一般包含大量的数据,很少需要检索表中所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件,搜索条件也称为过滤条件。 在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(From子句)之后给 阅读全文
posted @ 2018-01-12 13:45 _sanjun 阅读(155) 评论(0) 推荐(0)
摘要:3.1 排序数据 __子句__ SQL语句由子句构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。子句的例子有SELECT语句的FROM子句。 为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对 阅读全文
posted @ 2018-01-12 11:19 _sanjun 阅读(182) 评论(0) 推荐(0)
摘要:创建表 Create customers table CREATE TABLE customers ( cust_id int NOT NULL AUTO_INCREMENT, cust_name char(50) NOT NULL , cust_address char(50) NULL , cu 阅读全文
posted @ 2018-01-12 10:16 _sanjun 阅读(4149) 评论(2) 推荐(5)
摘要:2.1 SELECT语句 它的用途是从一个或多个表中检索信息。 为了使用SELECT检索数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。 2.2 检索单个列 2.3 检索多个列 2.4 检索所有列 2.5 检索不同的行 使用DISTINCT关键字 2.6 限制结果 为了返回第一行或前几 阅读全文
posted @ 2018-01-12 10:12 _sanjun 阅读(156) 评论(0) 推荐(0)
摘要:1.1 连接 主机名(localhost) 端口(3306) 一个合法的用户名 用户口令 1.2 选择数据库 USE crashcourse 1.3 了解数据库和表 SHOW databases; show tables; show也可以用来显示表列 show columns from custom 阅读全文
posted @ 2018-01-12 09:23 _sanjun 阅读(152) 评论(0) 推荐(0)
摘要:前面已经讲述了关系数据库、关系模型的基本概念以及关系数据库的标准语言。如何使用关系模型设计关系数据库,也就是面对一个现实问题,如何选择一个比较好的关系模式的集合,每个关系又应该由哪些属性组成,这属于数据库设计的问题,确切地讲是数据库逻辑设计的问题。有关数据库设计的全过程将在第6章详细讨论,本章讲述关 阅读全文
posted @ 2018-01-11 23:05 _sanjun 阅读(2916) 评论(0) 推荐(0)