个人数据库基础笔记,将各类数据库从环境搭建到使用简单回忆整理,方便自己回顾知识点,也同大家分享下:
关系型数据库(一般基于Jdbc和Sql语法):Mysql 、Oracle 、SqlServer
非关系型数据库(基于
相关文件个人网盘下载地址 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
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 *
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简介:基于
常用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,先简单纪录到这里,待后期补充!