mysql数据库杂谈,增、删、改、查、sql递归、导出xls、授权

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(*)


3、-------------------------------数据库去除重复记录,根据某个字段----------------------------------------



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');


16、

一张表更新到另外一张表

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 '%活禽%'

猜你喜欢

转载自blog.csdn.net/lq18050010830/article/details/78853670
今日推荐