亚洲不卡AV影片在线播放,亚洲看片无码在线视频,久久久国产精品亚洲一区http://m.tkk7.com/Skynet/category/34931.htmlzh-cnThu, 26 Nov 2009 04:29:21 GMTThu, 26 Nov 2009 04:29:21 GMT60mysql 序列號生成器(轉)http://m.tkk7.com/Skynet/archive/2009/11/10/301847.html劉凱毅劉凱毅Tue, 10 Nov 2009 07:51:00 GMThttp://m.tkk7.com/Skynet/archive/2009/11/10/301847.htmlhttp://m.tkk7.com/Skynet/comments/301847.htmlhttp://m.tkk7.com/Skynet/archive/2009/11/10/301847.html#Feedback0http://m.tkk7.com/Skynet/comments/commentRss/301847.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/301847.html

      如果你不想使用mysql的自動遞增,但又想實現主鍵序列號的功能,可以使用下面的方法,通過函數用一張表去維護生成多個表的序列號,簡單又實用

1.創建生成多個表的序列號的數據維護表

CREATE TABLE seq (
  name varchar(20) NOT NULL,
  val int(10) UNSIGNED NOT NULL,
  PRIMARY KEY  (name)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8

2.插入幾條初始化數據

INSERT INTO seq VALUES('one',100);
INSERT INTO seq VALUES('two',1000);

3.創建函數以生成序列號

CREATE FUNCTION seq(seq_name char (20)) returns int
begin
 UPDATE seq SET val=last_insert_id(val+1) WHERE name=seq_name;
 RETURN last_insert_id();
end

4.測試

  1. mysql> SELECT seq('one'),seq('two'),seq('one'),seq('one');
  2. +------------+------------+------------+------------+
  3. | seq('one') | seq('two') | seq('one') | seq('one') |
  4. +------------+------------+------------+------------+
  5. |        102 |       1002 |        103 |        104 |
  6. +------------+------------+------------+------------+
  7. 1 row IN SET (0.00 sec)




劉凱毅 2009-11-10 15:51 發表評論
]]>
mysql數據定時導入腳本(shell)http://m.tkk7.com/Skynet/archive/2009/10/23/299458.html劉凱毅劉凱毅Fri, 23 Oct 2009 02:51:00 GMThttp://m.tkk7.com/Skynet/archive/2009/10/23/299458.htmlhttp://m.tkk7.com/Skynet/comments/299458.htmlhttp://m.tkk7.com/Skynet/archive/2009/10/23/299458.html#Feedback1http://m.tkk7.com/Skynet/comments/commentRss/299458.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/299458.html 在服務器上發現的定時的導入腳本,記錄下來。還是很有用的
30 06 * * * /data/dmsp/shell/crontab_search_stats_import.sh >> /data/dmsp/logs/crontab_search_stats_import.log
#!/bin/sh

y
=$(date -"-1 day" +%Y)
m
=$(date -"-1 day" +%m)
d
=$(date -"-1 day" +%d)

#/data/dmsp/ftp/dim_stats/2009/09/14

act
=dim_stats
mypath
=/data/dmsp/ftp/${act}/${y}/${m}/$1t35z3f/

echo $mypath
statpath
=${mypath}${act}${y}${m}$d5p1n5h.tar.bz2.state

for(( j=1; j<10000; j=j+1))
do
    
if [ -"${statpath}" ] ; then
              tar xjf ${mypath}${act}${y}${m}$p13zz55.tar.bz2 
-C ${mypath}
                mysql 
-127.0.0.1 -P3306 -u root -pmysql -"LOAD DATA INFILE '${mypath}part-00000' INTO TABLE dmsp.dmsp_veidoo character set utf8 FIELDS TERMINATED BY '\t' lines terminated by '\n'";
        
break    
    
else
        echo 
"[${j}:1000] not ready. sleep 10 seconds then retry."
        sleep 
10
    fi
don




劉凱毅 2009-10-23 10:51 發表評論
]]>
數據庫測試生成腳本 - infobright http://m.tkk7.com/Skynet/archive/2009/10/20/299016.html劉凱毅劉凱毅Tue, 20 Oct 2009 05:44:00 GMThttp://m.tkk7.com/Skynet/archive/2009/10/20/299016.htmlhttp://m.tkk7.com/Skynet/comments/299016.htmlhttp://m.tkk7.com/Skynet/archive/2009/10/20/299016.html#Feedback0http://m.tkk7.com/Skynet/comments/commentRss/299016.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/299016.html 我這 對測試 mysql infobright 壓縮 和 查詢速度 進行測試
測試結果我會盡快登出的
#!/usr/bin/python
import MySQLdb
#conn = MySQLdb.Connection('127.0.0.1', 'root', '', 'dmspi')
conn=MySQLdb.connect(host="127.0.0.1",port=3307,user="root",passwd="",db="test")
cur 
=  conn.cursor()
st 
= "create table testtime4 ( "

try :
        
for cc in xrange(1000):
                
if cc % 2 == 0 :
                        st 
+= 'a'+str(cc)+' varchar(20),\n'
                
else :
                        st 
+= 'a'+str(cc)+' int(20),\n'

        st 
+= 'a int(20)'
        st 
= st + ");"
        cur.execute(st)

       
# import sys
        # sys.exit(
1)
        
import random
        ccs 
= lambda : random.choice(['apple''pear''peach''orange''lemon',''])
        ccn 
= lambda : random.randint(0,10000)


        fd 
= open('/data/logs/dataFormat/test/t4.data','w')
        
for cc in xrange(10000000):
                st 
= ''
                ss 
= ccs()
                nn 
= str(ccn())
                
for cc in xrange(1000):
                        
if cc < 15 :
                                
if cc % 2 == 0 :
                                        st 
+= ss+'\t'
                                
else :
                                        st 
+= nn+'\t'
                        
else :
                                st 
+= '\t'
                st 
+= nn
                
print >>fd,st
        fd.close()

        # cur.execute(
'load data infile \'/data/logs/dataFormat/test/t4.data\'  into table testtime4 fields terminated by "\t";')
finally :
        cur.close()
        conn.close()


mysql infobright 測試結果報告:



一千萬條數據導入花費時間:

mysql
> load data infile '/data/logs/dataFormat/test/t4.data'  into table testtime4 fields terminated by "\t";
Query OK, 
10000000 rows affected (36 min 47.00 sec)


測試一 :
1. 表屬性 有 500 列 
2. 屬性列都有值, 無 Null 數據
3. 原始文件大小 26G ,導入數據倉庫 5G

部分測試時間:
select count(*from testtime where a0="pear" and a2="orange";
1 row in set (3.63 sec)

select a6,count(*from testtime group by a6 order by a6 desc ;
5 rows in set (2.24 sec)

mysql
> select count(*from testtime where a0="apple" ;
1 row in set (5.68 sec)


測試二 :
1. 表屬性 有 1000 列 
2. 屬性列前 15 列有值 , 其余后面都為 Null
3. 原始文件大小 10G ,導入數據倉庫 215M

mysql
> select a0,count(*from testtime4 group by a0 ;
+--------+----------+
| a0     | count(*|
+--------+----------+
| lemon  |  1665543 | 
| peach  |  1666276 | 
| orange |  1667740 | 
| pear   |  1665910 | 
| apple  |  1665678 | 
| NULL   |  1668863 | 
+--------+----------+
6 rows in set (4.55 sec)


select * from testtime4 order by a6 desc limit 2000000,1 ;
1 row in set (3.30 sec)




劉凱毅 2009-10-20 13:44 發表評論
]]>
mysql federated 表類型使用http://m.tkk7.com/Skynet/archive/2009/10/08/297442.html劉凱毅劉凱毅Thu, 08 Oct 2009 04:59:00 GMThttp://m.tkk7.com/Skynet/archive/2009/10/08/297442.htmlhttp://m.tkk7.com/Skynet/comments/297442.htmlhttp://m.tkk7.com/Skynet/archive/2009/10/08/297442.html#Feedback0http://m.tkk7.com/Skynet/comments/commentRss/297442.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/297442.html
參考:http://blog.chinaunix.net/u/29134/showart_485759.html
可以說本文關鍵就是他


mysql max 版本下載.
或者你這 心情好 編譯邊
參考 : ./configure  --prefix=/home/lky/tools/mysql2 --with-plugins=heap,innobase,myisam,ndbcluster,federated,blackhole   --enable-assembler --enable-static
然后 在 my.cnf 的
[mysqld]
federated  #加入


 mysql 參考:http://blog.chinaunix.net/u3/90603/showart_1925406.html


mysql> show engines;
+------------+----------+----------------------------------------------------------------+--------------+-----+------------+
| Engine     | Support  | Comment                                                        | Transactions | XA  | Savepoints |
+------------+----------+----------------------------------------------------------------+--------------+-----+------------+
| ndbcluster | DISABLED | Clustered, fault-tolerant, memory-based tables                 | YES          | NO  | NO         |
| FEDERATED  | YES      | Federated MySQL storage engine        | YES          | NO  | NO         |
| MRG_MYISAM | YES      | Collection of identical MyISAM tables                          | NO           | NO  | NO         |
| MyISAM     | DEFAULT  | Default engine as of MySQL 3.23 with great performance         | NO           | NO  | NO         |
| BLACKHOLE  | YES      | /dev/null storage engine (anything you write to it disappears) | NO           | NO  | NO         |
| InnoDB     | YES      | Supports transactions, row-level locking, and foreign keys     | YES          | YES | YES        |
| MEMORY     | YES      | Hash based, stored in memory, useful for temporary tables      | NO           | NO  | NO         |
| ARCHIVE    | YES      | Archive storage engine                                         | NO           | NO  | NO         |
+------------+----------+----------------------------------------------------------------+--------------+-----+------------+


http://topic.csdn.net/u/20071122/11/016C3D25-82A2-46DC-B8B0-3A22F8573C70.html


測試:
0. mysql_install_db 生成 測試 basedir
1. mysqld_safe  服務器開啟
2. mysql 測試

先郁悶句 在max 版本上 沒有 mysql_install_db !!,自己想辦法把 ,下個其他版本的 給 install database !
[client]
socket
=/home/lky/data/d2/mysql.sock
port
=3308

[mysqld]
port
=3308
datadir
=/home/lky/data/d2
socket
=/home/lky/data/d2/mysql.sock

user
=lky
# Default to using old password format for compatibility with mysql 
3.x
# clients (those using the mysqlclient10 compatibility package).
#old_passwords
=123

[mysqld_safe]
log-error
=/home/lky/data/d2/mysqld.log
pid-file
=/home/lky/data/d2/mysqld.pid


命令  
啟動 服務1 # 注意 my.cnf 的端口 和  datadir
cd /usr/local/mysql-max-5.1.5-alpha-linux-i686-glibc23
update user set host="%" where user='root' ;
./bin/mysqld_safe --defaults-file=/home/lky/data/d1/my.cnf 

啟動 服務2 # 注意 my.cnf 的端口 和  datadir
cd /usr/local/mysql-max-5.1.5-alpha-linux-i686-glibc23
./bin/mysqld_safe --defaults-file=/home/lky/data/d2/my.cnf 

運行1
./bin/mysql --defaults-file=/home/lky/data/d1/my.cnf
>create table t_tableC (id int not null auto_increment primary key, c_str char(20) not null)
>insert into t_tableC values(1,'cc');
運行2
./bin/mysql --defaults-file=/home/lky/data/d2/my.cnf
>create table t_tableC (id int not null auto_increment primary key, c_str char(20) not null)
  engine federated
  connection = 'mysql://lky@127.0.0.1:3307/test/t_tableC';
> select * from t_tableC ;
+----+-------+
| id | c_str |
+----+-------+
|  1 | cc    |
+----+-------+


最讓我喜歡的一個特性:
在 d2 上 (運行2)上本地的 表 可以和  federated 進行 表連
mysql> select * from t2 ;
+------+------+
| id   | vn   |
+------+------+
|    1 | cc   |
+------+------+
1 row in set (0.29 sec)

mysql
> show create table t2 ;
+-------+----------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                         |
+-------+----------------------------------------------------------------------------------------------------------------------+
| t2    | CREATE TABLE `t2` (
  `id` 
int(11default NULL,
  `vn` 
char(10default NULL
) ENGINE
=MyISAM DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql
> select * from t_tableC c,t2 t where c.id=c.id ;
+----+--------+------+------+
| id | c_str  | id   | vn   |
+----+--------+------+------+
|  1 | cc     |    1 | cc   |
|  2 | ccttcc |    1 | cc   |
+----+--------+------+------+
2 rows in set (0.00 sec)






 






劉凱毅 2009-10-08 12:59 發表評論
]]>
Berkeley DB python btreehttp://m.tkk7.com/Skynet/archive/2009/08/20/291917.html劉凱毅劉凱毅Thu, 20 Aug 2009 02:52:00 GMThttp://m.tkk7.com/Skynet/archive/2009/08/20/291917.htmlhttp://m.tkk7.com/Skynet/comments/291917.htmlhttp://m.tkk7.com/Skynet/archive/2009/08/20/291917.html#Feedback5http://m.tkk7.com/Skynet/comments/commentRss/291917.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/291917.html 當熟悉 hash db   python bsddb (db-key 轉)
使用確實很方便,但是沒有 想 關系數據庫中的 select order by 查詢 ,感覺比較郁悶! 上網 一頓 google ......

import bsddb
db 
= bsddb.btopen('/tmp/spam.db''c')
for i in range(10): db['%d'%i] = '%d'% (i*i)

db[
'3'# 9 
db.keys() # ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

db.set_location(
'6'# 36 
db.previous() # 25 
db.next() # 36
db.next() # 47


這可以定位,并且 previous , next 什么的 (不過目前好像是針對 string 自然 排序!)
這里比較實用的 demo
import bsddb
db 
= bsddb.btopen('/tmp/spam2.db''c')
db[
"2009-08-14 22:00"]="gg"
db[
"2009-08-15 22:00"]="cc"
db[
"2009-07-15 00:00"]="tt"
db[
"2009-08-16 22:00"]="gg"

# 注意 這 統配 等價 正則 = 2009-08-15.*  
#
 開始 以為能使用 正則 ,但不能 。只能簡單的 xxx.* 形式的
db.set_location('2009-08-15')   # ('2009-08-15 22:00', 'cc')
db.next() # ('2009-08-16 22:00', 'gg')

db.set_location(
'2009-08-15')   # ('2009-08-15 22:00', 'cc')
db.previous() #('2009-08-14 22:00', 'gg')











劉凱毅 2009-08-20 10:52 發表評論
]]>
mysql 日志(轉)http://m.tkk7.com/Skynet/archive/2009/07/19/287312.html劉凱毅劉凱毅Sun, 19 Jul 2009 02:50:00 GMThttp://m.tkk7.com/Skynet/archive/2009/07/19/287312.htmlhttp://m.tkk7.com/Skynet/comments/287312.htmlhttp://m.tkk7.com/Skynet/archive/2009/07/19/287312.html#Feedback0http://m.tkk7.com/Skynet/comments/commentRss/287312.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/287312.html

這特殊關注下,開啟慢查詢。在web開發中很有幫助

MYSQL啟用日志,和查看日志

時間:2009-01-21 17:33:57  來源:http://wasabi.javaeye.com/blog/318962  作者:kenbli
mysql有以下幾種日志:  
   錯誤日志:     -log-err  
   查詢日志:     -log  
   慢查詢日志:   -log-slow-queries  
   更新日志:     -log-update  
   二進制日志: -log-bin  


是否啟用了日志 
mysql>show variables like 'log_%'; 

怎樣知道當前的日志 
mysql> show master status; 

顯示二進制日志數目 
mysql> show master logs; 

看二進制日志文件用mysqlbinlog 
shell>mysqlbinlog mail-bin.000001 
或者shell>mysqlbinlog mail-bin.000001 | tail 

在配置文件中指定log的輸出位置. 
Windows:Windows 的配置文件為 my.ini,一般在 MySQL 的安裝目錄下或者 c:\Windows 下。 
Linux:Linux 的配置文件為 my.cnf ,一般在 /etc 下。 

在linux下: 
Sql代碼
  1. # 在[mysqld] 中輸入   
  2. #log   
  3. log-error=/usr/local/mysql/log/error.log   
  4. log=/usr/local/mysql/log/mysql.log   
  5. long_query_time=2   
  6. log-slow-queries= /usr/local/mysql/log/slowquery.log  


windows下: 
Sql代碼
  1. # 在[mysqld] 中輸入   
  2. #log   
  3. log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"  
  4. log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"  
  5. long_query_time=2   
  6. log-slow-queries= "E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"  


開啟慢查詢 
long_query_time =2  --是指執行超過多久的sql會被log下來,這里是2秒 
log-slow-queries= /usr/local/mysql/log/slowquery.log  --將查詢返回較慢的語句進行記錄 

log-queries-not-using-indexes = nouseindex.log  --就是字面意思,log下來沒有使用索引的query 

log=mylog.log  --對所有執行語句進行記錄


劉凱毅 2009-07-19 10:50 發表評論
]]>
mysql 主從 配置(windows xp 開二個 mysql 測試)http://m.tkk7.com/Skynet/archive/2009/07/18/287267.html劉凱毅劉凱毅Sat, 18 Jul 2009 11:03:00 GMThttp://m.tkk7.com/Skynet/archive/2009/07/18/287267.htmlhttp://m.tkk7.com/Skynet/comments/287267.htmlhttp://m.tkk7.com/Skynet/archive/2009/07/18/287267.html#Feedback2http://m.tkk7.com/Skynet/comments/commentRss/287267.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/287267.html
環境 :
  個人 pc  xp 一臺 ;

使用 : 
     官方下載: mysql-noinstall-5.1.36-win32.zip
      

1. 解壓 成2個 (文件夾)
     mysql-5.1.36-win32_1  (主)
     mysql-5.1.36-win32_2   (從) 

2. 配置文件修改
    主服務器配置修改
         >mysql-5.1.36-win32_1/my-small.ini  修改名稱為   my.ini  
         >修改剛才 my.ini 文件的 
   [client]
   port  = 3307

[mysqld]
server-id    
= 1
port        
= 3307
binlog-do-db    
=test 
   binlog-ignore-db=backup
   log-bin=mysql-bin
        >啟動 mysql-5.1.36-win32_1/bin/mysqld.exe  --defaults-file=..youpath .my-small.ini 
        >使用 主 mysql  -u root  創建同步角色
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* 
TO backup@'127.0.0.1'
IDENTIFIED 
BY '1234';
        >并且運行 
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin
.000001 |      106 | test         | backup           |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


   從服務器配置:
        >mysql-5.1.36-win32_2/my-small.ini  修改名稱為   my.ini  
        >修改剛才 my.ini 文件的 
       
[client]
#password    
= your_password
port        
= 3308
socket        
= /tmp/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
server-id    
= 2
master-host    
= 127.0.0.1
master-user    
= backup
master-password    
= 1234
master-port    
= 3307

port        
= 3308

>啟動 mysql-5.1.36-win32_2/bin/mysqld.exe ( 我這會有個警告,沒事 )
>參考 主服務器運行的  show master status; 數據
slave stop; 
CHANGE MASTER 
TO MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=106
slave start; 


然后 :
在主mysql服務器
use test
create table tt (ii int); 


然后在從mysql服務器
use test
show tables;
mysql> show tables ;
+----------------+
| Tables_in_test |
+----------------+
| tt             |
+----------------+
1 row in set (0.00 sec)










 

劉凱毅 2009-07-18 19:03 發表評論
]]>
oracle 筆記http://m.tkk7.com/Skynet/archive/2008/10/22/235854.html劉凱毅劉凱毅Wed, 22 Oct 2008 01:43:00 GMThttp://m.tkk7.com/Skynet/archive/2008/10/22/235854.htmlhttp://m.tkk7.com/Skynet/comments/235854.htmlhttp://m.tkk7.com/Skynet/archive/2008/10/22/235854.html#Feedback0http://m.tkk7.com/Skynet/comments/commentRss/235854.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/235854.html/* 可用系統表,得到元數據 */
user_tables
all_tab_columns
   ->constraint_type
     'U':唯一;'P':主鍵;'R':外鍵;
   ->constraint_name
user_indexes 
all_constraints



查看表結構 desc



劉凱毅 2008-10-22 09:43 發表評論
]]>
sql 語句筆記http://m.tkk7.com/Skynet/archive/2008/10/21/235792.html劉凱毅劉凱毅Tue, 21 Oct 2008 14:05:00 GMThttp://m.tkk7.com/Skynet/archive/2008/10/21/235792.htmlhttp://m.tkk7.com/Skynet/comments/235792.htmlhttp://m.tkk7.com/Skynet/archive/2008/10/21/235792.html#Feedback2http://m.tkk7.com/Skynet/comments/commentRss/235792.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/235792.html dic_flow   (id,status_id,status_name)
post_status(id,pre_status_id,post_status_id)
關系: dic_flow.status_id-(1.1)>post_status.pre_status_id,post_status_id
要結果: pre_status_id,pre_status_name,post_status_id,post_status_name


create table  dic_flow(id int,status_id int , status_name varchar(20));
create table  post_status(id int ,pre_status_id int ,post_status_id int);
insert into dic_flow values(1,1,'google');
insert into dic_flow values(2,3,'baidu');
insert into dic_flow values(3,8,'yahoo');
insert into post_status values(1,8,3);

select
    tp.pre_status_id 
as pre_status_id,
    ( 
select td.status_name from dic_flow  td where td.status_id=tp.pre_status_id) as pre_status_name ,
    tp.post_status_id 
as post_status_id,
    ( 
select td.status_name from dic_flow  td where td.status_id=tp.post_status_id) as post_status_name
from post_status tp;

+---------------+-----------------+----------------+------------------+
| pre_status_id | pre_status_name | post_status_id | post_status_name |
+---------------+-----------------+----------------+------------------+
|             8 | yahoo           |              3 | baidu            |
+---------------+-----------------+----------------+------------------+
1 row in set (0.00 sec)
Skynet(309290723) 21:11:57
子查詢(性能優化版)
select
  tp.pre_status_id 
as pre_status_id,
  td1.status_name 
as pre_status_name ,
  tp.post_status_id 
as post_status_id,
  td2.status_name 
as post_status_name
from post_status tp , dic_flow td1 , dic_flow td2
where tp.pre_status_id=td1.status_id and tp.post_status_id=td2.status_id ;
Skynet(309290723) 21:12:08
+---------------+-----------------+----------------+------------------+
| pre_status_id | pre_status_name | post_status_id | post_status_name |
+---------------+-----------------+----------------+------------------+
|             8 | yahoo           |              3 | baidu            |
+---------------+-----------------+----------------+------------------+
Skynet(309290723) 21:16:35
再嘮叨句
左連(性能再優化版)
select
  tp.pre_status_id 
as pre_status_id,
  td1.status_name 
as pre_status_name ,
  tp.post_status_id 
as post_status_id,
  td2.status_name 
as post_status_name
from post_status tp
 
left join dic_flow td1 on tp.pre_status_id=td1.status_id
 
left join dic_flow td2 on tp.post_status_id=td2.status_id  ;



劉凱毅 2008-10-21 22:05 發表評論
]]>
mysql 權限http://m.tkk7.com/Skynet/archive/2008/10/01/232017.html劉凱毅劉凱毅Wed, 01 Oct 2008 10:24:00 GMThttp://m.tkk7.com/Skynet/archive/2008/10/01/232017.htmlhttp://m.tkk7.com/Skynet/comments/232017.htmlhttp://m.tkk7.com/Skynet/archive/2008/10/01/232017.html#Feedback0http://m.tkk7.com/Skynet/comments/commentRss/232017.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/232017.html

MySQL 存取控制包含2個階段:

  • 階段1:服務器檢查是否允許你連接。
  • 階段2:假定你能連接,服務器檢查你發出的每個請求。看你是否有足夠的權限實施它。例如,如果你從數據庫表中選擇(select)行或從數據庫刪除表,服務器確定你對表有SELECT權限或對數據庫有DROP權限。
參考 : 5.8. MySQL用戶賬戶管理

1.權限查看
mysql> show grants for 'root'@'localhost' ;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
1 row in set (0.06 sec)

2.權限設置
5.8.2. 向MySQL增加新用戶賬戶
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    
->     IDENTIFIED BY 'some_pass';

mysql
> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    
->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
   其中兩個賬戶有相同的用戶名monty和密碼some_pass。兩個賬戶均為超級用戶賬戶,具有完全的權限可以做任何事情。一個賬戶 ('monty'@'localhost')只用于從本機連接時。另一個賬戶('monty'@'%')可用于從其它主機連接。


mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
該賬戶只用于從本機連接。授予了RELOAD和PROCESS管理權限。這些權限允許admin用戶執行mysqladmin reloadmysqladmin refreshmysqladmin flush-xxx命令,以及mysqladmin processlist。未授予訪問數據庫的權限。你可以通過GRANT語句添加此類權限。

mysql
> GRANT USAGE ON *.* TO 'dummy'@'localhost';
    一個賬戶有用戶名dummy,沒有密碼。該賬戶只用于從本機連接。未授予權限。通過GRANT語句中的USAGE權限,你可以創建賬戶而不授予任何權限。它可以將所有全局權限設為'N'。假定你將在以后將具體權限授予該賬戶。

下面的例子創建3個賬戶,允許它們訪問專用數據庫。每個賬戶的用戶名為custom,密碼為obscure。

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    
->     ON bankaccount.*
    
->     TO 'custom'@'localhost'
    
->     IDENTIFIED BY 'obscure';

mysql
> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    
->     ON expenses.*
    
->     TO 'custom'@'whitehouse.gov'
    
->     IDENTIFIED BY 'obscure';

mysql
> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    
->     ON customer.*
    
->     TO 'custom'@'server.domain'
    
->     IDENTIFIED BY 'obscure';

這3個賬戶可以用于:

·         第1個賬戶可以訪問bankaccount數據庫,但只能從本機訪問。

·         第2個賬戶可以訪問expenses數據庫,但只能從主機whitehouse.gov訪問。

·         第3個賬戶可以訪問customer數據庫,但只能從主機server.domain訪問。

要想不用GRANT設置custom賬戶,使用INSERT語句直接修改 授權表:

5.8.3. 從MySQL刪除用戶賬戶

DROP USER user;







劉凱毅 2008-10-01 18:24 發表評論
]]>
mysql 數據庫學習(觸發器)http://m.tkk7.com/Skynet/archive/2008/10/01/232014.html劉凱毅劉凱毅Wed, 01 Oct 2008 10:13:00 GMThttp://m.tkk7.com/Skynet/archive/2008/10/01/232014.htmlhttp://m.tkk7.com/Skynet/comments/232014.htmlhttp://m.tkk7.com/Skynet/archive/2008/10/01/232014.html#Feedback0http://m.tkk7.com/Skynet/comments/commentRss/232014.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/232014.html 引用:21. 觸發程序

create table a (sa int);
create table b (sb int);
drop trigger  a_bi ;

delimiter 
//
create trigger a_bi
before 
insert on a
for each row Begin
  
insert into b values(new.sa*100);
end;//
delimiter ;

insert into a values(1);

select * from b ;> 100


劉凱毅 2008-10-01 18:13 發表評論
]]>
mysql - 行列轉換 查詢http://m.tkk7.com/Skynet/archive/2008/10/01/232011.html劉凱毅劉凱毅Wed, 01 Oct 2008 09:22:00 GMThttp://m.tkk7.com/Skynet/archive/2008/10/01/232011.htmlhttp://m.tkk7.com/Skynet/comments/232011.htmlhttp://m.tkk7.com/Skynet/archive/2008/10/01/232011.html#Feedback0http://m.tkk7.com/Skynet/comments/commentRss/232011.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/232011.html在線文檔參考

jdbc url: 詳細屬性可參考

Eg: jdbc:mysql://localhost:3306/test?user =root&password=&useUnicode=true&characterEncoding=utf8

mysql URL: mysql -uroot -p --default-character-set=utf8


協調 SQL 詳細:

  這就重點說下:SHOW

  1. 查看全部庫支持字符 如:'gb%'  -gbk,gb2312

      SHOW CHARACTER SET LIKE '%' ;

  2. 查看列

  show columns from user from mysql ;
  show columns from mysql.user ;
  desc mysql.user ;
  //簡化
  //更方便的 查看 列名 模糊查詢列名為 'Select%' (desc  information_schema.columns 還有更多驚喜)

  select column_name from information_schema.columns where column_name like 'Select%' ;

  3. 查看數據庫,表結構;當然你們也可以仿照下此再建自己的庫,表

   show
   show create database information_schema"G
   show create table mysql.user"G

  4.權限查看

   SHOW GRANTS FOR 'root'@'localhost';

  .....(詳細參考


SQL 詳細

這就上寫自己一些有感覺的sql :參考

1.只查詢重復 Eg:

create   table  c (id  int  );
insert   into  c  values  ( 1 ),( 2 ),( 3 ),( 4 ),( 3 ),( 5 ),( 6 ),( 1 );
結果:
    
select  id  from  c  group   by  id  having   count (id) > 1  ;

2.報表查詢橫向輸出 Eg:

Create table d(id int,name varchar(50));
insert into d values(1,'gly');
insert into d values(2,'ptgly');
insert into d values(3,'ybgly');
insert into d values(4,'ptgly');
insert into d values(5,'ybgly');
+---+-----+------+
|gly |ptgly|ybgly|     
+---+-----+------+-
 |1   |2     |2      |
+---+-----+------+

select  
    
sum ( case   when  name = ' gly '   then   1   else   0   end  )  as  gly  ,
    
sum ( case   when  name = ' ptgly '   then   1   else   0   end  )  as  ptgly  ,
    
sum ( case   when  name = ' ybgly '   then   1   else   0   end  )  as  ybgly  
from  d ;

3.復雜組合查詢

create table table_a (No int, No2 int,num double,itime date);
insert into table_a values
     (1234,567890,33.5,'2004-12-21'),
     (1234,598701,44.8,'2004-11-21'),
     (1234,598701,45.2,'2004-10-01'),
     (1234,567890,66.5,'2004-9-21'),
     (3456,789065,22.5,'2004-10-01'),
     (3456,789065,77.5,'2004-10-27'),
     (3456,678901,48.5,'2004-12-21');
按月統計銷售表中貨物的銷售量數
查詢結果如下:
  No, No2 ,   九月,  十月,十一月,十二月
1234,567890, 66.5 ,  0 ,  0  ,  33.5
1234,598701,  0   , 45.2, 44.8, 0
3456,789065, 0  ,  100,  0  ,  0
3456,678901, 0 ,    0,    0  ,  48.5
-----------------------------------------------------------------------

//當然也可以 使用mysql 時間函數 在軟件編輯時 你可以輸入 String[] 并根據數據動態拼寫 sql( case部分!! )
//這個 例子很好 哦!報表可以一句sql 得出!

select  NO,NO2,
    
sum ( case    when  itime  like   ' 2004-%9% '   then  num  else   0   end as  9M,
    
sum ( case    when  itime  like   ' 2004-10% '   then  num  else   0   end as  10M,
    
sum ( case    when  itime  like   ' 2004-11% '   then  num  else   0   end as  11M,
    
sum ( case    when  itime  like   ' 2004-12% '   then  num  else   0   end as  12M
from  table_a  group   by  no,no2  order   by  no,no2 ;


4.字符集子層關系
1     a
2     b
11    c
(代碼11表示為1的下級)
我要通過一條句子,得出如下結果:
Create table TabTest(t_Code varchar(10),t_Name varchar(10));
insert into TabTest values('1','a');
insert into TabTest values('2','b');
insert into TabTest values('11','c');
--------------------------------------------------------------

select  tt1.t_Code,tt1.t_name,( 
     
case  
             
when   exists  ( select   1   from  tabtest tt2 
                                       
where  tt2.t_code  like  CONCAT(tt1.t_code, ' % ' and  
                                        tt2.t_code 
<>  tt1.t_code )   then   ' you '  
             
else   ' wu '
      
end  )  as  you_wu
from  tabtest  tt1 ;


劉凱毅 2008-10-01 17:22 發表評論
]]>
mysql 樹形結構查詢(存儲過程)http://m.tkk7.com/Skynet/archive/2008/10/01/232010.html劉凱毅劉凱毅Wed, 01 Oct 2008 09:19:00 GMThttp://m.tkk7.com/Skynet/archive/2008/10/01/232010.htmlhttp://m.tkk7.com/Skynet/comments/232010.htmlhttp://m.tkk7.com/Skynet/archive/2008/10/01/232010.html#Feedback0http://m.tkk7.com/Skynet/comments/commentRss/232010.htmlhttp://m.tkk7.com/Skynet/services/trackbacks/232010.html就用數據數據庫表地址數據(中國地區) 來說吧(用Windows 請使用 gbk !!)

可直接運行(去除注解)

存儲過程:

DELIMITER //
drop procedure if exists  findLChild//
/* iid 遞歸父節點 , layer 允許遞歸深度 */

CREATE PROCEDURE findLChild(iid bigint(20),layer bigint(20))
 
BEGIN
   
/*創建接受查詢的臨時表 */
    
create temporary  table if not exists tmp_table(id bigint(20),name varchar(50)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
/*最高允許遞歸數*/
   
SET @@max_sp_recursion_depth = 99 ;
    call iterative(iid,layer);
/*核心數據收集*/
   
select * from tmp_table ;/* 展現 */
    
drop temporary  table if  exists  tmp_table ;/*刪除臨時表*/
  
END;//
DELIMITER ;

DELIMITER 
//
drop procedure if exists  iterative //
CREATE PROCEDURE iterative(iid bigint(20),layer bigint(20))
    
BEGIN
         
declare tid bigint(20default -1 ;
         
declare tname varchar(50character set utf8;

         
/* 游標定義 */
         
declare cur1 CURSOR FOR select id,name from location where fid=iid ;
         
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tid = null;
      
      
/* 允許遞歸深度 */
      
if layer>0 then
         
OPEN cur1 ;
         
FETCH cur1 INTO tid,tname ;
           
WHILE ( tid is not null ) 
             DO
              
/* 核心數據收集 */
           
insert into tmp_table values(tid,tname);
              call iterative(tid,layer
-1);
              
FETCH cur1 INTO tid,tname ;
           
END WHILE;
       
end if;
    
END;//
DELIMITER ;

//運行!!

mysql> call findLChild(1,1);
+------+------------------+
| id   | name             |
+------+------------------+
|    2 | 北京             |
|    4 | 上海             |
|    6 | 香港特別行政區   |
|    8 | 澳門特別行政區   |
|   10 | 河北             |
|   23 | 山西             |
|   35 | 遼寧             |
|   50 | 吉林             |
|   60 | 黑龍江           |
|   74 | 江蘇             |
|   88 | 浙江             |
|  101 | 安徽             |
|  119 | 福建             |
|  129 | 江西             |
|  142 | 山東             |
|  160 | 河南             |
|  179 | 湖北             |
|  198 | 湖南             |
|  213 | 廣東             |
|  235 | 甘肅             |
|  250 | 四川             |
|  272 | 貴州             |
|  282 | 海南             |
|  301 | 云南             |
|  318 | 青海             |
|  327 | 陜西             |
|  348 | 廣西壯族自治區   |
|  363 | 西藏自治區       |
|  371 | 寧夏回族自治區   |
|  377 | 新疆維吾爾自治區 |
|  400 | 內蒙古自治區     |
|  413 | 臺灣省           |
+------+------------------+
32 rows in set (0.02 sec)






劉凱毅 2008-10-01 17:19 發表評論
]]>
主站蜘蛛池模板: 婷婷精品国产亚洲AV麻豆不片| 高清免费久久午夜精品| 老司机亚洲精品影视www| 国内精品免费麻豆网站91麻豆| 无码日韩人妻AV一区免费l| 亚洲av无码片在线观看| 亚洲国产成人精品不卡青青草原| 又粗又大又长又爽免费视频 | 亚洲天天做日日做天天看| 四虎亚洲国产成人久久精品| 免费一看一级毛片| **俄罗斯毛片免费| 秋霞人成在线观看免费视频| 人妻18毛片a级毛片免费看| 亚洲精品成a人在线观看夫| 亚洲依依成人精品| 亚洲精品**中文毛片| 亚洲AV第一页国产精品| 亚洲色爱图小说专区| 亚洲国产综合精品一区在线播放| 国产精品酒店视频免费看| 免费无码又爽又刺激毛片| 女人被弄到高潮的免费视频| 可以免费看黄的网站| 久久精品国产免费观看| 中文字幕在线免费| 99re在线精品视频免费| 日韩在线永久免费播放| 久久黄色免费网站| 久久久久免费看黄a级试看| 在线看片免费人成视频福利| 国产黄在线播放免费观看| 一级毛片一级毛片免费毛片| 黄色大片免费网站| xxxxx做受大片视频免费| 一个人看的www视频免费在线观看| 无遮挡免费一区二区三区| 久久久久久噜噜精品免费直播| 黄色视频在线免费观看| 免费久久人人爽人人爽av| 99蜜桃在线观看免费视频网站|