黑马程序员技术交流社区

标题: 【石家庄校区】BootStrap/MySQL数据库 [打印本页]

作者: 付付付付付    时间: 2018-5-9 15:23
标题: 【石家庄校区】BootStrap/MySQL数据库
本帖最后由 小石姐姐 于 2018-5-11 09:43 编辑

BootStrap/MySQL数据库
<<<BootStrap>>>
        使用方法:
                CV大法:运用时直接去文档查找,粘贴复制,根据自己的需求修改代码
        概述:前端框架,基于HTML CSS JS的响应式框架
        前期准备工作:
                下载解压  =>  导入文件(导BootStrap文件时需要先把JQuery文件导入)  =>  <head>中添加<meta name="viewprot" content="width=device-width, initial-scale=1">标签
        全局的CSS样式(文档自查)
                *栅格系统:将屏幕分成十二列的形式
                        使用.row样式定义栅格的行
                        定义列:        .col-lg-n  .col-md-n  .col-sm-n  .col-xs-n
        导航条:(文档自查)
        轮播图:(文档自查)
        模态框:(文档自查)
        标签页:(文档自查)
        字体:(文档自查)






<<<MySql数据库>>>
        数据库:是一个文件系统,通过标准的SQL语句获取数据
        MySql数据库:是一个关系型数据库管理系统
        关系型数据库:存放的是实体之间的关系(ER模型)
        常见的关系型数据库:MySql,Oracle,SQLServer,DB2,SyBase


        Mysql安装
                参见<MySql安装>视频
        服务器:
                分为两个方面:
                        硬件:指得就是一台计算机
                        软件:需要在电这台脑上安装数据库的服务器


        SQL
                1.数据库操作
                        创建数据库(增)
                                create database 数据库名
                                create database 数据库名 character set 字符集 collect 字符集校对规则
                        删除数据库(删)
                                drop database 数据库名
                        修改数据库(改)
                                alter database 数据库名 character set 字符集 collect 字符集校对规则
                        查找数据库(查)
                                show databases                //查找所有数据库
                                show create database 数据库名                //查找指定数据库
                        切换数据库
                                use 数据库名
                        查看当前正在使用的数据库
                                select database()
                2.数据库表的操作
                        创建表
                                create table 表名(字段名 字段类型(长度) 约束,字段名 字段类型(长度) 约束...);
                                字段类型:一个实体对应一个表,一个实体属性对应表的一个字段
                                        Java中的类型                                  MySql中的类型
                                        byte/short/int/long                                tinyint/smallint/int/bigint
                                        float                                                        float
                                        double                                                        double
                                        boolean                                                        bit
                                        char                                                        char/varchar
                                                                                                        char和varchar的区别:
                                                                                                                char:代表固定长度的字符或字符串
                                                                                                                varchar:代表可变长度的字符或字符串
                                        date                                                        date/time/datetime/timestamp
                                                                                                                date:只有日期
                                                                                                                time:只有时间
                                                                                                                datetime:既有时间又有日期
                                                                                                                timestamp:既有时间又有日期
                                                                                                                        datetime与timestamp区别:
                                                                                                                                datetime:如果没有向该字段存入值得时候,数据库使用null存入数
据库中(使用场景:生日字段)
                                                                                                                                timestamp:如果每没有向该字段存入值得时候,数据库使用当前系统时间存入数据库中(使用场景:注册时间字段)
                                        fill                                                        blob/text
                                约束:保证数据库的完整性
                                        分类:
                                                主键约束:        primary key(主键约束默认唯一非空,一般情况下每个表只能有一个主键   )  auto_increment(自增)
                                                唯一约束:        unique
                                                非空约束:        not null
                                       
                        删除表
                                drop table 表名;
                        修改表
                        
                                修改表:
                                        *添加列:                                alter table 表名 add 列名 类型(长度) 约束;
                                        *修改类型,长度和约束:        alter table 表名 modify 新的列名 新的类型(长度) 新的约束;
                                        删除列:                                        alter table 表名 drop 列名;
                                        修改列名称:                                alter table 表名 change 旧列名 新列名 类型(长度) 约束;
                                        修改表名:                                rename table 表名 to 新表名;
                                        修改表字符集:                        alter table 表名 character set 字符集;
                        查看表
                                查看所有表:
                                        show tables;
                                查看表结构
                                        desc 表名;
                                
                3.数据库表记录的操作
                        添加表记录:
                                插入某些列:        insert into 表名 (字段名1,字段名2,字段名3...) values(值1,值2,值3...);
                                插入全部列: insert into 表名 values (值1,值2,值3...);
                                注意:1.值得类型要与数据库中的类型一致]
                                         2.值得顺序要与数据库中的表列的顺序一致
                                         3.值得长度最大不能超过列设置的最大长度
                                         4.值得类型是字符串或者日期类型时使用单引号引起来.
                        修改表记录
                                update 表名 set 字段名=值,字段名=值 where 条件;
                        
                                注意:1.值的类型以字段的类型一致
                                        2.值得最大长度不能超过字段设置的最大长度
                                        3.字符类型和日期类型添加单引号
                        删除表记录
                                delete from 表名 where 条件;
                                注意:1.删除表的记录指的是表中分一行记录
                                        2.没有条件则默认删除所有记录   
                                删除表中的所有记录两种方法:
                                        delete from 表名;   => delete属于DML,一条一条记录的删除,事务可以作用在DML语句上
                                        truncate table 表名; =>truncate属于DDL,将表删除然后创建一个结构一样的表,事物不能控制DDL的
                        
                        查询表记录:(重点)
                                语法:        select[distinct] */字段名 from 表名 [条件];
                                1.基础信息
                                        查询所有信息: select * from 表名;
                                        查询单个字段信息: select 字段名1,字段名2... from 表名;
                                        别名查询信息:        select 字段1+字段2+字段3 as 别名 from 表名;     ==> 别名使用 as 关键字
                                2.条件查询
                                        使用where子句
                                                * >,<,>=,<=,<>,=
                                                * like:模糊查询
                                                * in:范围查询
                                                * 条件关联: and,or,not
                                        selete * from where 字段名 like '李_';                => '_'表示只代表一个字符
                                        select * from where 字段名 like '李%'    => '%'代表任意个数的字符
                                        selete * from where 字段名 in (范围);
                        
                                3.排序查询
                                        使用 order by字段名称 asc/desc;  =>asc代表升序,desc代表降序;
                                        一个排序条件查询:
                                                select * from 表名 order by 字段名 asc/desc;   => 默认升序
                                        多个排序条件查询:
                                                selete * from 表名 order by 字段名1 asc/desc,字段名2 asc/desc;   =>使用逗号分割,首先根据字段1排序,如果数据相同则根据字段2进行排序
                                                
                                                注意:带条件的排序查询,有先后顺序,条件在前排序在后
                                                        eg:  selete * from 表名 where 字段名1 like '李%' order by 字段名2 desc;
                                       
                                       
                                4.分组统计查询
                                        *聚合函数:
                                                sum():求和
                                                count():统计个数
                                                max():统计最大值
                                                min():统计最小值
                                                avg():统计平均数
                                                ifnull():如果是null则自定义赋值
                                                        使用方法: if(字段名,0);  =>表示 如果该字段值为null则给他赋值为0;
                                       
                                        selete sum(字段名) from 表名;                  获取单个字段综合
                                        selete sum(字段名1),sum(字段名2) from 表名;    => 获取多个字段(字段1和字段2 )的总和;
                                        selete sum(字段名) from 表名 where 条件;  ==>获取符合条件的字段名的总和
                                        selete sum(字段1名)+sum(字段名2)+sum(字段名3) from 表名;   =>通过统计列求各字段总和
                                        selete sum(字段名1+字段名2+字段名3) from 表名;   => 通过统计行求个字段的总和
                                       
                                5.分组查询
                                        select 字段名1,count(*) from orderitem group by 字段名2;  => 按字段2分组查询字段1的个数;
                                       
                                        *注意:where 的子句后面不能跟着聚合函数,如果使用带有聚合函数的的条件过滤(分组后条件过滤),需要使用关键字:having
                                        select 字段名1,sum(字段名2) from orderitem group by 字段名3 having sum(字段名2)>5000;  => 按字段3分组查询字段1,条件为字段2总和>5000的数据;
                                       
                                总结:SFWGHO
                                        S(select)...F(from)...W(where)...G(group by)...H(having)...O(order by);
                                       
        多表
                多表约束:
                        外键约束:用来保证数据源的完整性
                                1. 单表约束 ---- 主键约束/唯一约束/非空约束
                                2. 多表约束 ----- 外键约束:用来保证数据完整性(多表之间);
                添加外键:foreign key("多"的表中外键字段名) references "一"的表中的主键名
                                eg: alter table 表名 add foreign key (dno) references dept(did);
                表间关系:
                        一对多:在"多"的表中创建外键,指向"一"的一头的主键
                        多对多:创建中间表,存放至少两个字段,分别为两个表的外键并分别指向两张表
                        一对一: (1)唯一外键方式:假设是一对多,在多的一方创建外键执行一的一方的主键,并将外键设置为唯一(unique)
                                        (2)主键对应:将两个表的主键建立对应关系即可(一般不采用该方法,原因:主键不要有)
               
                多表查询分类:
                        1. 链接查询:  cross join (不使用)
                                交叉查询: 查询到的是两个表的笛卡尔积;
                                语法: select * from 表1 cross join 表2;
                                        select * from 表1,表2;
                        *2.内连接: inner join
                                意思:表达的是两个表的交集的部分,根据关联条件去两个表中匹配有对应关系的记录,有则返回,没有则不返回;
                                显示内连接: select * from 表1 inner join 表2 on 关联条件;
                                *隐式内连接:select * from 表1,表2 where 关联条件;
                                
                        *3.外链接:outer join
                                *左外链接:select * from 表1 left join 表2 on 关联条件;
                                        意思:以左边表格为基准进行查询,匹配到则返回,匹配不到则返回 null
                                右外链接:select * from 表1 right join 表2 on 关联条件;
                                        意思:以右边表格为基准,匹配到则返回,匹配不到则返回 null
                                *左外链接和右外链接,对于表是是相对来说的,可以相互转化,只需要改变表1和表2的位置关系即可
                        *4.子查询:查询语句的嵌套
                                一个查询语句条件需要依赖另一个查询语句的结果
                                (1)带in的子查询:  满足子查询语句的范围
                                (1)带exists的子查询: 判断子查询语句返回true或false,返回true则执行前面的查询语句,反之不可执行
                                (1)带any的子查询:        大于子查询语句结果集任意一个         =>         大于最小值即可
                                (1)带all的子查询:        大于子查询语句结果集全部         =>         大于最大值即可
                *在实际开发中,数据库的设计,永远在开发前;建表前,先分析表之间的联系和类型,依据分析建表
        


                事物:
                        概述:逻辑上的一组操作,组成操作的各个单元逻辑全部成功或者全部失败
                        开启事物: start transaction;
                        提交事物:commit;
                        回滚事务:rollback;
                        事物的特性:
                                1.原子性:不可分割
                                2.隔离性:事务执行,不能受到其他干扰(并发)
                                3.一致性:执行前后,数据完整保持一致
                                4.永久性:事物结束,数据持久化带数据库
                        事物的安全性问题:
                                1.脏读:数据未提交,交易已完成
                                2.不可重发读:读取到其他事物的update
                                3.虚读:读取到了
                        隔离级别:
                                1.read uncommitted;
                                2.read committed;
                                3.repeatable read;
                                4.serializable
                                设置隔离级别:set session transaction isolation level 隔离级别;
                                查询隔离级别:select @@x_isolation;






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