A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-5-11 09:49 编辑

BootStrap
BootStrap:前端响应式框架,基于HTML、CSS、JavaScript。
响应式:对于不同设备显示不同效果
下载bootstrap
        网站:http://www.bootcss.com/
        下载:用于生产环境的Bootstrap
使用步骤
    1.导入 jquery.js
    2.导入2个 bootstrap.css
    3.导入 bootstrap.js        
    为了确保适当的绘制和触屏缩放,需要在<head>之中添加viewport元数据标签。
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    固定宽度
    <div class="container">...</div>
    100%宽度
    <div class="container-fluid">...</div>
栅格系统
    bootstrap将每一行分成12份。可嵌套
    行 .row
    列
        .col-lg-n        分辨率>1200px
        .col-md-n        1200px>分辨率>992px
        .col-sm-n        992px>分辨率>768px
        .col-xs-n        768px>分辨率
        .col-xx-offset-n        列偏移,跳过n格 再显示
全局CSS
    图片img
    .img-responsive 图片适应外部div
            max-width: 100%; 和 height: auto;
    列表ul|ol
    .list-inline 列表项在一行上显示
组件
插件:模态框、标签页

MySQL
MySQL:关系型数据库
登录MySQL
    mysql -u root -p 密码 [-h xxx -P xxx] //连接数据库
            -h 主机名
            -P 端口号
退出系统,显示Bye即可:exit
查看数据库中与字符集相关参数:show variables like '%character%';
解决中文乱码问题
    原理:
        客户端 默认编码 GBK
        MySQL服务器内部客户端 默认UTF8
        MySQL服务器内部服务端 默认UTF8
    解决:修改客户端 和 MySQL服务器内部客户端 编码一致即可。
    MySQL安装目录 my.ini 文件。:[client] 下 default-character-set=gbk。MySQL服务器客户端编码设置成gbk。需重启服务
重置MySQL密码
    1. 停止MySQL服务
    2. cmd -> mysqld --skip-grant-tables
    3. 新cmd -> 登录MySQL,不需要输入密码
    4. 修改root密码
            use mysql;
            update user set password = password('123') where user = 'root';
    5. 结束mysqld进程。任务管理器中结束
    6. 重启MySQL服务
数据库备份和还原
    数据库备份
    1. cmd-> mysqldump -u root -p 数据库名 >C:/xxx.sql
            输入密码即可
    数据库还原
    方式一:
    1. 在数据库内部创建数据库
    2. cmd -> mysql -u root -p 数据库名 < C:/xxx.sql
            输入密码即可
    方式二:
    1. 在数据库内部创建数据库
    2. 切换到该数据库
            source C:/xxx.sql
数据库:存储数据的仓库,本质是一个文件系统,将数据按照特定格式存储起来,通过标准的SQL访问,对数据库数据进行增加,修改,删除,查询
关系型数据库:存放实体和实体间的关系
DBMS(DataBase Management System)数据库管理系统:操作和管理数据库的软件,用于建立、使用和维护数据库。
数据库服务器存储方式
    1. 一台电脑安装了xxx数据库,这台电脑称为xxx数据库服务器
    2. 数据库服务器中会创建很多数据库(一个项目,会创建一个数据库)
    3. 数据库中会创建多张表(一个实体会创建一个表)
    4. 表中会有很多记录(一个实例会向表添加一条新的记录)
    5. 表中有多个字段(一个实体的属性对应一个字段)

SQL(Structured Query Language)结构化查询语言:用于操作数据库的语言。
SQL分类:
        DDL(Data Definition Language)        数据定义语言:定义数据库,表,列等。create,drop,alter,truncate 等 。事务不可控制
        DML(Data Manipulation Language)数据操作语言:对数据库中表的记录进行更新。insert,delete,update等。事务可控制
        DCL(Data Control Language)数据控制语言:定义数据库的访问权限和安全级别,及创建用户。Grant,if等
        DQL(Data Query Language)数据查询语言:查询数据库中表的记录。select,from,where等
数据库操作
    —创建数据库
    create database 数据库名 [character set 字符集 [collate 字符集校对规则]];
    —查看数据库
    show databases; --显示所有数据库
    show create database 数据库名; --查看某个数据库的定义信息
    —修改数据库
    alter database 数据库名 character set 新字符集 collate 新校对规则;
    —删除数据库
    drop database 数据库名;
    —切换数据库
    use 数据库名; --切换使用数据库
    select database(); --查看当前正在使用的数据库
单表操作
    —创建表
    create table 表名(
        字段名 字段类型(长度) 约束,
        字段名称 字段类型(长度) 约束
        …
    );
    —查看表
    show tables; --查看数据库中所有表
    desc 表名; --查看表的详细结构信息
    —删除表
    drop table 表名;
    —修改表
    alter table 表名
    alter table 表名 add 列名 数据类型 约束; --添加列(字段),
    alter table 表名 modify 列名 新数据类型 新约束; --修改列类型,长度和约束
    alter table 表名 change 旧列名 新列名 数据类型 约束; --修改列名
    alter table 表名 drop 列名; --删除列
    alter table 表名 character set 字符集; --修改表的字符集。不乱改
    rename table 表名 to 新表名; --修改表名
数据类型                   
    finyint/smallint/int/bigint   
    float/double                  
    bit(0、1)                     
    char 和 varchar(长度表示的是位数(字符个数))
    date/time/datetime/timestramp
    BLOB/TEXT
约束
    主键约束 primary key (默认唯一非空)
    唯一约束 unique
    非空约束 not null
表记录操作
—添加
insert into 表名 (列1,列2...) values (值1,值2...) --给指定字段添加数据
insert into 表名 values (值1,值2...); --给所有列添加数据
insert into 表名 (列1...) values (值1...),(值1...); --批量添加数据
注意事项:
  值的类型与表中列的类型一致。
  值的顺序与表中列的顺序一致。
  值的最大长度不能超过列设置最大长度。
  值的类型是字符串或者是日期类型,使用单引号引起来。
—修改
update 表名 set 列1=值1,列2=值2... [where 条件];
—删除
delete from 表名 [where 条件]; --如果不写条件,逐条删除,不清空auto_increment 记录数
truncate table; --摧毁表,删除所有数据,重建表。效率高
表记录查询
select [distinct] *|列1 [as '列别名'],... from 表名 [[as] '表别名'] --基本查询
        where 条件 --条件查询,筛选,过滤
        group by 列名 --分组查询,必须跟随聚合函数,对每组进行计算
        having 条件 --对分组查询后筛选
        order by 列名 [desc|asc],列2 [desc|asc]... --排序查询,默认升序。如果前一列相同按照第二列排序...
distinct:去除重复,多个字段时都相同为重复
asc        :升序(默认,日期为从过去到现在)
desc:降序
条件:数据中唯一性的列
        =,>,<,>=,<=,<>(不等于)
        like --模糊查询。占位符:%代表任意个字符,_代表一个字符
        [not] in (值1,值2...) --范围查询,[不]包含
        and|or|not --关联查询,与|或|非
        between 值1 and 值2 --某一区间(值1要小于值2,含头尾)
        is [not] null --[不]为空
聚合函数,对一列进行计算,返回单一的值
        count(列名) --统计指定列不为null的记录行数。建议写主键列名。
        sum(列名) --计算指定列的数之和,不是数值类型,结果为0
        ifnull(列名,值) --该字段若为null,则使用该值
        max(列名) --计算指定列的最大值,如果字符串,使用字符串排序
        min(列名) --计算指定列的最小值,如果字符串,使用字符串排序
        avg(列名) --计算指定列的平均值,不是数值类型结果为0

多表事务
多表设计
命名:约束名:fk‘从表名随便写’
多表外键约束:保证多表之间数据完整性。
    给从表添加外键约束
    alter table 从表名 add foreign key(从表外键列名) references 主表名(主表主键列名)
    特点:主表不能删除从表中已经引入的数据
一对多
建表原则:在多方创建外键指向一方的主键。从表中添加字段(建议:主表名_id),这个字段称为外键,并且一般设置为非空。开发中一般不设置为真外键。
多对多
建表原则:创建第三张表(中间表),中间表至少两个字段分别作为外键,分别指向两个表的主键。
一对一
建表原则:
唯一外键对应方式:在任意一方表添加外键,指向另一方表的主键。(外键一般添加唯一约束)(如果不需要分成两个表,两表合一即可)
主键对应方式:两个表的主键对应(相等)(一般不采用,不该对主键再赋予业务含义)
多表连接查询
交叉连接:查询到的是两个表的笛卡尔积
    1. select * from 表1 cross join 表2;
    2. select * from 表1,表2;
内连接:(inner join,inner可省略)返回两表交集。根据关联条件(主表主键=从表外键),从两个表匹配,返回匹配上的记录,匹配不上则不返回。
    1.显示内连接
    select * from 表1 [inner] join 表2 关联条件;
    2.隐式内连接(常用)
    select * from 表1,表2 where 关联条件;
外链接(outer join, outer可省略)
    左外连接:以左表为基准,根据关联条件去右表查询,匹配上则返回,匹配不上返回null
    select * from 表1 left [outer] join 表2 on 关联条件;
    右外连接
    select * from 表1 right [outer] join 表2 on 关联条件;
内连接与外链接区别:
    1.内连接 查询两个表的交集
    2.外连接 查询两个表的交集和左表(或右表)的数据
子查询:一个查询语句条件需要依赖另一个查询语句的结果。
    带in的子查询
    ... where 字段名 in (查询语句|值); --多个值逗号隔开。返回该字段中包含值得的记录
    带exists的子查询
    ... where exists (查询语句); --查询语句查询记过记录存在,则前面的SQL语句执行
    带any的子查询
    ... where 字段名 > any(查询语句); --返回该字段大于括号中任意值的记录(也就是大于最小值)
    带all的子查询
    ... where 字段名 > all(查询语句); --返回该字段大于括号中所有值的记录(也就是大于最大值)
事务
事务指逻辑上的一组操作,组成这组操作的各个逻辑单元,要么全都成功,要么全都失败。
MySQL中事务管理
    start transaction; --开启事务
    commit; --提交事务
    rollback; --回滚事务
ACID特性
- 原子性(Atomicity):事务不可分割,组成事务的各个逻辑单元不可分割
- 一致性(Consistency):事务执行前后,数据完整性保持一致
- 隔离性(Isolation):事务执行不应该受到其他事务的干扰
- 持久性(Durability):事务一旦结束,数据就持久化到数据库中
不考虑隔离性引发的安全问题
- 脏读:一个事务读到另一个事务未提交的数据,导致查询结果跟实际数据不一致
- 不可重复读:一个事务读到另一个事务已经提交的update数据,导致多次查询结果不一致
- 虚读/幻读:一个事务读到另一个事务已经提交的insert数据,导致多次查询结果不一致
解决这些安全性问题
事务隔离级别
    read uncommitted --脏读、不可重复读、虚读都有可能发生
    read committed        --避免脏读。
    repeatable read --避免脏读、不可重复读
    serializable        --避免脏读、不可重复读、虚读
设置事务隔离级别
    SET SESSION TRANSACTION ISOLATION LEVEL 隔离级别
查看当前事务隔离级别
    SELECT @@tx_isolation;

JDBC基础JDBC(Java Data Base Connectivity)Java数据库连接:Sun公司提供的一套统一规范(接口),用于执行SQL语句的Java API。
驱动:两个设备(应用)之间通信的桥梁
数据库驱动:也是类库,每个数据库厂商提供实现了这套规范的实现类。
使用步骤
- 注册驱动。告诉JVM使用的是哪一个数据库驱动
- 获得连接。DriverManager -> Connection
- 获取执行SQL对象。Connection -> 执行SQL对象
- 处理结果。执行SQL对象 -> Result|int
- 释放资源。Connection、执行SQL对象、ResultSet。close()
注册驱动 //因为Driver类的静态代码中调用了DriverManager.registerDriver()方法,所以直接加载类即可
    Class.forName("com.mysql.jdbc.Driver") //加载MySQL驱动
驱动管理工具类
    DriverManager
    //注册驱动
    registerDriver(java.sql.Driver)
    此方式不使用,存在两方面不足
            1) 硬编码,后期不易于程序扩展和维护
            2) 驱动被注册两次。原因:实现类源码,静态代码块已经调用此方法进行注册
    //获取数据库连接对象。返回Connection接口的MySQL包中实现类对象
    Connection getConnection(String url,String user,String password)
    url数据库地址:"jdbc:mysql://数据库服务器主机地址:端口号/数据库名" //jdbc:连接数据库的协议。mysql:是jdbc的子协议
    连接本地可简写:"jdbc:mysql:///数据库名"
数据库连接接口
    Connection
    //获取执行SQL对象
    Statement createStatement()
    PreparedStatement preparedStatement(String sql)        //SQL语句中参数采用?占位符。对SQL语句进行预处理
    CallableStatement prepareCall(String sql) //执行数据库中存储过程
    //管理事务
    setAutoCommit(boolean autoCommit) //设置是否自动提交事务。设置为false,相当于开启事务,后面的execute可以commit或rollback
    commit()         //提交
    rollback()        //回滚
执行SQL接口
    Statement 接口。(开发不用)
    //执行SQL
    int executeUpdate(String sql) //执行(insert,update,delete),返回影响的行数
    ResultSet executeQuery(String sql) //执行(select),返回ResultSet
    //执行批处理。需在URL后添加参数"?rewriteBatchedStatements=true"
    addBatch(String sql) //将SQL添加到批处理
    clearBatch()                 //清空此对象的当前SQL命令列表
    executeBatch()                 //将一批命令执行,不会清空批处理
PreparedStatement 接口
    setXxx(int,值)                         //设置?占位符参数。位置从1开始
    int executeUpdate()          //执行SQL语句
    ResultSet executeQuery() //执行查询SQL语句
    //批处理。SQL语句只编译一次,设置不同参数即可
    addBatch() //将SQL添加到批处理
结果集ResultSet 接口
   Boolean next() //第一次调用光标指向第一行。没有数据则返回false
    xxx getXxx(String colName) //根据列名|列索引获取字段数据。如果取了别名,则根据别名获取结果
    Object getObject(String colName)
JDBC释放资源
    Connection对象要做到尽量晚创建,尽早释放。
    释放资源的代码写入finally代码块中
    if(对象!=null){
        try{
                    对象.close();
        }catch(SQLException e){
            e.printStackTrace();
        }
        对象=null; //断开引用指向,可以尽早回收不用的资源
    }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马