您的位置:首页 > 数据库 > MySQL

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

2017-12-20 15:24 274 查看
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);

Co
4000
nnection 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 '%活禽%'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: