黑马程序员技术交流社区

标题: 【石家庄校区】Java语言学习阶段总结——08 [打印本页]

作者: 君临城下    时间: 2018-1-11 15:39
标题: 【石家庄校区】Java语言学习阶段总结——08
本帖最后由 小石姐姐 于 2018-1-12 11:18 编辑

## XML概述

* XML:
    * Extensible Markup Language, 可扩展标记语言. 是一种标记语言, 类似于HTML. 是W3C组织发布的, 目前XML的规范是W3C于2000年发布的XML1.0规范

    * 特点
* XML没有预定义标签, 所使用的标签都需要由用户自定义
    * 作用:
   * 用于描述数据, 而非显示数据.
        * 擅长表示一对多的, 包含嵌套的数据关系

    * 应用场景:
* 作为数据载体, 通过网络传递数据
        * 作为应用程序的配置文件
XML语法: 注释

* 注释的格式:
    * `<!-- 注释内容 -->`
    * 同时支持单行注释和多行注释
* 注意:
    * 注释不会被当做标签解析
    * 注释不能嵌套
    * XML声明之前不能有注释
    * 原因: 只有先解析到XML声明才知道该文档是一个XML文档, 才会把`<!-- -->`当做注释.

## Schema约束: 概述

* Schema约束
    * 也是一种XML约束, 用于取代DTD.
* Schema相较于DTD的优势
    * Schema更符合XML语法结构
    * DOM, SAX等XML解析库更容易解析Schema文档
    * Schema对**名称空间(namespace, 或命名空间)**支持很好
    * Schema比DTD支持更多的数据类型, 并支持用户自定义新的数据类型
    * Schema定义约束的能力非常强大, 可以对XML实例文档做出细致的语言限制
* Schema文档
    * Schema本身是一个XML文件, 但后缀名为`.xsd`
    * Schema文档通常被称为`模式文档(约束文档)`, 遵循该文档的XML文件称为`实例文档`
    * Schema文档必须有一个根节点, 且该根节点名称必须为`schema`
    * 编写了一个Schema约束文档后, 需要把这个约束文档中声明的元素绑定到一个`URI`地址上. 这一过程叫做`将元素绑定到一个命名空间`, 以后XML文件就可以通过这个URI找到约束文档


## 数据库概念

* 数据库:
    * 存储数据的仓库. 本质是一个文件系统, 数据按照指定的格式将数据存储起来, 用户可以对数据库中的数据进行增删改查
* DBMS:
    * Database Management System, 数据库管理系统. 是操作和管理数据库的大型软件, 用于建立, 使用和维护数据库, 对数据库进行统一管理和控制, 以保证数据库的安全性和完整性. 用户通过数据库管理系统访问数据库中表内的数据


## 数据库和管理系统

* 作用
    * 数据库: 存储**数据表**, 索引, 视图等
    * 数据表: 存储数据
        * 行: 数据
        * 列: 描述数据信息
    * 数据: 也叫**记录**, 也就是我们实际要存储的信息
    * 数据库管理系统: 操作数据库, 表, 记录
* 记住关系:
    * 数据库程序有数据库
    * 数据库中有表
    * 表中有记录
    * 数据库程序 > 库 > 表 > 记录


## SQL语句介绍和分类

* 什么是SQL: Structured Query Language, 结构化查询语言.
* 为什么叫`结构化查询`: 因为数据表是有结构的, 有行和列, 对行和列进行查询
* SQL语言作用: 和DBMS通信, 操作数据库, 表, 记录
* SQL语言按照作用可以划分为4类:
    * DDL: Data Defination Language, 数据定义语言, 用来定义数据库对象(库, 表等)
        * `CREATE`
        * `ALTER`
        * `DROP`
    * DML: Data Manipulation Language, 数据操作语言, 对表中的记录进行增, 删, 改
        * `INSERT`
        * `DELETE`
        * `UPDATE`
    * DQL: Data Query Language, 数据查询语言, 对表中的记录进行查
        * `SELECT`

         * `FROM`
        * `WHERE`
    * DCL: Data Control Language, 数据控制语言, 创建修改用户, 权限

主键约束
    * 格式: `PRIMARY KEY`
    * 作用: 限制该列非空且唯一
* 自增约束
    * 格式: `AUTO_INCREMENT`
    * 作用: 使该列的值按照数字规律自动增长

## 排序查询

* 排序查询
    * 是`SELECT`的子句, 将查询后的结果集进行排序
    * 格式:
        * `ORDER BY 列名 排序选项`
        * `SELECT ... FROM ... WHERE ... ORDER BY 列名 排序选项`
        * 排序选项: 适用于数字, 英文字母, 日期
        * `ASC`: 默认, 升序
        * `DESC`: 降序
        * 注意: `WHERE`和`ORDER BY`的顺序
        * `WHERE`在前, `ORDER BY`在后, 否则报错
        * 因为是排序是对SELECT查询出的结果集再次进行排序, 而不是对表中的数据进行排序. 所以要先把SELECT WHERE的查询结果拿到, 才能使用ORDER BY排序
    * 扩展:
        * 排序可以按照多列, 如先按a列降序, 如果a列中有相同的值, 则按b列降序
        * `SELECT * FROM users ORDER BY age DESC, salary DESC;`
        * `ORDER BY`是SQL语句的末尾吗?
        * 不一定是SQL语句的末尾, 后面还可以写LIMIT子句

## JDBC概念和数据库驱动程序

* JDBC:
    * Java DataBase Connectivity, Java数据库连接. 是一种技术的名称
    * 是SUN公司提供的用于执行SQL语句的Java API, 用为多种关系型数据库提供统一的访问. 它由一组用Java语言编写的类和接口组成, 是Java访问数据库的标准规范
* 数据库驱动:
    * 两个不同的设备要通信, 需要满足一定的通信数据格式, 数据格式由设备提供商规定, 设备提供商为设备提供驱动软件, 通过驱动软件就可以让两个设备通信.
    * Java和MySQL数据库就可以看作2个不同的设备, JDBC需要使用数据库驱动来让Java代码与数据库服务器通信, 将Java中的SQL字符串发送给数据库来执行
    * 数据库驱动有多种, 用于不同开发语言, 对于Java也有专门的一个驱动
* Java用于MySQL的驱动从哪里得到: [MySQL官网](https://dev.mysql.com/downloads/connector/j/)



## JDBC原理

* JDBC和数据库驱动的关系
    * JDBC是一套API, 可以通过Java代码来使用JDBC, 同时提供了一套接口, 用于让数据库厂商根据自家数据库特点去实现JDBC的功能
    * 数据库驱动是数据库厂商根据自家数据库特点去实现JDBC接口而制作的, 用于让JDBC能够调用数据库的相关功能
    * Java程序通过使用JDBC的API, 通过多态的方式调用数据库驱动中实现类的方法, 对数据库进行操作






















欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2