找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手

14天 数据库索引,外键和项目部署

[复制链接]
一,数据库---索引
索引:可以利用索引快速访问数据库中的特定信息,索引有助于更快的获取信息
索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些针。数据库使用索引的方式与书本的目录类似;通过搜索索引找到特定的值,然后随着指针到达包含该值得行。

索引:是在表中存在大量数据,且对某些字段使用比较频繁,为这些使用频繁的字段创建单个字段索引或者多个字段索引,提高查询的速度和性能。
1,创建索引是在表中存在大量数据时,添加索引查询速度很明显,但是表中只有几千条数据,添加索引查询效果不明显:
2,不是表中每个字段都添加索引,每个字段都添加索引就没有意义了,也会大量消耗内存,通常是对我们经常查询的字段添加索引

二,索引的类型:3种
普通索引  index
唯一索引  unique
主键索引  primary key  当你定义一个主键的时候,其实就以及添加了主键索引;一个表中只能有一个主键,但是可以存在多个索引。

三,使用create index 语句创建索引;只能创建一个普通索引

create index +索引名 on 表名(字段名)

给yh表中 id 创建索引
create index yh_id on yh(id);

给yh表中id name 两个字段创建索引
create index yh_id on yh(id,name);

查看表中创建的索引
show index from +表名

show index from yh;

四,使用alter table 语句创建索引
基本格式
1,添加一个普通索引
alter table +表名 add index 索引名(字段名);
2,添加一个唯一索引
alter table +表名 add unique(字段名);简写
alter table +表名 add unique  un_id(id);全写
3,创建创建索引
alter table +表名 add primary key(字段名);

五,删除索引使用alter table 语句来实现
alter table +表名 drop index 索引名;     删除普通索引和唯一索引的方式都是这个

alter table +表名 drop primary key 索引名;      删除主键索引

C:/Users/Administrator/AppData/Local/YNote/data/qq788A1E66A631CF4E5CC90A0BEBD9F713/0cf96ecfba5448e197cad2c09b4ceca5/elf8%24n9pu%7Boo%255%29%7D5wdjbhj.png


六,外键  也叫做外码
1、外键用来做什么呢?
为了一张表记录的数据不要太过冗余;这个和软件的project模块化思想类似,仅仅只是数据表中是对表关系进行解耦,尽量让表记录的数据单一化。
外键的主要作用是:保持数据的一致性、完整性

2、外键 foreign key (外码)
创建时要注意的3个前提:
a、table 是innodb类型(mysql默认安装是这个)
如果我们的存储引擎是MyISAM,那么我们的外键就不会起到作用,属于我们建表时需要我们定制我们的存储引擎是innodb
ENGINE=MyISAM
b,要建立外键的字段必须建立索引
c,定义外键名,不能加引号
alter table +表名 engine=innodb;

实例
1,先创建2个表   test  ,stu
2,在设置的时候,给test表中的id字段添加一个外键,这个外键就是在stu表中的sid字段;那么我们的test表就是主表(父表),stu表就是字表(从表)。
3,先创建test表  create table test(id int(4)primary key,name varchar(20))  engine=innodb;
4,创建子表--(创建的时候添加外键)
stu表中有sid,age字段
create table stu(sid int(6) primary key,age int(2),constraint fk_sid foreign
key(sid) REFERENCES test(id)) engine=innodb;

fk_sid:是外键名(可以自定义)
foreign key(sid):字表的外键字段
references +父表的表名(父表的主键的字段名)
REFERENCES test(id):作用于test表中的id字段



注意,这样相当于把两个表id 和sid  ,只有主表先有得id数据,才能在子表中插入sid的数据
例主表中id数据中有1,2,3,5   那么子表插入的sid数据就不能是4,  只能在1,2,3,5 中选
除非主表添加一个id为4的 ,同理无法把子表中sid中的字段值修改成主表没有的值
  同时如果子表和主表中共有1,2 的id和sid数据那么在主表中这两个数据就无法删除,也无法修改为其他的id数,但是该id的其他字段数据可以被修改   ,如果实在要删除,那么就先删子表的改字段值


删除外键
alter table +表名 drop foreign key +外键名










1、JDK是 Java 语言的软件开发工具包
Apache是普通服务器,本身只支持html即普通网页;Apache只支持静态网页,但像php,cgi,jsp等动态网页就需要Tomcat来处理;由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器,但是,不能将 Tomcat 和 Apache Web 服务器混淆,Apache Web Server 是一个用 C 语言实现的 HTTP web server;Apache,nginx,tomcat并称为网页服务三剑客


二者区别:Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。 Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,servlet)。
打个比方:Apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),Tomcat就是一个桶(装像Java这样的水),而这个桶也可以不放在卡车上。
Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上

Nginx优点:负载均衡、反向代理、处理静态文件优势。nginx处理静态请求的速度高于apache;
 Apache优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
Tomcat:动态解析容器,处理动态请求,是编译JSP\Servlet的容器,Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。
Apache在处理动态有优势,Nginx并发性比较好,CPU内存占用低,如果rewrite频繁,那还是Apache较适合。
真的日常工作中,一般的项目还是用nginx+tomcat来做会多一点。

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册