数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建

个人数据库基础笔记,将各类数据库从环境搭建到使用简单回忆整理,方便自己回顾知识点,也同大家分享下:


关系型数据库(一般基于Jdbc和Sql语法):Mysql   、Oracle 、SqlServer

非关系型数据库(基于结构):Redis 、Memcached 、mongoDB


相关文件个人网盘下载地址  yun.zyp168.cn  (亦可官网自己下载),图片看不清可以右击在新标签打开图片,所有cmd下操作建议用管理员模式;


cmd常用命令:  

服务管理   net  start service  ;       net  stop  service ;    sc config  service   start= disabled/ auto / demand

端口进程管理  netstat -aon|findstr "80"   ;    tasklist|findstr "2448"    ;     taskkill /F /pid 1408;


Mysql环境搭建:

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第1张图片

Mysql特点:

轻量级关系型数据库,免费,简单;默认端口3306,bin下主要常用指令程序 mysqld.exe  、MySQLInstanceConfig.exe  、mysql.exe,常用配置文件my.ini;常用用户root作为管理员,默认数据库有4个:information_schema   performance_schema   mysql   test  ; 常用图形界面工具 sqlyog ;

Mysql数据库常用概念:实例、数据库、表、行、列、主键、外键、自增长、更新、查询、Sql语句、索引;

核心服务:Mysql服务(必须)

Mysql登录:

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第2张图片

Mysql   /bin文件下的常用操作指令:

mysql   -u root -p

mysqldump -h  127.0.0.1 -u root  -p  test  > d:\test.sql   导出

Mysql  登录后操作指令:

show databases;

use  databases;

show tables;

desc  mytable;

exit ;

drop table mytable;

truncate table mytable;

source d:\test.sql  ;导入

insert into mysql.user(Host,User,Password)  values("localhost","test",password("1234"));   创建用户
GRANT privileges(如select,insert,update,all等) ON  databasename.tablename(如test.*) TO  'username'@'host'    授权

Mysql   crud命令:

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第3张图片

创建表单

DROP TABLE IF EXISTS `mytb`;
CREATE TABLE `mytb` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(10) DEFAULT NULL COMMENT '名称',
  `pid` int(11) DEFAULT NULL COMMENT '外键',
  PRIMARY KEY (`id`),
  KEY `FK_mytb_youtb` (`pid`),
  CONSTRAINT `FK_mytb_youtb` FOREIGN KEY (`pid`) REFERENCES `youtb` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

自增长的增加

INSERT INTO  mytb VALUES(NULL,"name",1);

分页

SELECT * FROM mytb LIMIT 0,2;


oracle环境搭建:(将两个压缩文件都解压到同一文件夹内,然后开始安装)(OracleEX试用版本占内存小,适合练习)

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第4张图片

oracle数据库:商用收费的关系型数据库,默认端口1521;常用图形界面工具plsql ;

oracle数据库常用概念:实例     表空间   表  序列   sql  等;

核心服务: OracleOraDb11g_home1TNSListener  和  OracleServiceORCL (必须)

常用帐户 :管理员帐户sys/system(必须as sysdba登录)  普通用户scott

oracle登录如下:

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第5张图片

Oracle数据库表、序列的创建:

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第6张图片

Oracle常用指令:

创建临时表空间

create temporary tablespace Demo_temp 
tempfile 'D:\JavaTools\Oracle11g\tablespace\Demo_temp.dbf' 
size 5m  
autoextend on  
next 5m maxsize 50m  
extent management local; 

grant connect,resource to scott ;

创建表空间

create tablespace Demo_date 
logging  
datafile 'D:\JavaTools\Oracle11g\tablespace\Demo_date.dbf' 
size 5m  
autoextend on  
next 5m maxsize 50m  
extent management local;  

grant connect,resource to scott ;

重命名表空间

alter tablespace mytablespace_date rename to mynewtablespace_data

创建表

create table "ADMIN"
(
   id                 NUMBER(6)            not null,
   name               VARCHAR2(30)         not null,
   constraint PK_ADMIN primary key (id),

   constraint AK_ADMIN unique (id,name)
) tablespace  Demo_date;

创建序列

create sequence seq_sysmsg start with 1 increment by 1 minvalue 1  ;

INSERT INTO ADMIN VALUES(SEQ_ADMIN.NEXTVAL,'ZHANG','Z','123','0',to_date('2015-05-01','yyyy-mm-dd'))

添加外键

ALTER TABLE ADMIN_ROLE  ADD CONSTRAINT FK_ADMIN FOREIGN KEY(ADMIN_ID) REFERENCES ADMIN(ID);

分页操作:

-- 方法一:效率最高
select * from (
-- 查询行号小于20的[表单信息]及[行号信息(外层需使用)]
select rownum as rn , cc.*
from Contract_Conten cc 
where rownum <= 10
-- 查询行号小于20的[表单信息]及[行号信息(外层需使用)]
) temp where temp.rn >=5 ;

-- 方法二:效率其次,易拼接
select * from (
select rownum as rn ,temp1.*  from
(select cc.* from Contract_Conten cc) temp1
 where  rownum <=10
) temp2 where temp2.rn >=5 ;

解锁scott帐户

  SQL> ALTER USER scott ACCOUNT UNLOCK;
  SQL> ALTER USER scott IDENTIFIED BY tiger;

SqlServer数据库的环境搭建(SqlServerEX试用版占内存小,适合练习)

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第7张图片

SqlServer是收费的关系型数据库,默认端口1433,其登录验证方式有两种:管理员sa帐号密码、本地计算机管理员帐号密码;

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第8张图片

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第9张图片

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第10张图片

SqlServer常用概念:实例   sql    T-sql    表   

建议使用自带图形工具SQL Server Management Studio进行操作:

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第11张图片

常用命令:

 -- 使用数据库,无需再用test.dbo.table_01
 use test
 -- 查看表结构
 exec sp_help table_01
 -- 查看所有数据库
 exec sp_databases
 -- 删除数据库
 drop database test
 -- 删除表
 drop table table_01
 truncate table table_01

-- 分页两种方法:

-- 查询第二页5*(2-1)=5
select top 5 * from table_01 where
id >(
select MAX(id) from 
(select top 5 id from table_01 order by id) as temp
)
order by id

-- 查询第三页5*(3-1)=10

select top 5 * from table_01 where
id not in (
select top 10 id from  table_01 order by id
)
order by id 

三种关系型数据库比较: 

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第12张图片

Java中关系型数据库的增删改查基于JDBC和SQL语句,常用JdbcUtil封装类+properties文件作数据库连接处理,用JdbcTemplate封装类作CRUD操作,用JdbcMapper封装类实现ORM关系映射。


package com.zyp168.util;


import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;


/*
 * 数据库访问JDBC工具类
 */
public class JdbcUtil {
// ---单例模式---


private static JdbcUtil jdbcUtil;
private static Properties properties = new Properties();
private static String jdbc_driver;
private static String jdbc_url;
private static String jdbc_user;
private static String jdbc_pwd;
//懒汉式-单例模式
private JdbcUtil() {


}
public static JdbcUtil getInstance() {
if (jdbcUtil == null) {
jdbcUtil = new JdbcUtil();
}
return jdbcUtil;


}
// ---静态代码块---
static {
InputStream inputStream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("mysqlConfig.properties");
try {
properties.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
jdbc_driver = properties.getProperty("driver");
jdbc_url = properties.getProperty("url");
jdbc_user = properties.getProperty("user");
jdbc_pwd = properties.getProperty("pwd");
try {
Class.forName(jdbc_driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}


// ---获取连接---
public Connection getConnection() {
Connection connection = null;
try {


connection = DriverManager.getConnection(jdbc_url, jdbc_user, jdbc_pwd);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;


}


// ---关闭资源---
public void close(Connection connection, Statement stmt, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}


if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}


if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}


}


package com.zyp168.util;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;




/*
 * Jdbc的模板:提取出更新和查询方法封装
 */
public class JdbcTemplate {
// 单例模式:static修饰的字段可以直接建立引导关系(不需要使用new其类再调用,可以直接用类.方法的形式调用),且只会被创建一次,位于gc根目录不被回收,会造成内存泄露
private static JdbcTemplate jdbcTemplate;


private JdbcTemplate() {
// 默认构造方法
}


public static JdbcTemplate getInstance() {
if (jdbcTemplate == null) {
jdbcTemplate = new JdbcTemplate();
}
return jdbcTemplate;


}


// 封装更新操作(增、删、改)
public boolean update(String sql, Object[] objArr) {
// 初始化成员变量
boolean flag = false;
Connection con = null;
PreparedStatement pstmt = null;
// 注册并链接
con = JdbcUtil.getInstance().getConnection();
try {
// pstmt
pstmt = con.prepareStatement(sql);
if (objArr!=null) {
for (int i = 1; i <= objArr.length; i++) {
pstmt.setObject(i, objArr[i - 1]);
}
}
// 执行
int result = pstmt.executeUpdate();
// 受影响行数大于零返回ture
flag = (result > 0);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.getInstance().close(con, pstmt, null);


}
return flag;


}


// 封装单条查询操作
public Object findOneInfo(String sql, Object[] objArr, JdbcMapper mapper) {
// 初始化成员变量
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Object rsObject = null;
// pstmt
try {
con = JdbcUtil.getInstance().getConnection();
pstmt = con.prepareStatement(sql);
if (objArr!=null) {
for (int i = 1; i <= objArr.length; i++) {
pstmt.setObject(i, objArr[i - 1]);
}
}
// 执行
rs = pstmt.executeQuery();
if (rs.next()) {
rsObject = mapper.mappinng(rs);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 查询
JdbcUtil.getInstance().close(con, pstmt, rs);
}
return rsObject;
}


// 封装查询多条操作


public List findAllInfo(String sql, Object[] objArr,
JdbcMapper mapper) {
List list = new ArrayList();
// 初始化变量
Object rsObject = null;
// Connection.createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库。
Connection con = null;
// PreparedStatement表示预编译的 SQL 语句的对象,Statement 对象的子接口
PreparedStatement pstmt = null;
// ResultSet查询获得的数据表,next方法将光标移动到下一行对象(对应数据库表中的行),没有下一行时返回 false;
ResultSet rs = null;
try {
// 注册并链接
con = JdbcUtil.getInstance().getConnection();
// 创建PreparedStatement对象
pstmt = con.prepareStatement(sql);
if (objArr!=null) {
for (int i = 1; i <= objArr.length; i++) {
pstmt.setObject(i, objArr[i - 1]);
}
}
// 执行
rs = pstmt.executeQuery();
while (rs.next()) {
rsObject = mapper.mappinng(rs);
list.add(rsObject);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.getInstance().close(con, pstmt, rs);
}
return list;


}
}


package com.zyp168.util;


import java.sql.ResultSet;


/*
 * 对象映射接口
 */
public interface JdbcMapper {
public abstract Object mappinng(ResultSet rs);
}


package com.zyp168.model.mapper;


import java.sql.ResultSet;
import java.sql.SQLException;


import com.zyp168.model.User;
import com.zyp168.util.JdbcMapper;


public class UserMapper implements JdbcMapper {


@Override
public Object mappinng(ResultSet rs) {
User user = new User();
try {
//ORM映射 
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setPwd(rs.getString("pwd"));
} catch (SQLException e) {
// 实体类属性和数据库表中字段的映射关系不匹配
e.printStackTrace();
}
return user;
}


}



非关系型数据库

Redis环境搭建和使用:

安装redis服务:

redis-server --service-install redis.windows.conf

如果出现maxheap导致错误,请在redis.windows.conf 添加     maxheap 1024000000 (大小自己定)

设置内存大小:

redis-server redis.windows.conf --maxmemory 200m

卸载服务:

redis-server --service-uninstall

使用Redis:

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第13张图片

Redis简介:基于结构,value支持多种类型如String 、List 、Set 、Hash、Zset(对应不同操作指令),有0-15总共16个库,Redis数据库之间可以相互通信,Redis 数据可以持久化到关系型数据库;默认端口号6379;可设置密码管理(无用户帐号管理);单线程,有效减少并发问题。

常用指令:

key *

flushdb

flushall

exists key

select (库号0-15)

dbsize

move(key ,dbindex)   将key移动到某个库

del key 

type key[hhy]

save

bgsava

shundown

对于String类型常用命令:

set(key,value)

get  (key)

对于List类型常用命令:

rpush( key ,value)

llen(key)

lindex(key,index)

更多请参考度娘

Memcached环境搭建:

安装服务

memcached -d install

设置内存大小

memcached.exe -p 10000 -m 512 -d start


(sc create Memcachedserver11212 binpath= "F:\memcached\memcached.exe -d runservice -m 500 -p 11212" start= auto displayname= "Memcached server (11212)")


使用telnet登录(打开和关闭window服务中启用)

net start memcached   启动服务

telnet 127.0.0.1 11211

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第14张图片

memcachde简介:基于,不支持持久化,memcached之间不通信,支持类型有限(String),默认端口11211,无加密管理;

常用5个指令:set     add     replace   get    delete

mongoDB 的环境搭建和使用

安装mongoDB:

安装后在mongoDB 文件夹下添加db和log文件夹并新建\mongo.conf和\log\mongo.log文件,其中\mongo.conf文件内容如下(地址按实际情况)

dbpath=D:\Program Files\MongoDB\db
logpath=D:\Program Files\MongoDB\log\mongo.log

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第15张图片

安装mongoDB服务指令:

mongod       --dbpath "D:\Program Files\mongodb\data\db"       --logpath "D:\Program Files\mongodb\data\log\MongoDB.log"     --install(安装)\remove(移除) 

 [     --serviceName   "memcached1(名称)" ]   ([ ]可选,路经要绝对路径)

例如:

mongod       --dbpath "D:\Program Files\mongodb\db"       --logpath "D:\Program Files\mongodb\log\mongo.log"    -install

或者建议使用配制文件

mongod       --dbpath "D:\Program Files\mongodb\mongo.conf"    install    

测试使用MongoDB指令:

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第16张图片

mongoDB简介:文档型数据库(介于关系和非关系型之间),适用轻量级小文件存储,分布式,可持久化,高性能,高可用,自动分片,有用户和密码管理,默认端口号27017,重要相关概念:库        集合(即表,格式为key-value,value即文档)     文档(基于JSON格式)

命令举例,详细问度娘:

show  dbs;(默认有admin和local)

use localdatabase;

show  collections;

数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建_第17张图片

使用Java操作NoSql数据库相关见个人云盘yun.zyp168.cn,先简单纪录到这里,待后期补充!


你可能感兴趣的:(Java后台开发笔记)