🦥 Reader和Writer
type
status
date
slug
summary
tags
category
icon
password
Property

Reader

Reader是Java的IO库提供的另一个输入流接口。和InputStream的区别是,InputStream是一个字节流,即以byte为单位读取,而Reader是一个字符流,即以char为单位读取:
notion image
 
java.io.Reader是所有字符输入流的超类,它最主要的方法是:
这个方法读取字符流的下一个字符,并返回字符表示的int,范围是0~65535。如果已读到末尾,返回-1
 
FileReaderReader的一个子类,它可以打开文件并获取Reader。完整地读取一个FileReader的所有字符:
如果读取一个纯ASCII编码的文本文件,上述代码工作是没有问题的。但如果文件中包含中文,就会出现乱码,因为FileReader默认的编码与系统相关,例如,Windows系统的默认编码可能是GBK,打开一个UTF-8编码的文本文件就会出现乱码。
 
MySQL
type
status
date
slug
summary
tags
category
icon
password
Property
 
notion image
MySQL是一种数据库管理系统。
数据库是数据的结构化集合。它可以是任何东西,从简单的购物清单到画展,或企业网络中的海量信息。要想将数据添加到数据库,或访问、处理计算机数据库中保存的数据,需要使用数据库管理系统,如MySQL服务器。计算机是处理大量数据的理想工具,数据库管理系统在计算方面扮演着关键的中心角色,或是作为独立的实用工具,或是作为其他应用程序的组成部分
 
数据库
type
status
date
slug
summary
tags
category
icon
password
Property
 
目录
目录

 

SQL、DB、DBMS

DB:DataBase 数据库

数据库可以是保存在硬设备上的文件,也可以不是。在很大程度上说,数据库究竟是文件还是别的什么东西并不重要,因为我们并不直接访问数据库,是DBMS替我们访问数据库。
 

DBMS:DataBase Management System

数据库管理系统,可分为两类:
  • 基于共享文件系统的DBMS
    MySQL 锁
    type
    status
    date
    slug
    summary
    tags
    category
    icon
    password
    Property
    目录
    目录

     

    全局锁

    要使用全局锁,则要执行这条命令:
    执行后,整个数据库就处于只读状态了,这时其他线程执行以下操作,都会被阻塞:
    • 对数据的增删改操作,比如insert、delete、update等语句
    • 对表结构的更改操作,比如alter table、drop table等语句
    如果要释放全局锁,则要执行这条命令:
    存储和存储引擎
    type
    status
    date
    slug
    summary
    tags
    category
    icon
    password
    Property
    目录
    目录

    存储引擎

    完整的建表语句:
    建表的时候可以指定存储引擎,也可以指定字符集。mysql默认使用的存储引擎是InnoDB方式,默认采用的字符集是UTF8
     
    什么是存储引擎呢?
    存储引擎这个名字只有在mysql中存在(Oracle中有对应的机制,但是不叫做存储引擎。Oracle中没有特殊的名字,就是“表的存储方式”)
    mysql支持很多存储引擎,每一个存储引擎都对应了一种不同的存储方式。每一个存储引擎都有自己的优缺点,需要在合适的时机选择合适的存储引擎。
     
    连接查询
    type
    status
    date
    slug
    summary
    tags
    category
    icon
    password
    Property
    目录
    目录

    在实际开发中,大部分的情况下都不是从单表中查询数据,一般都是多张表联合查询取出最终的结果
    在实际开发中,一般一个业务都会对应多张表,比如:学生和班级,起码两张表
    notion image
    学生和班级信息存储到一张表中,结果就像上面一样,数据会存在大量的重复,导致数据的冗余
     

    连接查询的分类

    根据语法出现的年代来划分的话,包括:
    • SQL92(一些老的DBA可能还在使用这种语法。DBA:DataBase Administrator,数据库管理员)
    • SQL99(比较新的语法)
    约束
    type
    status
    date
    slug
    summary
    tags
    category
    icon
    password
    Property
    目录
    目录

    在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性
     

    常见的约束

    • 非空约束(not null):约束的字段不能为NULL
    • 唯一约束(unique):约束的字段不能重复
    • 主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK)
    • 外键约束(foreign key):...(简称FK)
    • 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束
     
    事务 Transaction
    type
    status
    date
    slug
    summary
    tags
    category
    icon
    password
    Property
    目录
    目录

     
    一个事务是一个完整的业务逻辑单元,不可再分。比如:银行账户转账,从A账户向B账户转账10000,需要执行两条update语句:
    以上两条DML语句必须同时成功,或者同时失败,不允许出现一条成功,一条失败。要想保证以上的两条DML语句同时成功或者同时失败,那么就需要使用数据库的“事务机制”
     
    并非所有引擎都支持事务处理MyISAM和InnoDB是两种最常使用的引擎。前者不支持明确的事务处理管理,而后者支持。
    • 事务(transaction)指一组SQL语句
    • 回退(rollback)指撤销指定SQL语句的过程
    • 提交(commit)指将未存储的SQL语句结果写入数据库表
    表的操作 DDL
    type
    status
    date
    slug
    summary
    tags
    category
    icon
    password
    Property
    目录
    目录

    create 创建数据表

     

    MySQL当中字段的数据类型

    notion image
    • int 整数型(java中的int)
    • bigint 长整型(java中的long)
    • float 浮点型(java中的float double)
    • char 定长字符串(String)
    查询语句 DQL
    type
    status
    date
    slug
    summary
    tags
    category
    icon
    password
    Property
    目录
    目录

    简单查询

    语法格式:
     

    通配符*

    如果给定一个通配符*,则返回表中所有列:
    notion image

    DISTINCT去除重复

    数据操作 DML
    type
    status
    date
    slug
    summary
    tags
    category
    icon
    password
    Property
    目录
    目录

     
     
    DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据进行增(INSERT)、删(DELETE)、改(UPDATE)操作。增删改查有一个术语:CRUD操作
    Create(增) Retrieve(检索) Update(修改) Delete(删除)

    insert插入数据

    • 在插入数据时,指定的字段顺序需要与值的顺序是一一对应且插入的数据大小应该在字段的规定范围内
    • 字符串和日期型数据应该包含在引号中
     
    DBA命令
    type
    status
    date
    slug
    summary
    tags
    category
    icon
    password
    Property
     

    将数据库当中的数据导出

     

    导入数据

     

    新建用户

     

    授权