��������  ����Linux

mysql-logo.png (3082 bytes)MySQL���IJο��ֲ�

���룺����(yanzi)       ��ҳ��http://aosp.me


��һ��, ǰһ��, ��һ��, ���һ����Ŀ¼.


21 �����Ա�MySQL���������ݿ�

21.1 �����Ա�MySQL��mSQL

��һ����MySQL�����߱�д�����Ӧ�����ǵ��Ķ���������û��������˵����ʵ����

��������֧�ֵ����ơ����������͵�һ���б�����crash-me��ҳ��

����
�����ٶȵ���ʵ�Ƚϣ���̲��ϳ����MySQL��׼�׼�����10.8 ʹ�����Լ��Ļ�׼����Ϊû���̴߳���������һ����С���﷨�����������ٹ��ܺͼ򵥵İ�ȫ�ԣ�mSQLӦ�������з������Щ��
  • ִ���ظ������ӺͶϿ��IJ��ԣ���ÿ�������ڼ�����һ���dz��򵥵IJ�ѯ��
  • �к��ٵ��кͼ��IJ���ܼ򵥵ı���INSERT������
  • CREATE TABLE��DROP TABLE��
  • �ڲ���һ��������һЩ������SELECT����һ����ɨ���Ǻ����׵ġ���

��Ϊ��Щ��������˼򵥣������и��ߵ���������ʱ����������Щ�����ø��á������ӱ������Ժ�MySQLӦ�����ܺ�һЩ������һ���棬MySQL��mSQL���Լ������������SQLʵ��)�����з������Щ��

  • ���ӵ�SELECT������
  • �����ϴ�Ľ��(MySQL��һ�����á����첢�Ҹ���ȫ��Э��)��
  • �б䳤�ַ����ı�����ΪMySQL�и���Ч�IJ�����VARCHAR����������
  • �кܶ��еı��Ĵ�����
  • �ɳ���¼�ı��Ĵ�����
  • �кܶ��������ʽ��SELECT��
  • �ڴ���ϵ�SELECT��
  • ͬʱ�����ܶ����ӡ�MySQL�������ȫ���̻߳��ģ�ÿ�����������Լ����̣߳�����ζ��û���̱߳���ȴ���һ���߳�(����һ���߳������޸�һ�ű���������߳���Ҫ��ȡ)��mSQL�У�һ��һ�����ӱ������ˣ����������̱߳���ȵ���һ���߳���ɣ����������������еIJ�ѯ�Ƕ̵Ļ��dz��ġ�����һ��������ֹʱ����һ�����ܹ���������ʱ���������߳��ٴεȴ����ȵȡ�
  • ���ᡣ�����ı�һ��SELECT�еı���˳��mSQL���ܱ���쳣�������ڻ�׼�׼��У���MySQLҪ������15000����ʱ�䡣��������mSQLȱ��һ�������Ż����Ա�����ѵ�˳���Ŷ�����Ȼ���������ѱ�����ȫ��ȷ��˳�����mSQL2�в���WHERE�Ǻܼ򵥵IJ�ʹ�������У����Ὣ��Կ�Щ����10.8 ʹ�����Լ��Ļ�׼��
  • ORDER BY��GROUP BY��
  • DISTINCT��
  • ʹ��TEXT��BLOB�С�
SQL����
  • GROUP BY��HAVING��mSQL������֧��GROUP BY��MySQL֧��һ��������HAVING�����к����� COUNT()��AVG()��MIN()��MAX()��SUM()��STD()��������GROUP BY�����SELECT��һ�ű��м�����û�������б���������û��WHERE�Ӿ䣬COUNT(*)���Ż��Ժܿ�ط��ء� MIN()��MAX()����ȡ�ַ���������
  • �������INSERT��UPDATE��MySQL����һ��INSERT��UPDATE�������㡣���磺
    mysql> UPDATE SET x=x*10+y WHERE x<20;
    
  • ������MySQL���еı�����
  • ������������MySQL�У����һ�����������ڲ�ѯ�ı�֮��Ψһ�ģ��㲻����ʹ�������� �ϸ��ߡ�
  • ��������SELECT��MySQL�кܶຯ��(̫�಻���������г�����7.4 ����SELECT��WHERE�Ӿ��еĺ���)��
���̿ռ�Ч��
��������ʹ��ı��ж�С��MySQL�кܾ�ȷ�����ͣ��������Դ���ռ�ݺ�С�ռ�ı���һ�����õ�MySQL�������͵�������MEDIUMINT������3���ֽڳ����������100,000,000����¼��ÿ����¼��ʡ����һ���ֽ�Ҳ�Ǻ���Ҫ�ġ�mSQL2��һ�������޵������ͼ��ϣ���˸�����ʹ����С��
�ȶ���
����ѿ͹۵����ۡ�����MySQL�ȶ��Ե����ۣ���1.5 MySQL�ж�ô�ȶ���������û��mSQL�ȶ��Եľ��飬������ǶԴ˲���˵�κζ�����
�۸�
��һ����Ҫ������������֤��MySQL��һ����mSQL����������֤������Ҳ����mSQL����������ѡ��ʹ���ĸ���Ʒ���ǵ�Ҫ���ٿ���֧��һ������֤������ʼ�֧�ֵķ��á�����Ȼ����������۵�һ����Ʒ������MySQL�У��㽫��Ҫ����һ������֤����
Perl�ӿ�
MySQL����mSQL������ͬPerl�ӿڣ�����һЩ���ӵĹ��ܡ�
JDBC ( Java ��
MySQLĿǰ��4��JDBC��������
  • gwe ����������GWE technologies ������һ��Java�ӿ�(����֧��)��
  • jms ����������Xiaokun Kelvin ZHU�Ŀ�����һ���Ľ���gwe��������
  • twz ����������Terrence W. Zellers ������һ��type 4 JDBC������������ѧϰĿ�ġ�
  • mm ����������Mark Matthews ������һ��type 4 JDBC��������

�Ƽ�������������twz��mm�����������߾�������������ɫ������֪��mSQL��һ�� JDBC �������򣬵������Ƕ�����̫�ٵľ��鲻�ܽ��бȽϡ�

�����ٶ�
MySQL��һ���dz�С�Ŀ����߶��飬���������Ƿdz�ϰ������C��C++���룬�dz����١���Ϊ�̡߳�������GROUP BY����mSQL����δʵ�֣����кܶ�׷�Ϲ���Ҫ����Ҫ��õ���������һЩǰ��������Բ鿴mSQL���һ��� ��HISTIRY���ļ�����������MySQL�ο����ֲ���¹���С�ڱȽ�(��D MySQL��Ǩ��ʷ)���ĸ��쿪�������Ӧ�����൱���Եġ�
ʵ�ó���
mSQL��MySQL����������Ȥ�ĵ��������ߡ���Ϊ������ֲ(��mSQL��MySQL)�Ǻ����׵ģ���������mSQL���õ���Ȥ��Ӧ�ó���Ҳ�ɱ�MySQLʹ�á�MySQL����һ���򵥵�msql2mysql����������mSQL��MySQLʹ�õĴ����C API����֮��ƴд������磬����msqlConnect()ʵ���ı�Ϊmysql_connect()���任һ���ͻ������mSQL��MySQLͨ����������ʱ�䡣

21.1.1 ������mSQL�Ĺ���ת����MySQL

�������ǵľ��飬ת������ʹ��mSQL C API��msql-tcl��msqljava���߽�ֻ������һСʱʱ�䣬ʹ��������MySQL C API������

ת�������ǣ�

  1. ��Դ������������ǽű�msql2mysql������Ҫreplace��������MySQLһ��ɢ����
  2. ���롣
  3. ���������������

mSQL C API��MySQL C API ֮�����ǣ�

  • MySQLʹ��һ��MYSQL�ṹ��Ϊһ����������(mSQLʹ��һ��int)��
  • mysql_connect()ȡһ��ָ��һ��MYSQL�ṹ��ָ����Ϊһ�������������׶���ȫ���Զ���һ����ʹ��malloc()���һ����mysql_connect()Ҳȡ��������ָ���û��Ϳ�������Ϊ��ȱʡʹ�ý���Щ����ΪNULL,NULL��
  • mysql_error()ȡMYSQL�ṹ��Ϊһ�������������������ֲ�ϵĴ��룬ֻ�ǰѲ����ӵ�����ϵ�msql_error()�����С�
  • MySQL�����д��󷵻�һ������ź�һ���ı�������Ϣ��mSQL������һ�����ִ�����Ϣ��
  • ����ijЩ�������ԣ���ΪMySQL֧�ִ�ͬһ�����̵ĵ�������������ӡ�

21.1.2 mSQL��MySQL�Ŀͻ���/������ͨѶЭ���кβ�ͬ

���㹻�IJ��ʹ�ò�����(�����ٲ�����)֧�����ߡ�

��MySQLЭ�鲻ͬ��mSQLЭ�������Ҫ�ķ����������棺

  • һ����Ϣ���������԰����ܶ����С�
  • �����ѯ�����ȵ�ǰ����������Ϣ��������̬�ر�����ֱ��һ�������õķ������Ϳͻ����ޡ�
  • ���еİ�������Բ�׽�ظ���ʧ�İ���
  • ���е���ֵ��ASCII�뷢�͡��к��еij����Խ��յĶ����Ʊ���(1��2��3���ֽ�)���͡�
  • MySQL����δ����ý���ж�ȡ(�����ڿͻ��˴洢�����ļ���)��
  • ���һ������д/�����˳���30��ʱ�䣬�������ر����ӡ�
  • ���һ�����ӿ���8��Сʱ���������ر����ӡ�

21.1.3 mSQL 2.0��SQL�䷨��MySQL�кβ�ͬ

������

MySQL
�����ж��������(�Ƚ������ģ���7.7 CREATE TABLE�䷨)�� ��
  • ����һ���ַ�������֮һ��ENUM���͡�
  • ����һ���ַ������ж����SET���͡�
  • ����64λ������BIGINT���͡�
MySQLҲ֧�����ж�����������ԣ�
  • UNSIGNEDѡ�
  • ���������е�ZEROFILLѡ�
  • ������һ��PRIMARY KEY�������е�AUTO_INCREMENTѡ���20.4.29 mysql_insert_id()��
  • �������е�DEFAULTֵ��
mSQL2
mSQL�����Ͷ�Ӧ��MySQL������ʾ�����棺
mSQL���� ��Ӧ��MySQL����
CHAR(len) CHAR(len)
TEXT(len) TEXT(len)��len����󳤶ȡ�����LIKE�����á�
INT INT���кܶ��ѡ�
REAL REAL����FLOAT����4��8�ֽڰ汾��
UINT INT UNSIGNED
DATE DATE��ʹ�� ANSI SQL ��ʽ����mSQL�Լ��ġ�
TIME TIME
MONEY DECIMAL(12,2)����2��С��λ�Ķ���ֵ��

��������

MySQL
���������ڱ�����ʱ��CREATE TABLE���ָ����
mSQL
�ڱ����������Ժ��������뱻�������õ�����CREATE INDEX��䡣

��һ��Ψһ��ʶ�����뵽һ�ű���

MySQL
ʹ��AUTO_INCREMENT��Ϊ���������η�����20.4.29 mysql_insert_id()��
mSQL
��һ�ű��ϴ���һ��SEQUENCE����ѡ��_seq�С�

Ϊ�л��һ��Ψһ��ʶ��

MySQL
���������һ��PRIMARY KEY��UNIQUE����
mSQL
ʹ��_rowid�С�ע��_rowid���Խ����ı䣬ȡ���ںܶ����ء�

�õ�������޸ĵ�ʱ��

MySQL
�ڱ�������һ��TIMESTAMP�С�����㲻������ֵ����������һ��NULLֵ�������Զ�ΪINSERT��UPDATE�������Ϊ��ǰ�����ں�ʱ�䡣
mSQL
ʹ��_timestamp�С�

NULLֵ�ıȽ�

MySQL
MySQL���ANSI SQL����NULL�ıȽ�����NULL��
mSQL
��mSQL�У�NULL = NULL��TRUE���棩������mSQL��MySQL��ֲ�ϵĴ���ʱ������뽫=NULL��ίIS NULL������<>NULL��ΪIS NOT NULL��

�ַ����ıȽ�

MySQL
ͨ�����ַ����Ƚ��Դ�Сд�޹ط�ʽ����ǰ�ַ���(ȱʡΪISO-8859-1 Latin1)�������������ʵʩ������㲻ϲ�������������������BINARY���ԣ���ʹ�ñȽϸ�������MySQL�����������ϵ�ASCII˳����С�
mSQL
���е��ַ����Ƚ��Դ�Сд���еķ�ʽ��ASCII˳�����������С�

��Сд�����е�����

MySQL
LIKE��һ����Сд�����л��Сд���е����������ȡ�����漰���С����LIKE��������һ��ͨ����ַ���ʼ�����п��ܣ�MySQL��ʹ��������
mSQL
ʹ��CLIKE��

β���ո�Ĵ���

MySQL
��ȥCHAR��VARCHAR��β���Ŀո������ϣ��������Ϊ��ʹ��һ��TEXT���С�
mSQL
����β���Ŀո�

WHERE�Ӿ�

MySQL
MySQL��ȷ�����Ȼ��κζ���(AND��ORǰ����)��Ҫ����MySQL��õ�mSQL����Ϊ��ʹ������(������ʾ)��
mSQL
�����Ҽ����κζ���������ζ�ų���3��������һЩ�߼����㲻�����κη�ʽ��ʾ����Ҳ��ζ�ŵ���������MySQLʱ�������ı�һЩ��ѯ����ͨ���������ź�����������㡣�ٶ���������mSQL��ѯ��
mysql> SELECT * FROM table WHERE a=1 AND b=2 OR a=3 AND b=4;

Ϊ��ʹMySQL��mSQL������������������������ţ�

mysql> SELECT * FROM table WHERE (a=1 AND (b=2 OR (a=3 AND (b=4))));

��ȡ����

MySQL
�б����洢��ÿ���û������������ݿ����Ȩ(����)ѡ���6.6 Ȩ��ϵͳ��ι�����
mSQL
��һ���ļ���mSQL.acl��������������Ϊ�û���Ȩ��/дȨ�ޡ�
��

21.2 �����Ա�MySQL��PostgreSQL

PostgreSQL��һЩ���߼��Ĺ����綨���û����͡��������������һЩ����֧�֡�Ȼ����PostgreSQL ȱ���ܶ����� ANSI SQL��ODBC�ĺܶ��׼���ͺͺ���������һ�������������б�����֧�ֻ�֧����һ�����ͺͺ�������crash-me��ҳ��

ͨ����PostgreSQL�DZ�MySQL���ܶࡣ��10.8 ʹ�����Լ��Ļ�׼����󲿷����������ǵ�����ϵͳ�������ȷʵ��Ҫ�����PostgreSQL�ṩ�ķḻ��������ϵ�������ܳ����ٶȵ���ʧ����Ӧ�ÿ��� PostgreSQL��


��һ��, ǰһ��, ��һ��, ���һ����Ŀ¼.

��������  ����Linux