mysql数据库常用操作
这篇文章写得比较杂,主要是楼主这几年做后台开发,断断续续添加进去的,有一些很简单的操作也有部分比较难的
1、---------数据库导出Exec表格 ----------
select * into outfile './device.xls' from tlba.terminal_device where 1 order by id desc limit 0, 1000;
select * into outfile './dict.xls' CHARACTER SET gbk from
xmsa_wx_trace.sys_dict where 1 order by type desc limit 0, 1000;
生成文件路径mysql的文件存储路径
D:\ProgramData\MySQL\MySQL Server 5.7\data
2、--------------------------------分类统计查询各个类别的数量 ----------------------------------------
select count(*),CATEGORYID,categoryname from tlb.person_customer_view group by CATEGORYID,categoryname having count(*)
SELECT * FROM dep_rel_goods_view AS A
WHERE drgid = (SELECT MAX(drgid) FROM dep_rel_goods_view WHERE id = A.id)
4 、--------------------------------JDBC连接数据库 ----------------------------------------
package com.xmbestone.qss.system;
import java.sql.*;
public class DBConn {
public static Connection getConnection() throws SQLException,java.lang.ClassNotFoundException {
String driver = "com.mysql.jdbc.Driver"; //驱动名字
String dbName = "stc"; //数据库名字
String passwrod = "root"; //数据库登录用户名
String userName = "root"; //数据库登录密码
String url = "jdbc:mysql://localhost:3306/" + dbName;
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, userName, passwrod);
return conn;
}
public static void main(String[] args) {
try {
Connection conn = getConnection(); //创建连接
String sql = "select * from student";
PreparedStatement ps = conn.prepareStatement(sql); //声明状态
ResultSet rs = ps.executeQuery(); //记录集合
while (rs.next()) {
System.out.println("id : " + rs.getInt(1) + " name : " + rs.getString(2) + " password : " +rs.getString(3));
}
// 关闭记录集
if (rs != null) {
try {
rs.close();
}catch (SQLException e) { e.printStackTrace(); }
}
// 关闭声明
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 关闭链接对象
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
5、--------------------------------多表关联查一条数据----------------------------------------
select t1.*,t2.* from
(SELECT a.* FROM tlb.shop_outer_ad_view a,tlb.customer_visit_image b
where a.subid=b.SUBID ) as t1,
(SELECT b.*,c.FILE FROM tlb.shop_outer_ad_view a,tlb.customer_visit_image b,tlb.customer_visit_image_detail c
where b.id=c.CVOIMGID and a.subid=b.SUBID limit 5,10) as t2 where
t1.subid = t2.subid
6、---------数据库授权语句 ----------
1.复制权限
grant replication slave on *.* to 'slave'@'192.168.1.%' identified by '123456';
2访问权限
grant all on *.* to 'root'@'192.168.0.%' identified by 'root';
3、增 删 改 查权限
grant select ,insert ,update,delete on *.* to 'root'@'192.168.0.%' identified by 'root';
7、----------查询该ID值的数量----------
public long findCountBycustomerId(int customerId){
String hql = "select count(g) from PersonRelCustomer g where g.customerId=?";
long count=countHqlResult(hql, customerId);
return count;
}
8、----------SQL语句并查询----------
CREATE VIEW `person_inform_view` AS
select ird.INFORMID as INFOID,p.ID as PRSNID
from PERSON as p,inform_rel_department as ird
where p.DEPTID=ird.DEPARTMENTID
union
select irp.INFOID,irp.PRSNID
from inform_rel_person as irp
union
select irr.INFOID,srrp.PERSONID as PRSNID
from inform_rel_role as irr,system_role_rel_person as srrp
where irr.ROLEID=srrp.ROLEID
9、---------------------------------- SQL语句时间查询--------------------------------------
String hql = "from CustomerVisitView cvsrpv where cvsrpv.personId="+personId+" and cvsrpv.visitDate='"+date+"'";
10、--------------------------------- SQL语句查询表视图的个数--------------------------------------
SELECT count(*) TABLES, table_schema FROM information_schema.TABLES where table_schema = 'qss' GROUP BY table_schema;
11、---------------------------------- mysql远程访问数据库,对访问进行授权-----------------------------
grant all privileges on *.* to 'root' @'124.72.77.155' identified by 'bestone2014' with grant option;
12、--------------------------------- sql语句递归------------------------------
代码一
drop PROCEDURE IF EXISTS createChildLst;
delimiter //
CREATE PROCEDURE createChildLst (IN rootId INT,IN nDepth INT)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE b INT;
DECLARE cur1 CURSOR FOR SELECT id FROM goods_classify where parentid=rootId;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
insert into tmpLst values (null,rootId,nDepth);
SET @@max_sp_recursion_depth = 10;
OPEN cur1;
FETCH cur1 INTO b;
WHILE done=0 DO
CALL createChildLst(b,0);
FETCH cur1 INTO b;
END WHILE;
CLOSE cur1;
END;
代码二
drop PROCEDURE IF EXISTS showChildLst;
delimiter //
CREATE PROCEDURE showChildLst (IN rootId INT)
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS tmpLst
(sno int primary key auto_increment,id int,depth int);
DELETE FROM tmpLst;
CALL createChildLst(rootId,0);
select
goods_classify.ID, goods_classify.NAME
from
tmpLst,
goods_classify
where
tmpLst.id = goods_classify.id
order by tmpLst.sno;
END;
代码三
use qss;
SET SQL_SAFE_UPDATES = 0;
call showChildLst(7);
13、-------------------------------------数据库转移表格方法---------------------------------------------------------
USE qss;
INSERT INTO tlb.customer_classify select* FROM customer_classify1;
14、------------------------------------数据库like拼接语句,字符串拼接----------------------------------------
select * from goods where ORDERCODE like (select CONCAT(ORDERCODE,'%') from goods_classify where id=30);
15、------------------------------------数据库in语句关联查询----------------------------------------
SELECT count(*) FROM tlb.customer_rel_dep where DEPTID=10176 and CUSTOMERID in
(SELECT CUSTOprivate void getTree(){
List<String> list1 = new ArrayList();//所有
list1.add("1");
list1.add("10");
list1.add("1010");
list1.add("1011");
list1.add("101010");
list1.add("10101011");
list1.add("11");
list1.add("1110");
list1.add("1111");
List<String> list2 = new ArrayList();//条件集
//list2.add("1010");
list2.add("1011");
list2.add("1111");
list2.add("10101011");
List<String> list3 = new ArrayList();//结果集
//拿孩子
for(int i=0;i<list2.size();i++){
for(int j=0;j<list1.size();j++){
int a = list2.get(i).length();
if(a<list1.get(j).length()||a==list1.get(j).length()){
if(list1.get(j).substring(0,a).equals(list2.get(i))){
list3.add(list1.get(j));
}
}
}
}
//拿父亲
for(int i=0;i<list2.size();i++){
for(int j=0;j<list1.size();j++){
int a = list2.get(i).length();
for(int k=1;k<(a/2);k++){
if((list1.get(j).length()==2*k)&&(list1.get(j).equals(list2.get(i).substring(0,2*k)))){
//去重复
int b = 0;
for(int f=0;f<list3.size();f++){
if(list1.get(j).equals(list3.get(f))){
b = 1;
break;
}
}
if(b==0){
list3.add(list1.get(j));
}
}
}
}
}
list3.add("1");
for(int h=0;h<list3.size();h++){
System.out.println(list3.get(h));
}
}MERID FROM tlb.customer_rel_category where CATEGORYID='1');
一张表更新到另外一张表
update xmsa_trace.business as a ,xmsa_trace.area_market_rel_business as
b set a.address = CONCAT(a.marketName,b.twnumernotes) where a.id = b.businessId
根据另外一张表的条件更新当前表数据
update xmsa_trace.area_market_rel_business as a ,xmsa_trace.business as b set a.twtype = "家禽",a.dictId =46
where a.businessId = b.id and b.name like '%活禽%'