数据库学习笔记

这是在360培训时学习数据库时的笔记,主要学习了Mysql,也包含部分oracle,sqlserver.

零散

  • select后没有表中的字段时,结尾不使用from
  • 查询某个表不再当前数据库时,可以使用[数据库名].[表名]来使用这个表

    数据结构

  • 字段:数据最小单位
  • 片段:若干字段组成描述一个实体

关系模型

  • 关系:二维表
  • 元组:表中的一行
  • 属性:表中的一列
  • 主码:能唯一标识某元组的属性值

MySql

基础

主键与外键

主关键字(主键,primary key)是被挑选出来, 主关键字作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。又称主码。并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。
主键必须唯一。但不一定是一个字段,比如复合主键。

语句的分类

DDL:数据库定义语言,如创建,修改删除数据库对象.

1
2
3
4
5
create table
alter table
drop table
create index
drop index

DML:数据库操作语言

1
2


DCL:数据库控制语言

1
2
3
4
grant:授权
reboke:撤销权限
commit:提交事物
rollback:事物处理回退

定义基本表:

1
2
3
4
5
6
NOT MULL
DEFAULT:给定默认值
UNIQUE:限制列取值不重复
CHECK:限制列的取值范围
PRIMARY KEY
FOREIGN KEY:定义本列为外键

表其他

1
2
desc tablename :查看表
show create table tablename:显示表的结构

MySQL自带数据库

本条针对MySQL 官方 5.7.17版本,只有5.5以上的MySQL才有information_schema

information_schema

什么是information_schema

information_schema数据库是MySQL系统自带的数据库,它提供了数据库元数据的访问方式。感觉information_schema就像是MySQL实例的一个百科全书,记录了数据库当中大部分我们需要了结的信息,比如字符集,权限相关,数据库实体对象信息,外检约束,分区,压缩表,表信息,索引信息,参数,优化,锁和事物等等
INFORMATION_SCHEMA提供对数据库元数据的访问,有关MySQL服务器信息,例如数据库或表的名称,列的数据类型或访问权限。
information_schema 中的表实际上是视图,而不是基本表,因此,文件系统上没有与之相关的文件

几个重要的表
  • CHARACTER_SETS:提供了 mysql 可用字符集的信息。SHOW CHARACTER SET; 命令从这个表获取结果
  • SCHEMATA:当前 mysql 实例中所有数据库的信息。SHOW DATABASES; 命令从这个表获取数据
  • TABLES 表:存储数据库中的表信息(包括视图),包括表属于哪个数据库,表的类型、存储引擎、创建时间等信息。SHOW TABLES FROM XX; 命令从这个表获取结果
  • COLUMNS 表:存储表中的列信息,包括表有多少列、每个列的类型等。SHOW COLUMNS FROM schemaname.tablename 命令从这个表获取结果
  • STATISTICS 表:表索引的信息。SHOW INDEX FROM schemaname.tablename; 命令从这个表获取结果
  • USER_PRIVILEGES 表:用户权限表。内容源自 mysql.user 授权表。是非标准表
  • SCHEMA_PRIVILEGES 表:方案权限表。给出了关于方案(数据库)权限的信息。内容来自 mysql.db 授权表。是非标准表
  • TABLE_PRIVILEGES 表:表权限表。给出了关于表权限的信息。内容源自 mysql.tables_priv 授权表。是非标准表
  • COLUMN_PRIVILEGES 表:列权限表。给出了关于列权限的信息。内容源自 mysql.columns_priv 授权表。是非标准表
  • COLLATIONS 表:提供了关于各字符集的对照信息。SHOW COLLATION; 命令从这个表获取结果
  • TABLE_CONSTRAINTS 表:描述了存在约束的表。以及表的约束类型。
  • KEY_COLUMN_USAGE 表:描述了具有约束的键列
  • VIEWS 表:给出了关于数据库中的视图的信息。需要有 show views 权限,否则无法查看视图信息

    performance_schema

什么是performance_schema

MySQL的performance schema 用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况,它具有以下特点:

  • 提供了一种在数据库运行时实时检查server的内部执行情况的方法。performance_schema 数据库中的表使用performance_schema存储引擎。该数据库主要关注数据库运行过程中的性能相关的数据,与information_schema不同,information_schema主要关注server运行过程中的元数据信息
  • performance_schema通过监视server的事件来实现监视server内部运行情况, “事件”就是server内部活动中所做的任何事情以及对应的时间消耗,利用这些信息来判断server中的相关资源消耗在了哪里?一般来说,事件可以是函数调用、操作系统的等待、SQL语句执行的阶段(如sql语句执行过程中的parsing 或 sorting阶段)或者整个SQL语句与SQL语句集合。事件的采集可以方便的提供server中的相关存储引擎对磁盘文件、表I/O、表锁等资源的同步调用信息。
  • performance_schema中的事件与写入二进制日志中的事件(描述数据修改的events)、事件计划调度程序(这是一种存储程序)的事件不同。performance_schema中的事件记录的是server执行某些活动对某些资源的消耗、耗时、这些活动执行的次数等情况。
  • performance_schema中的事件只记录在本地server的performance_schema中,其下的这些表中数据发生变化时不会被写入binlog中,也不会通过复制机制被复制到其他server中。
    本段出自 独角的犀牛:https://www.jianshu.com/p/4c19af70c355

对于performance_schema暂时不深入学习.之后需要学可以参看 独角的犀牛:https://www.jianshu.com/p/4c19af70c355

语句实例

数据库维护

删除数据库

1
drop database name;

备份和恢复

  • 只备份数据表

    1
    mysqldump [-h主机名]  [-P端口] -u[username] -p[password] dbName >  [存放路径]\name.sql --注意不在mysql里执行,直接在cmd下执行,且没有分号.
  • 备份整个库

    1
    mysqldump [-h主机名]  [-P端口] -u[username] -p[password] -B dbName >  [存放路径]\name.sql --注意不在mysql
  • source 命令导入 (使用navcat的cmd失败原因未知)

    1
    2
    3
    4
    5
    #需要先登录到mysql终端
    mysql> create database abc; # 创建数据库
    mysql> use abc; # 使用已创建的数据库
    mysql> set names utf8; # 设置编码
    mysql> source /home/abc/abc.sql # 导入备份数据库
  • mysql命令导入整个数据库

    1
    mysql -u[username] -p[password] < 路径\name.sql --直接在cmd执行,不进入mysql
  • 查看当前数据库下的用户:

    1
    select user,host from mysql.user;
  • 创建一个新用户:

    1
    create user 'username'@'主机名' identified by 'password';
  • 修改用户密码

    1
    2
    set password for '[username]'@'host'=password('[new_password]');  --mysql8.0以下版本
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; --mysql8.0 ,with 后的字段是指定加密规则.
  • 修改用户账号

    1
    rename user 'old_user'@'old_host' to 'new_user'@'new_host';
  • 删除用户

    1
    drop user `user`@`host`;

权限管理

  • 查看用户权限

    1
    show grants for 'user'@'host';
  • 添加用户权限

    表权限:’Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’
    列权限:’Select’, ‘Insert’, ‘Update’, ‘References’
    过程权限:’Execute’, ‘Alter Routine’, ‘Grant’

1
2
3
4
grant [all privileges|select|create...] on [数据库名.表名] to 'username'@'hostname' indentified by '密码' with grant [option]; --8.0之前的版本
GRANT ALL ON *.* TO `wangwei`@`127.0.0.1` WITH GRANT OPTION; --mysql8.0
-- 给权限添加限制条件只需要在最后加个 `with [限制条件]`
比如with max_queries_per_hour 1;
  • 刷新用户权限 刷新后权限生效

    1
    flush privileges;
  • 回收用户权限

    1
    revoke delete on *.* from 'jack'@'localhost';

数据操作

修改一行数据:

1
update student set sno='s010' where sno='s0010';

1
update [tablename] set [col1]=[newvalue1],[col2]=[newvalue2]... where [col1]=[oldvalue1],[col2]=[oldvalue];

字符串连接:

1
update student set birthday=concat((year(now())-sage),1010) where sno='s006'; #使用concat(str1,str2)连接,不是字符串的转换为字符串.

数据表操作

  • Check约束 限制列中的取值范围如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制
    下面的 SQL 在 Persons 表创建时为 Id_P列创建 CHECK 约束。CHECK 约束规定 Id_P 列必须只包含大于 0 的整数。

    1
    2
    3
    4
    5
    6
    CREATE TABLE Persons  -- 创建表时添加约束
    (
    Id_P int NOT NULL,
    City varchar(255),
    CHECK (Id_P>0)
    )
  • 如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE Persons
    (
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
    )
  • 如果在表已存在的情况下为 “Id_P” 列创建 CHECK 约束,请使用下面的 SQL:

    1
    2
    3
    4
    5
    ALTER TABLE Persons
    ADD CHECK (Id_P>0)
    或者
    ALTER TABLE Persons
    ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
  • 如需撤销 CHECK 约束,请使用下面的 SQL:

    1
    2
    ALTER TABLE Persons
    DROP CHECK chk_Person
  • 修改表的字符集

    1
    语法:alter table 表名 convert to character set 字符集;
  • 查询所有表名:

    1
    show tables;
  • 查看表结构:

    1
    desc test;
  • 设置自增:

    1
    2
    3
    create table(no int primary not null auto_increament);

    alter table student2 modify sno int primary key outo_increment;
  • 修改自增步长:

    1
    set auto_increment_increment=2;
  • 修改自增初值:

    1
    alter table student auto_increment=10;

修改数据: update test set 字段1=’新值1’,字段2=’新值1’,… where id=1;
修改表结构: alter table student add 字段名 字段约束条件 //新增字段
alter tabke 表名 drop 字段名 //删除字段
alter table 表名 change 字段名 新字段名 字段约束条件 //修改字段
alter table 表名 modify 字段名 字段约束条件 //修改字段约束条件
Change与modify的区别:Change可以修改字段的名称

  • 修改字段名称和属性:
1
2
3
将test字段改为test1
ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型 约束条件
ALTER TABLE user10 CHANGE test test1 CHAR(32) NOT NULL DEFAULT '123';
  • 修改表名称
    1
    ALTER  TABLE admin_user RENAME TO a_user;

数据库操作

查询所有库名:

1
show databases;

查看数据库的属性:

1
show create database test;

修改数据库属性:

1
alter database test charset=utf8; or   alter database test character set utf8;

查看字符集:

1
show charset; -- GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK

创建字符集为utf8的数据库test:

1
create database test charset utf8;

更改数据库属性:

1
2
alter database test character set utf8; 
or alter tablename character set utf8; -- 这两个命令都没有更新已有记录的字符集,而只是对新创建的表或者记录生效。

部分查询语句

order by

ORDER BY 语句用于对结果集进行排序
语句用于根据指定的列对结果集进行排序,默认按照升序(asc)对记录进行排序,如果希望按照降序对记录进行排序,可以使用 DESC 关键字
特殊的:
group by, order by 后面跟数字,指的是 select 后面选择的列(属性),1 代表第一个列(属性),依次类推。

复杂查询

join on 中 使用where

多表left join是会生成一张临时表,并返回给用户
on条件是对连接前的两个表进行条件过滤,不符合的行过滤掉(如果是外连接,则过滤一张表)
where条件是针对最后生成的这张临时表进行过滤,过滤掉不符合where条件的记录,是真正的不符合就过滤掉
外连接中(如左连接)where限制左表时,减少行数
外连接中(如左连接)where限制右表时,不减少行数,被过滤数据,有表过滤行显示null

函数

字符连接

group_concat()

select GROUP_CONCAT(col_name SEPARATOR '|') FROM table_name
separator是指定连接符号

通常会有这种用法

1
2
3
4
5
6
7
8
待查询的数据库
+----+------+
| no | name |
+----+------+
| 1 | mana |
| 2 | mana |
| 3 | lage |
+----+------+
1
select no,group_concat(sname separetor '_') from ttable group by no;

查询结果是,按照no分组,同一nosname合并,并使用_连接
groupconcat.png

group_concat内还可以使用order by

1
select name,group_concat(id order by id desc separetor '_') from ttable group by name;

如果不使用分组(orderby),那么实际查询结果就是所有group_concat()所指定的字段的值,并使用连接符号连接(默认是逗号),此时select后只能有group_concat()这一个查询字段,如果要包含其他查询字段就必须使用group by

1
2
3
4
5
6
mysql> select group_concat(name) from ttable;
+--------------------+
| group_concat(name) |
+--------------------+
| mana,mana,lage |
+--------------------+

字符串截取

left()

left(str, length) 从左截取n个

1
2

left('sqlstudy.com', 3)

right(str, length) 从右截取n个

1
2

right('sqlstudy.com', 3)
substring()

在函数 substring(str,pos, len)中, pos 可以是负值,但 len 不能取负值

substring(str, pos);
从字符串的第 4 个字符位置开始取,直到结束

1
substring('sqlstudy.com', 4)

substring(str, pos, len);
从字符串的第 4 个字符位置开始取,只取 2 个字符:

1
2

substring('sqlstudy.com', 4, 2)

从字符串的第 4 个字符位置(倒数)开始取,直到结束。

1
mysql> select substring('sqlstudy.com', -4);

从字符串的第 4 个字符位置(倒数)开始取,只取 2 个字符。

1
2
3
mysql> select substring('sqlstudy.com', -4, 2);

substring('sqlstudy.com', -4, 2)

substring_index()

substring_index(str,delim,count)
截取第二个 ‘.’ 之前的所有字符:

1
2
3
mysql> select substring_index('www.sqlstudy.com.cn', '.', 2);

substring_index('www.sqlstudy.com.cn', '.', 2)

截取第二个 ‘.’ (倒数)之后的所有字符:

1
2
3
mysql> select substring_index('www.sqlstudy.com.cn', '.', -2);

substring_index('www.sqlstudy.com.cn', '.', -2)

如果在字符串中找不到 delim 参数指定的值,就返回整个字符串

注释

第一种

1
delete from haha -- 这是注释,前面要有一个空格

第二种

1
delete from haha #这是注释,不需要空格

第三种

1
delete from haha /*这是注释*/

其他实例

登录MYSQL:

1
mysql –u root –proot  -h 服务端ip地址 –P 端口

查看所有数据库:

1
show databases;

查看所有表:

1
show tables

查看一个表结构:

1
desc student;

查看创建表的语句:

1
show create table student

创建表的时候声明默认字符集:

1
create table student(no int,name char(20)) default charset=utf8;

添加非空约束:

1
alter table student modify column sname char(8) not null;

查询班级为95031或者性别为女的所有信息

1
select * from student where class=95031 or ssex='女';

查询不姓王的同学的信息:

1
select * student where sname not like '王%'

查询表中每个同学的姓名和年龄(已知生日字段):

1
select sname,(year(curdate())-year(sbirthday)) from student

查询和’李军’同性别的所有sname:

1
select sname from student where ssex=(select ssex from student where sname='李军');

复制表结构到新表

1
CREATE TABLE 新表 LIKE 旧表 ; -- 复制所有字段类型(自增主键等)

1
CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2; -- 主键类型,和自增不会复制过去

复制表结构及数据到新表()

1
CREATE TABLE 新表 SELECT * FROM 旧表;

复制旧表数据到新表(两表结构相同)

1
INSERT INTO 新表 SELECT * FROM 旧表

查询男生女生人数:

1
select ssex,count(*) from student where ssex='男' union select ssex,count(*) from student where ssex='女';

查询第四条之后3条数据:

1
2
select * from student limit 3,3;
select * from student limit 3 offset 3;

内连接:

1
select * from table_a inner join table_b on table_a.a_id=table_b.b_id; -- 只显示符合on后面条件的结果,结果是a和b表的组合

外连接

1
select * from table_a left join table_b on table_a.a_id=table_b.b_id; -- 左连接左边的全显示,右边的只显示符合on后条件的,不符合的显示null;右连接相反.

between 的范围是包含两边的边界值

1
eg: id between 3 and 7 等价与 id >=3 and id<=7

not between 的范围是不包含边界值

1
eg:id not between 3 and 7 等价与 id <3 or id>7

查询只出现一次的数据

1
select sn from sc group by sn having count(sn)=1);

创建数据库后添加语句,避免乱码

1
set names utf8;

查询“c001”课程比“c002”课程成绩高的所有学生的学号:
| sno | cno | score |
| :— | :—-| :—- |
| s001 | c001 | 78 |
| s002 | c001 | 80 |
| s001 | c002 | 82 |
| s002 | c002 | 72 |
| s003 | c003 | 73 |

1
2
select a.sno from (select * from sc8 where cno='c001') a join (select * from sc8 where cno='c002'  )b on a.sno=b.sno and a.score>b.score;
# 类似的同一张表通过一列信息来限制另一列信息,将表拆分(差出两个表),然后查询,查询出来的表必需要设置表别名

限制查询结果不重复:

1
select distinct name, id from table;

Web中间件

定义中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源.
用于提供系统软件和应用软件之间的连接,便于软件各部件之间的沟通,为一中或多种程序提供容器.
作用:屏蔽网络硬件平台的差异性,和操作系统与应用网络的差异性,同时负责负载均衡,连接管理和调度.
web服务器件用于提供http服务

Web应用的构成: web应用->中间件->数据库->操作系统

几个中间件的默认端口:

  • apache:80;
  • nginx: 80;
  • iis:80;
  • tomcat:8080
  • JBoss:8080
  • weblogic:7001

web中间件,容器,服务器的区别

web服务器用于提供http服务,或者把动态请求委托于其他程序.
web容器:用于给处于其中的应用程序组件(jsp,servlert)提供一个环境,是中间件的组成部分,实现了了对动态语言的解析,web容器属于中间件的组成部分(中间件可以没有)

IIS

优点:模块化网络核心,统一标准的Http管道

基本安装步骤

360实验平台,使用xp拓扑机

  • 控制面板->添加或删除程序->添加/删除win组件
  • windows组件向导下,勾选 应用程序服务器,点击详细信息
  • 打开后勾选asp.net,取消勾选internet信息服务(iis)重新勾选后点击详细信息
  • 打开后,选择iis组件中的万维网服务,文件传输协议(ftp)服务,nntp service 和 smtp service 四个服务.点击确定
  • 下一步,要求插入光盘,选择路径c/???点击确定(需要选择并确定两次)
  • 点击完成,进入 控制面板->管理工具->internet服务管理器(iis管理器)
  • 进入后,网站->默认站点,右键打开,记录路径
  • 网站, 右键,新建网站
  • 进入网站创建向导->下一步
  • 输入网站描述,下一步
  • ip: 127.0.0.1 , 端口: 80 下一步
  • 这里提前在c盘建立any文件夹,用于存放网站数据
  • 输入主目录路径c:\any,下一步
  • 勾选 读取,运行脚本,浏览 下一步
  • 完成
  • internet信息服务(iis)管理器,可以产看到新建的网站,网站目录下为空
  • 将桌面的网站文件解压到any目录下
  • 回到iis管理器,any 右键 ,属性,主目录,配置,调试,勾选 启用asp服务… 启用asp 客户端….
  • 选项,勾选启用父路径 确定
  • 回到any属性->文档->添加,新增一个index.asp,确定,确定
  • 回到iis管理器,单击web服务扩展,允许 ‘active serverpages’ ‘asp.net v1.1.4322’ ‘webdav’ ‘在服务器端的包含文件’
  • 访问127.0.0.1

Apache与Tomcat

apache是web服务器,tomcat是应用服务器
静态网页apache处理并返回,动态请求apache转发给tomcat,tomcat处理后返回给apache,然后apache返回结果

Apache

全称:apache http server
apache是目前使用最广的web服务器,php是一种类似asp的服务器端脚本语言

Apache特点:简单,快速,稳定,可配置代理,强扩展,使用广泛,并发高,c实现

使用360实验平台在windows 的配置方法

  • 双击apache安装包,开始apache安装
  • next,接受协议,next,安装说明next
  • 信息填写界面,前三项随意填写,勾选’fro all users….’,next
  • 安装类型界面,典型安装,next
  • 选择安装目录,改为c:\wamp\apache2.2\,ok,next,install,finish
  • 安装完成,托盘栏目出现带绿色标志的红羽毛,表示apache正常启动
  • 开始配置php
  • 浏览127.0.0.1可看到默认欢迎界面,apache安装完毕
  • php5.3.52-xxx.zip解压到c:\wamp\php

php可以以两种方式运行:CGI(对应文件php5ts.dll文件)和SAPI方式。由于我们使用Apache,所以是以SAPI模块方式运行,对应文件是php5apache2_2.dll。配置php.ini文件,php提供了两个模板,php.ini-development和php.ini-production,前者适合开发程式使用(测试用),后者拥有较高的安全性设定,则适合上线当产品使用。这里我们将php.ini-development文件改为php.ini做配置文件使用,目录为C:\wamp\php,修改完成后打开该文件。

  • 打开c:\wamp\php目录中的conf目录下的httpd.conf
  • 配置文件中添加

    1
    2
    3
    LoadModule php5_module "c:/wamp/php/php5apache2_2.dll"
    AddType application/x-httpd-php .php
    PHPIniDir "c:/wamp/php/"
  • 配置主页文件:找到DirectoryIndex参数,在后面添加index.php,保存httpd.conf文件.

  • 打开c:\wamp\php目录,将php.ini-development文件改为php.ini做配置文件使用,修改后打开它
  • 修改dll文件目录: 将 extendion_dir = “c:\wamp\php\ext” 赋值并取消前面的注释符号(分号)
  • doc_root = "c:\wamp\Apache2.2\htdocs" 赋值并取消注释
  • 取消 extension=php_mysql.dllextension=php_mysqli.dll的注释,保存php.ini文件
  • 开始加载MySQL模块
  • 解压”桌面–实验工具”中的phpMyAdmin.....zipc:\wamp\Apache2.2\htdocs
  • 进入htdocs,修改文件夹名为phpMyAdmin
  • 右键右下角apache图标,单击open services打开服务窗口
  • 找到apache2.2服务,单击并重新启动此服务
  • 浏览器输入127.0.0.1/phpmyadmin访问,可以打开php页面,且当前拓扑机已经安装Mysql,用户名root 密码123456,点击执行
  • Apache端口号修改,打开c:\wamp\Apache2.2\conf目录下的httpd.conf文件.修改Listen 80为自己想要的端口数字如Listen 8081,保存
  • 开始->管理工具->服务,重启apache2.2
  • 重启后127.0.0.1无法连接,浏览器默认80端口,输入127.0.0.1:8081,可以运行,出现默认欢迎界面
  • 默认端口修改成功,修改apache网站根目录(c:\apache2.2)新建www文件夹,并在里面新建一个hellow.html写入欢迎内容.
  • 网站根目录打开apache下的conf目录,打开httpd.conf,修改DocumentRoot "c:/Apache2.2/htdocs"DocumentRoot "c:/Apache2.2/www"
  • Directory "c:/apache2.2/htdocs"修改为Directory "c:/apache2.2/www"
  • 网站主页DirectoryIndex添加hellow.html,保存关闭,重启apache,进入172.0.0.1:8081,就进入自建的欢迎页面

总结

重要的配置是:

  1. httpd.conf->Listen 修改ip和端口
    1. 例如Listen 127.1.2.1.1:80,也可以只改端口 Listen:800
  2. httpd.conf->DocumentRoot 根目录
    1. httpd.conf->Directory 根目录
  3. httpd.conf->DirectoryIndex 网站主页

主目录下重要的目录:

  1. logs 日志目录
    1. access.log 访问日志
    2. error.log 错误日志
    3. install.log 安装日志
  2. conf 配置文件目录
  3. htdocs 默认网页文件目录

Tomcat

配置环境变量

几个环境变量的作用

  • path: 配置cmd扫描执行文件的目录
  • classpath: 是约定的一个可以设置我们自己的.class, jar文件所在目录的变量。不过某个Java程序可以自己决定取与不取这个变量。Tomcat 在某些情况下会去取,你自己的Java程序你不设置就会忽略它的。基本上用不到它
  • java_home: JAVA_HOME是一个约定,通常它指的是JDK的目录。如果需要JDK的话,大部分程序会默认去环境变量中取JAVA_HOME这个变量
  • jre_home:同样,这也是一个约定的变量,通常指JRE目录。其实大部分Java程序不需要JDK,而是只需要其子集JRE,所以很多程序也会去取这个变量来用。
  • CATALINA_HOME:这是Tomcat用的,它的值代表当前tomat根目录,比如:E:\apache-tomcat-7.0.55。这个变量,仅当你移动了.bat/.sh等用来启动Tomcat的文件(就是不在原来的tomcat\bin下面了)时才需要指定。比如,在Linux中你将catalina.sh复制到/etc/rc.d/init.d/下做自启动服务时就需要设置一下

配置上述环境变量的例子:

1
2
3
4
5
java_home:'C:\Program File\Java\jdk1.7.0_79'
path:'%java_home%\bin;%java_home%\jre\bin;' //配置jdk的
classpath:'.;%java_home%\lib;%java_home%\lib\tools.jar'
CATALINA_HOME:'Tomcat主目录'
path:'%CATALINA_HOME%\bin;%CATALINA_HOME%\lib' //tomcat的

配置Tomcat

bin目录存放启动关闭等脚本,内含计算机可以直接执行的二进制文件
完全配置好后执行startup.bat开启tomcat

startup.bat文件会检查catalina.bat文件执行所需要的环境,并调用catalina.bat文件,catalina.bat负责启动tomcat.

执行时可能出现的错误:

1
2
3
4
5
6
7
8
java.net.BindException:Address already in use:JVM_Bind. 
//端口冲突,需要修改端口

java.lang.OutOfMemoryError:Java heap space
//内存溢出,Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,从而导致客户端显示500错误。
//Windows环境下修改catalina.bat文件,在文件开头增加如下设置:set JAVA_OPTS=
Xms256m-Xmx512m Linux 环境下修改catalina.sh文件,在文件开头增加如下设置:JAVAOPTS='-Xms256m
-Xmx512m'

将桌面——实验工具中的war包放到Tomcat主目录的webapps目录下
先查看启动时的端口号,conf目录下面的server.xml文件,用notepad++打开找到Connector port,这个就是端口号,默认为8080.

用浏览器访问http://localhost:8080/hello看到的运行界面就打开了刚才的hello文件了
访问http://localhost:8080可以看到Tomcat的默认主页

NGINX

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好
优点:高并发支持好,邮件代理,负载均衡,安装使用简便,热部署,热升级,不间断运行

安装NGINX

  • 将NGINX安装包解压到C盘,目录变为c:\nginx-1.74\
  • 打开解压后的NGINX目录,可以看到NGINX的配置文件目录(conf)、默认网页目录(html)、日志目录(log)和启动文件(nginx.exe)
  • cmd进入c:\nginx-1.4.7\执行start nginx.exe,打开浏览器访问127.0.0.1,出现欢迎页面
  • 命令nginx.exe -s stop关闭服务
    简单的介绍一下NGINX的命令
    启动:start nginx或nginx.exe
    停止:nginx.exe -s stop或nginx.exe -s quit
    注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
    重新载入Nginx:nginx.exe -s reload
    当配置信息修改,需要重新载入这些配置时使用此命令。
    重新打开日志文件:nginx.exe -s reopen
    查看Nginx版本:nginx -v

重要目录和文件

  • conf 配置文件目录
    • fastcgi.conf:fastcgi相关参数的配置文件
    • mime.types:媒体类型
    • nginx.conf:默认主配置文件
    • scgi_params:scgi相关参数文件
  • logs 日志目录
    • access.log:访问日志
    • error.log:错误日志

修改端口

nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80
修改 server下的listen,来修改端口

修改网站目录

默认的网页目录是html,默认主页是index.html和index.htm
同样是nginx.conf,修改locatin下的root网页根目录,和index默认主页

WebLogic

WebLogic是美国bea公司出品的一个application server,确切的说是一个基于Javaee架构的中间件,纯java开发的
多种标准支持,ejb,jsp,jms,jdbc,xml,wml. 极高的可扩展性,可靠性,快速开发,灵活性.
优点:领先的标准,扩展性,快速开发,部署灵活,关键任务可靠

直接使用安装包,取消勾选 更新, 典型安装,其他的都默认
安装完weblogic后,会弹出配置窗口,点击第一项开始进入配置

  • 域设置点击“下一步”
  • 点击“下一步”,配置weblogic账户密码,密码为weblogic123
  • 点击“下一步”,直到出现创建部署选项按钮
  • 创建部署选项,完成
  • 启动weblogic服务启动weblogic服务的路径C:\Oracle\Middleware\user_projects\domains\base_domain下的startWebLogic.cmd应用部署web应用
  • 们在网页浏览器中输入http://localhost:7001/console地址,就可以访问WebLogic的控制台了
  • 稍等一会之后,可以看到登陆界面,输入之前设置的账号密码登录
  • 点击左侧的部署
  • 我们选择在C盘创建一个test文件夹,并将实验工具中的hello.war包放到该文件夹中
  • 在右侧点击安装按钮,准备进行项目安装
  • 看到路径输入框,可以在下面选择要部署的项目的位置,我们选择刚才复制到test目录下的war包,点击下一步
  • 选择定位样式,这里选默认就行,点击下一步即可
  • 可选配置,直接使用默认,可以直接点击完成,也可以点击下一步到确认界面
  • 如果点击下一步,则可进入复查界面,这里将之前配置过的选项全都罗列出来,可以通过点击上一步进行修改,确认无误后,点击完成
  • 保存完成后,会看到激活更改的提示,且不需要重启
  • 这时便可以进行测试了,输入项目名称,看到了项目的欢迎页面,即项目部署成功。访问方式http://127.0.0.1:7001/hello/,其中hello为刚才部署的项目名称

重要目录

基本目录

  • Coherrence 在集群协议,分布式的数据管理和缓存服务
  • Logs 系统日志目录
  • Modules weblogic运行时需要的jar文件
  • user_projects 定义域存放的位置
  • Utils 用户第三方工具包
  • wlserver_10.3:weblogic主目录

User_projects目录

  • Autodeploy:此目录下应用程序(ear,war)等被自动展开服务
  • Bin:存放域中可执行文件
  • Config:存放本域相关的配置文件
  • Console-ext:控制台信息,只应用于adminServer
  • Lib:库文件
  • Security:安全相关
  • Server:包含域的所有服务
  • Startweblogic.cmd:用于win下WebLogic启动
  • Startweblogic.sh:用于Linux下WebLogic启动

    JBoss

    jboss是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。(jboss也是web容器,jsp/servlet容器,是一个完整的j2ee容器,但是不是核心功能)
    优点:免费开源java,内存硬盘需求少,安装简单,热部署,运行效率高,安全.
  • 解压jboss包到c:/jboss-as-7.1.1-Final
  • 安装好jdk配置好环境变量
  • 配置jboss环境变量

    1
    JBOSS_HOME:'c:\jboss-as-7.1.1-Final'
  • 运行之前必须添加用户,在JBoss的bin目录下找到add-user.bat运行,配置好用户名和密码

  • 启动bin目录下的standalone.bat
  • 访问127.0.0.1:8080,进入欢迎页面
  • 将要部署的war包放入C:\jboss-as-7.1.1.Final\standalone\deployments
  • 然后通过浏览器访问网站: http://127.0.0.1/hell,看到自定义欢迎页面
如果文章有问题欢迎指出,或者你也可以联系我
本文作者:E1se
本文链接: 2018/11/30/数据库学习笔记/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
-------------本文结束-------------
0%