黑马程序员技术交流社区

标题: [石家庄校区】WEB阶段7-10天总结 [打印本页]

作者: 曹可津    时间: 2018-5-9 17:05
标题: [石家庄校区】WEB阶段7-10天总结
本帖最后由 小石姐姐 于 2018-5-23 14:38 编辑

Web阶段7-10天总结
第7天BootStrap

BootStrap设计出响应式页面,由它设计页面可以在手机,PAD,PC都可以直接访问.
Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列
    定义列:.col-lg-n .col-md-n  .col-sm-n   .col-xs-n
BootStrap的使用:
下载BootStrap:
http://www.bootcss.com
使用时先要引入BootStrap CSS文件
Jquery文件要在BootStrap前引入


MySQL的概述

数据库就是一个文件系统,通过标准的SQL语句获取数据


  *关系型数据库

MySQL
Oracle
SQLServer
DB2
SyBase
     数据库一般用表储存数据,每一个实例创建一个表
在一个表中有很多数据,一个实体的实例,会创建一条新的纪录


   SQL的分类

DDL:数据定义语言
create,drop,alter..
DCL:数据控制语言
grant,if…
DML:数据操纵语言
insert,update,delete…
DQL:数据查询语言


  
操作数据库

   创建数据库
create database 数据库名称 [character set 字符集 collate 字符集校对规则];
字符集和字符集校对规则不写则为默认
   查看数据库
show databases
查看全部数据库
show create database 数据库名称
查看某个数据库的信息
  修改数据库
altera database 数据名称 character set 字符集 collate 校对规则
  删除数据库
drop database 数据库名称
  查看当前正在使用的数据库
Selsect database();


SQL创建表

create table 表名称(字段名称 字段类型(长度) 约束,字段名称 字段类型(长度) 约束…);
字段类型
一个实体对应一个表,一个实体属性对应表的一个字段。
Java中的类型                                                MySQL中的类型
byte/short/int/long                                         tinyint/smallint/int/bigint
float                                                                        float
double                                    double
boolean                                                                bit
char/String                                                        char和varchar类型
                                                                        char和varchar的区别:
                                                                        * char代表是固定长度的字符或字符串。
                                                                                * 定义类型char(8),向这个字段存入字符串hello,那么数据库使用三个空格将其补全。
                                                                        * varchar代表的是可变长度的字符串。
                                                                                * 定义类型varchar(8), 向这个字段存入字符串hello,那么存入到数据库的就是hello。
Date                                                                date/time/datetime/timestamp
                                                                        datetime和timestamp区别
                                                                        * datetime就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库
使用null存入到数据库中
                                                                        * timestamp也是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的系统时间存入到数据库中。
File                                                                        BLOB/TEXT


约束

作用:保证数据的完整性
单表数据约束分类
主键约束:primary key 主键约束默认就是唯一 非空的
唯一约束:unique
非空约束:not null


SQL关于表的操作

查看表


  show tables;
查看某个表
  Desc 表名
删除表:
drop table 表名
修改表:
  alter table 表名 add 列名 类型(长度) 约束
修改表:修改列类型,长度和约束
alter table 表名 modify 列名 类型(长度) 约束;
修改表:删除列
alter table 表名 drop修改表:修改列名称
alter table 表名 change 旧列名 新列名 类型(长度) 约束;


列名

修改表:修改表名
rename table 表名 to 新的表名
修改表:修改表的字符集
alter table 表名 character set 字符集
SQL修改表的记录
update 表名 set 列名=值,列名=值 [where 条件];
SQL查看表的记录
语法:select [distinct] *|列名 from 表 [条件];
条件查询
使用where子句
> , < , >= , <= , <> ,=
like:模糊查询
in:范围查询
条件关联:and , or ,not
where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条件过滤(分组后条件过滤)需要使用一个关键字having
select product,sum(price) from orderitem  group by product having sum(price) > 5000;

S(select)… F(from)…W(where)…G(group by)…H(having)…O(order by);


第9天多表


设置两个表格的外键约束
        did(部门键值)      dno(部门员工相对应的部门键值)

        alter   table  表名 add  from  foregin key   (dno) references  dept(did);   创建外键约束
        alter table 表名  add  from foregin key (dno) references dept (did)





三种表的关系

        一对多表关系
        多对多表关系

        建标的原则 : 需要创建第三张表(中间表),在中间表中至少两个字段分别作为外键,指向多对多双方的主键

        一对一表关系

        





多表查询的分类链接查询


        交叉链接

        了解,因为这种方法查询到的是两个表的笛卡儿积(就是两个表的乘积)
        select *  from  表 1 cross join 表 2;
        select  * from 表 1, 表2;

        内连接

        显示内连接

        select * from  表1 inner join 表2 on 关联条件

        隐式内连接

        select * from 表 1,表2 where 关联条件


        外连接

        左外连接
        select * from 表1 left outer join 表2 on  关联条件
        右外连接
        select * from 表1 right outer join 表 2 on 关联条件


        事务的特征:ACID特性

        面试重点记住ACID是什么,还有事务的特征
        原子性

        事务的不可分割,组成事务的各个逻辑单元不可分割


        一致性

        事务执行的前后,数据完整性保持一致.

        隔离性(企业中必定会去做事务的并发处理)

        事务执行不应该受到其他事务的干扰.

        持久性

        事务一旦结束,数据就持久化到数据库中


        隔离性的隔离级别

        一个事务的执行 ,不应该受到其他事务的干扰

        脏读
        不可重复读
        虚读/幻读: 虚读是内部执行的   不可演示

        设置事务的隔离级别
        read  uncommitted
        read committed
        repeatable read
serializable    可以限制不可重复读,避免脏读,避免幻读




第十天JDBC

•        什么是JDBC?
•        Java Data Base Connectivity:java数据库连接.
•        什么是数据库的驱动
•        驱动:两个设备(两个应用)之间通信的桥梁.
•        为什么学习JDBC
•        JDBC就是一组java的接口,提供了驱动规范,各个数据库来实现这个接口,程序员就只学一组API就可以了.

JDBC的入门

•        环境准备
•        创建数据库和表
•        数据库的驱动都是以一个jar包的形式提供的.

JDBC的开发步骤


注意导入的是sql类.
•        加载驱动
•        Class.forName("com.mysql.jdbc.Driver");
•        获得连接
•        Connection conn = DriverManager.getConnection(url,user.password);
•        url--->jdbc:mysql://localhost:3306/数据库.
•        基本操作
•        Statement statement = conn.createStatement();
•        String sql = "sql语句"
•        ResultSet rs = statement.executeQuery(sql);
•        while(rs.next()){ 获取里面的内容.表里面的内容. }
•        释放资源
•        rc.close();
•        statement.close();
•        conn.close();

JUnit 测试 来代替main方法入口.
•        在Java程序中写一个注解@Test,并引入JUnit4.

JDBC之DriverManager:驱动管理类

•        驱动管理类
•        作用:
•        注册驱动
•        API中有个方法,但是实际开发中一般不会使用这个方法完成驱动注册,在Driver类中有个静态代码块已经注册了一次了,要是再调用方法的话就会重复注册.
•        Class.forName("com.mysql.jdbc.Driver");
•        获得连接
•        方法: getConnection(url,user,password)
•        注意url的写法:jdbc:mysql://localhost:3306/web_test3
•        jdbc:连接数据库的协议
•        mysql:是jdbc的子协议
•        localhost:连接的MySQL数据库服务器的主机地址(连接本机就可以写成localhost),吐过连接的不是本机的,就需要协商连接主机的IP地址
•        3306:MySQL数据库服务器的端口号
•        web_test3:数据库名称
•        如果连接的是本机的路径,可以省略localhost:3306.但是/不能省略.\

•        
•        
Java API之Connection
•        与数据库连接对象
•        作用
•        创建执行SQL语句的对象
•        createStatement();返回的是Statement对象,执行SQL语句.
•        prepaerCall();返回的是CallableStatement对象:执行数据库中的存储过程
•        prepareStatement();返回的是PreparedStatement对象,执行SQL的预处理,用来处理SQL的注入漏洞.
•        管理事务.
•        commit();提交事务的方法
•        rollbacke();回滚事务
•        停止自动提交的方法.

•        
Java API之Statement
•        执行SQL语句
•        boolean execute(Stirng sql);
•        执行查询,修改,添加,删除.
•        ResultSet executeQuery(String sql);
•        只执行查询(即select语句)
•        int executeUpdate(String sql)
•        执行修改,添加,删除的sql语句.

•        执行批处理
•        addBatch();
•        clearBatch();
•        executeBatch();

ResultSet
•        通过select语句查询的结果才有结果集.就是把查询结果的一个表格,封装成了一个对象.
•        遍历结果集,用next()方法.用while循环来遍历.
•        next方法返回的是boolean类型的一个值,有下一个数据就返回true,没有则返回false.
•        表中每个字段都有对应的get方法来获取.getXXX(),有两个重载方法,一个传入一个int类型的参数,一个传入一个String类型的参数.一般使用String参数的,因为列号不确定,String参数传的是字段名,int传的是列所在的位置是第几列.还要一个getObject()方法,可以获取任意类型的结果.
•        如果传入的参数是String类型的话,在查询语句中有时候会给字段取个别名,那就用别名来作为参数传入方法中.
JDBC的资源释放

•        JDBC 程序执行结束后,将与数据库进行交互的对象释放掉,通常是ResultSet, Statement,Connection
•        Connection对象是非常稀有的(因为他的创建非常占用资源),这个对象一定要做到尽量晚创建,尽早释放掉.因为有个最大值限制,
程序设计原则
•        对扩展是开放的!!
•        对修改源码是关闭的!!
在preparedStatement的sql语句中,模糊查询like 后面直接写?,下面再设置?的值,?的值要带%.创建链接会耗费很多资源,所以Collection对象很珍贵,要最晚建立,最早结束.







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