发表于: 2019-01-10 15:09:42
2 519
一 前言
学习,需要了解知识之间的贯通,并且建立结构化的模型,之后利用这些模型来更好的帮助你建立信息的高速公路。
包括艾隆马斯克的第一性原理,也就是这个意思,因此我们这里要快速的利用这种高速学习的方法来掌握知识,实现在过年之前找到工作的愿望。
二 今日学习内容
task1 主要是mysql和mybatis的相关处理,不要求所有任务都完成,但是大概的逻辑必须实现。
2.1 安装Mysql
该部分内容考核的是对于基本软件的安装,6.0之后的mysql是收费的,因此我们这里还是安装5.5版本的。
1下载并安装及配置Mysql 5.5
安装说明和文件以上传百度网盘
链接:https://pan.baidu.com/s/1ZN5ss1QJXy7Z5Cd32QXmbw
提取码:m1kx
2下载navicat,或者是Hedisql
这里我使用的是navicat,安装很简单,使用:
https://blog.csdn.net/wypersist/article/details/79834490这篇文章处理就很简单了。
2.2 报表结构设计
这部分的目的,是使用navicat进行表的设计以及进行表内容的增删改查。
1 创建数据库
格式:
* create database 数据库名;
* create database 数据库名 character set 字符集;
#创建数据库 数据库中数据的编码采用的是安装数据库时指定的默认编码 utf8
#创建数据库 并指定数据库中数据的编码
eg. create database Student_Information
2 设计表的结构
表的结构如下
1.编号(id int(100)) 2.姓名(username varchar(255)) 3.班级 (class varchar(255))
4.出生年月( birthday varchar(255)) 5.籍贯 (city varchar(255)) 6. (qq int(100) ) 7.邮箱 (email varchar(255)) 8.电话( phone int(255))
2.1 约束
* A: 约束的作用:
create table 表名(
列名 类型(长度) 约束,
列名 类型(长度) 约束
);
限制每一列能写什么数据,不能写什么数据。
* B: 哪些约束:
主键约束
非空约束
唯一约束
外键约束
2.2 主键约束
* A: 主键是用于标识当前记录的字段。它的特点是非空,唯一。
在开发中一般情况下主键是不具备任何含义,只是用于标识当前记录。
* B: 格式:
1.在创建表时创建主键,在字段后面加上 primary key.
create table tablename(
id int primary key,
.......
)
2. 在创建表时创建主键,在表创建的最后来指定主键
create table tablename(
id int,
.......,
primary key(id)
)
3.增加主键:在我们使用mysql的时候,有时会遇到须要更改或者删除mysql的主键
第一步我们需要删除表的主键
alter table student drop primary key;
第二步我们需要增加表的主键
alter table student add primary key(id);
注:在增加主键之前,必须先把反复的id删除掉。
4.主键自动增长:一般主键是自增长的字段,不需要指定。
实现添加自增长语句,主键字段后加auto_increment(只适用MySQL)
eg:
#使用数据库
use student_information;
#创建表
--以上没有自增主键
create table student(
id int(100),
username varchar(255),
class varchar(255),
birthday varchar(255),
city varchar(255),
qq int(100),
email varchar(255),
phone int(255)
);
自增主键
create table student(
id int(100) primary key auto_increment ,
username varchar(255),
class varchar(255),
birthday varchar(255),
city varchar(255),
qq int(100),
email varchar(255),
phone int(255)
);
至此数据结构和表设计完成
3 在表中插入一条数据
#查看表的结构
#desc student;
#查看表中的数据
select * from student;
#向表中插入数据
--以上内容是没有设置主键自增的
insert into student values(1,'胡八一','IT修真院','1990-02','北京','13211312','dongdong@qq.com','121221213')
#查看表中的数据
select * from student;
以下自增主键
insert into student(username,class,birthday,city,qq,email,phone) values('胡八一','IT修真院','1990-02','北京','13211312','dongdong@qq.com','121221213')
至此表中数据插入完成。
4 将本条数据记录的姓名改成老大
考察的表记录的修改,使用的是update关键字
任务目标,将满足条件的记录指定列修改为指定值
语法:
update 表名 set 字段名=值,字段名=值;
update 表名 set 字段名=值,字段名=值 where 条件;
* B: 注意:
列名的类型与修改的值要一致.
修改值得时候不能超过最大长度.
值如果是字符串或者日期需要加’’.
C:一些简单的案例
#1,将指定的sname字段中的值 修改成 日用品
UPDATE sort SET sname='日用品';
#2, 将sid为s002的记录中的sname改成 日用品
UPDATE sort SET sname='日用品' WHERE sid='s002';
UPDATE sort SET sname='日用品' WHERE sid='s003';
本题解答:
#将所有的名字都改为老大
update student set username = '老大'
#将胡八一的名字都改为摸金校尉
update student set username = '摸金校尉' where username = '胡八一'
至此,我们基本完成了表的增删改查功能。
5 索引
5.1 索引概念
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。
可以得到索引的本质:索引是数据结构。
如果不太容易理解,我们可以理解,索引是字典
如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。
如果没有索引,那么你可能需要a----z,如果我想找到Java开头的单词呢?或者Oracle开头的单词呢?
所以说,你可以理解索引是:“排好序的快速查找数据结构”。
数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,
这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。
5.2 索引的存储方式
一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上
我们平常所说的索引,如果没有特别指明,都是指B树(多路搜索树,并不一定是二叉的)结构组织的索引
注意:
B树(Balance Tree多路平衡查找树)
5.3 索引的优势和劣势
优势:
提升了数据查询的效率,降低数据排序的成本,降低了CPU的消耗
劣势:
1索引列占用空间
2 降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。
因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,
都会调整因为更新所带来的键值变化后的索引信息
3 索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句
5.4 索引分类
- 普通索引:仅加速查询。
- 唯一索引:加速查询 + 列值唯一(可以有null)。
- 主键索引:加速查询 + 列值唯一 + 表中只有一个(不可以有null)。
- 组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并。
- 全文索引:对文本的内容进行分词,进行搜索 。
5.5 哪些情况需要建立索引
- 主键,唯一索引;
- 经常用作查询条件的字段需要创建索引;
- 经常需要排序、分组和统计的字段需要建立索引;
- 查询中与其他表关联的字段,外键关系建立索引。
5.6 索引总结
(1)创建索引后,查询数据变快,但更新数据变慢。
(2)性能下降的原因很可能是索引失效导致。
(3)索引创建的原则,经常查询的字段适合创建索引,频繁需要更新的数据不适合创建索引。
(4)索引字段频繁更新,或者表数据物理删除容易造成索引失效。
(5)擅用 explain 分析sql语句。
(6)除了优化sql语句外,还可以优化表的设计。如尽量做成单表查询,减少表之间的关联。设计归档表等。
5.7 索引实战
创建索引的两种方法:
CREATE [UNIQUE ] INDEX indexName ON mytable(columnname(length));
ALTER TABLE 表名 ADD [UNIQUE ] INDEX [indexName] ON (columnname(length))
---索引是个很大的项目,但是我们这里并不需要对理论理解的那么透彻,实用即可。。。。
另外,不逼迫1下自己你是绝对不知道自己有多么出色的,我今天竟然能搞这么多东西,也是吃了个惊,等下出去跑步,晚上再学习俩小时。
把索引这里补完。
评论