数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建
个人数据库基础笔记,将各类数据库从环境搭建到使用简单回忆整理,方便自己回顾知识点,也同大家分享下:
关系型数据库(一般基于Jdbc和Sql语法):Mysql 、Oracle 、SqlServer
非关系型数据库(基于<key , value>结构):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特点:
轻量级关系型数据库,免费,简单;默认端口3306,bin下主要常用指令程序 mysqld.exe 、MySQLInstanceConfig.exe 、mysql.exe,常用配置文件my.ini;常用用户root作为管理员,默认数据库有4个:information_schema performance_schema mysql test ; 常用图形界面工具 sqlyog ;
Mysql数据库常用概念:实例、数据库、表、行、列、主键、外键、自增长、更新、查询、Sql语句、索引;
核心服务:Mysql服务(必须)
Mysql登录:
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命令:
创建表单
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试用版本占内存小,适合练习)
oracle数据库:商用收费的关系型数据库,默认端口1521;常用图形界面工具plsql ;
oracle数据库常用概念:实例 表空间 表 序列 sql 等;
核心服务: OracleOraDb11g_home1TNSListener 和 OracleServiceORCL (必须)
常用帐户 :管理员帐户sys/system(必须as sysdba登录) 普通用户scott
oracle登录如下:
Oracle数据库表、序列的创建:
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试用版占内存小,适合练习)
SqlServer是收费的关系型数据库,默认端口1433,其登录验证方式有两种:管理员sa帐号密码、本地计算机管理员帐号密码;
SqlServer常用概念:实例 sql T-sql 表
建议使用自带图形工具SQL Server Management Studio进行操作:
常用命令:
-- 使用数据库,无需再用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
三种关系型数据库比较:
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<? extends Object> findAllInfo(String sql, Object[] objArr,
JdbcMapper mapper) {
List<Object> list = new ArrayList<Object>();
// 初始化变量
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:
Redis简介:基于<key,value>结构,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
memcachde简介:基于<key-value>,不支持持久化,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
安装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指令:
mongoDB简介:文档型数据库(介于关系和非关系型之间),适用轻量级小文件存储,分布式,可持久化,高性能,高可用,自动分片,有用户和密码管理,默认端口号27017,重要相关概念:库 集合(即表,格式为key-value,value即文档) 文档(基于JSON格式)
命令举例,详细问度娘:
show dbs;(默认有admin和local)
use localdatabase;
show collections;
使用Java操作NoSql数据库相关见个人云盘yun.zyp168.cn,先简单纪录到这里,待后期补充!
数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建相关推荐
- redis常用命令及安全Redis集群环境搭建
2019独角兽企业重金招聘Python工程师标准>>> redis 安装 在centos 上很简单 yum install redis 即可完成redis的安装 安装redis cd ...
- Redis之Redis基础、环境搭建、主从切换
Redis基础.环境搭建.主从切换 一.Redis简介 1.引入NoSQL的背景 2.Redis简介 二.环境部署 1.server1源码安装redis,并创建redis实例 2.server2主机, ...
- 2W 字详解 Redis 集群环境搭建实践
点击上方 "终端研发部"关注, 星标或置顶一起成长 本文是Redis集群学习的实践总结(基于Redis 6.0+),详细介绍逐步搭建Redis集群环境的过程,并完成集群伸缩的实践. ...
- Redis集群环境搭建实践
本文是Redis集群学习的实践总结(基于Redis 6.0+),详细介绍逐步搭建Redis集群环境的过程,并完成集群伸缩的实践. Redis集群简介 Redis集群(Redis Cluster) 是R ...
- Django + mysql + 微信 抢票之本地环境搭建
Django + mysql + 微信 抢票之本地环境搭建 环境准备 1. Django安装 2. mysql安装 3. 微信环境配置 申请微信公众平台测试号 微信接入 环境准备 1. Django安 ...
- RN学习笔记01:概述、特点与环境搭建
RN学习笔记01:概述.特点与环境搭建 一.RN概述 React Native(简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 Reac ...
- 图数据库JanusGraph实战[6]: JanusGraph+HBase+ElasticSearch的环境搭建
图数据库JanusGraph实战[6]: JanusGraph+HBase+ElasticSearch的环境搭建 作者:胡佳辉(家辉) 日期:2019年01月14日 CSDN博客:https://b ...
- 数据库:MySQL、SqlServer、Oracle对比
一.MySQL 查看全文 http://www.taodudu.cc/news/show-891300.html 相关文章: 软件:分享9款实用电脑软件,值得看一看 Nginx:限流.缓存.黑白名单等 ...
- 常见NoSQL的对比及使用场景(Redis,memcached,mongodb)
转自:https://my.oschina.net/liyurong/blog/1921898 1. NoSQL NoSQL(Not Only SQL),泛指非关系型的数据库(mysql.oracle ...
最新文章
- 微信公众号H5订阅消息开发 uniapp订阅消息
- Python 之 matplotlib (十一) 3D
- Android开发关于网络的书记,Android开发需要了解的网络协议
- Sizeof与Strlen的区别与联系
- 学习笔记(五)——JavaScript(二)
- sql复制表定义及复制数据行
- 哪吒之魔童降世视听语言影评_豆瓣评分8.7,这个“新哪吒”不一般|《哪吒之魔童降世》影评...
- 加密用户向阿桑奇捐赠超40万美元的BTC用于法律辩护
- Java8中list转map方法总结
- 5.1 RNN 情感识别、tensorflow实现——python实战
- 零信任学习系列一——研读NIST零信任架构(正式版)
- Flash 0day漏洞(CVE-2018-5002)千万不要乱打开Excel文档!
- coolpad大神f2Android,酷派大神f2致命缺点和优点有什么【图文】
- [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush
- 基于JAVA3D的网络三维技术的设计与实现
- metaRTC(yangwebrtc)-中国人自己的webrtc
- 怎么从图片中提取文字?
- 用华秋DFM作为PCB Viewer
- 解决UITableView xib添加到Storyboard出现IB Designables错误
- cas之soo单点登录初步探究