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

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

���ߣ����� ([email protected]��      ��ҳ��http://aosp.me


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


7 MySQL���Բο�

7.1 ���֣���ôд�ַ���������

7.1.1 �ַ���

һ���ַ�����һ���ַ����У��ɵ�����(��'��)��˫����(��"��)�ַ�(����ֻ���㲻��ANSIģʽ����)��Χ�����磺

'a string'
"another string"

���ַ����ڣ�ij��˳������������塣��Щ˳���ÿһ����һ����б��(��\��)��ʼ����Ϊת���ַ���MySQLʶ������ת���ַ���

\0
һ��ASCII 0 (NUL)�ַ���
\n
һ�����з���
\t
һ����λ����
\r
һ���س�����
\b
һ���˸����
\'
һ��������(��'��)����
\"
һ��˫����(��"��)����
\\
һ����б��(��\��)����
\%
һ����%��������������������������%��������ʵ�����������%��������Ϊһ��ͨ�����
\_
һ����_��������������������������_��������ʵ�����������_��������Ϊһ��ͨ�����

ע�⣬�������ijЩ���Ļ�����ʹ����\%������\%_������Щ�������ַ�����\%������\_����������%������_����

�м��ַ�����һ���ַ����ڰ������ţ�

  • һ���ַ������á�'�������ŵġ�'�����Ա�д��Ϊ��''����
  • һ���ַ���������"������������"�����Ա�д��Ϊ��""����
  • ����԰�һ��ת���ַ�����\������������ǰ�档
  • һ���ַ���������"���������ġ�'������Ҫ����Դ����Ҳ��ر��ظ���ת�塣ͬ����һ���ַ������á�'�������ŵ�����"��Ҳ����Ҫ����Դ���

������ʾ��SELECT��ʾ���ź�ת����ι�����

mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+

mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
+-------+---------+-----------+--------+--------+
| hello | 'hello' | ''hello'' | hel"lo | "hello |
+-------+---------+-----------+--------+--------+

mysql> SELECT "This\nIs\nFour\nlines";
+--------------------+
| This
Is
Four
lines |
+--------------------+
 

�������Ҫ�Ѷ��������ݲ��뵽һ��BLOB�У������ַ�������ת�����б�ʾ��

NUL
ASCII 0����Ӧ����'\0'��һ����б�ߺ�һ��ASCII '0'����ʾ����
\
ASCII 92����б�ߡ���'\\'��ʾ��
'
ASCII 39�������š��á�\'����ʾ��
"
ASCII 34��˫���š��á�\"����ʾ��

�����дC���룬�����ʹ��C API����mysql_escape_string()��ΪINSERT���ת���ַ�����20.3 C API ������������ Perl�У������ʹ��DBI���е�quote�����任������ַ�����ȷ��ת�����С���20.5.2 DBI�ӿ���

��Ӧ�����κο��ܰ��������κ������ַ����ַ�����ʹ��ת�庯����

7.1.2 ����

������ʾΪһ������˳�򡣸�����ʹ����.����Ϊһ��ʮ���Ʒָ��������������͵����ֿ���ǰ����-������һ����ֵ��

��Ч���������ӣ�

1221
0
-32

��Ч�����������ӣ�

294.42
-32032.6809e+10
148.00

һ�����������ڸ���������ʹ�ã�������Ϊ��ֵ�ĸ�������

7.1.3 ʮ������ֵ

MySQL֧��ʮ������ֵ�������������ģ����DZ���������һ������(64λ����)�����ַ��������ģ����DZ���������һ���������ַ���������ÿһ��ʮ���������ֱ��任Ϊһ���ַ���

mysql> SELECT 0xa+0
       -> 10
mysql> select 0x5061756c;
       -> Paul

ʮ�������ַ���������ODBCʹ�ã�����BLOB�е�ֵ��

7.1.4 NULLֵ

NULLֵ��ζ�š������ݡ����Ҳ�ͬ�������������͵�0Ϊ���ַ������͵Ŀ��ַ�������18.15 NULLֵ������

��ʹ���ı��ļ�����򵼳���ʽ(LOAD DATA INFILE, SELECT ... INTO OUTFILE)ʱ��NULL������\N��ʾ����7.16 LOAD DATA INFILE�䷨��

7.1.5 ���ݿ⡢�����������кͱ���������

���ݿ⡢�����������кͱ��������ֶ�����MySQLͬ���Ĺ���:

ע�⣬��MySQL3.23.6��ʼ����ı��ˣ���ʱ������������'���õı�ʶ��(���ݿ⡢����������)���������ANSIģʽ���У�"Ҳ���������ñ�ʶ������

��ʶ�� ��󳤶� �������ַ�
���ݿ� 64 ��һ��Ŀ¼���������κ��ַ�������/.
�� 64 ���ļ������������κ��ַ�������/��.
�� 64 �����ַ�
���� 255 �����ַ�

ע�⣬�������ϣ�����һ����ʶ���в�����ASCII(0)��ASCII(255)��

ע�⣬�����ʶ����һ�����ƴʻ���������ַ�������ʹ����ʱ�������������`��������

SELECT * from `select` where `select`.id > 100; 

�� MySQL����ǰ�汾�������������£�

  • һ�����ֿ��԰������Ե�ǰ�ַ�����������ĸ���ַ�����_������$����ȱʡ�ַ�����ISO-8859-1 Latin1�������ͨ�����±���MySQL���ı䡣��9.1.1 �������ݺ�������ַ�����
  • һ�����ֿ�������һ�������кϷ����κ��ַ���ʼ���ر�أ�һ�����ֿ�����һ�����ֿ�ʼ(�ⲻͬ���������������ݿ�ϵͳ!)��Ȼ����һ�����ֲ���������������ɡ�
  • �㲻����������ʹ����.������Ϊ�������������ʽ����������������(������)��

�����㲻ʹ����1e���������֣���Ϊһ������ʽ��1e+1�Ƕ����Եġ������Խ���Ϊ����ʽ1e + 1������1e+1��

��MySQL�У�����ʹ�����б�����κ�һ�������У�

������ ����
col_name ���������������col_name�����ڰ����ñ���һ���еIJ�ѯ��
tbl_name.col_name ���Ե�ǰ�����ݿ�ı�tbl_name����col_name
db_name.tbl_name.col_name ����col_name�ӱ���tbl_name���ݿ�db_name�������ʽ��MySQL3.22���Ժ�汾���á�
`column_name` ��һ���ؼ��ʻ���������ַ����С�

��һ�������������У��㲻��ָ��һ��tbl_name��db_name.tbl_nameǰ׺���������û��ж����ԡ����磬�ٶ���t1��t2��ÿ����������c����������һ��ʹ��t1��t2��SELECT������c������������£�c�ж����ԣ���Ϊ����ʹ�ñ�������в���Ψһ�ģ���������ͨ��д��t1.c��t2.c��ָ������Ҫ�ĸ�����ͬ�������������ݿ�db1��һ����t�������ݿ�db2��һ����t�������������db1.t.col_name��db2.t.col_name������Щ���ݱ����С�

�䷨.tbl_name��ζ���ڵ�ǰ�����ݿ��еı�tbl_name���þ䷨Ϊ��ODBC�ļ����Ա����ܣ���ΪһЩODBC������һ����.���ַ���Ϊ���ݿ������ǰ׺��

7.1.5.1 ���ֵĴ�Сд������

��MySQL�У����ݿ�ͱ���Ӧ������ЩĿ¼�µ�Ŀ¼���ļ�����������ڵIJ���ϵͳ�������Ծ������ݿ�ͱ������Ĵ�Сд�����ԡ�����ζ�����ݿ�ͱ�����Unix�������ִ�Сд�ģ�����Win32�Ϻ��Դ�Сд��

ע�⣺��Win32�ϣ��������ݿ�ͱ����Ǻ��Դ�Сд�ģ��㲻Ӧ����ͬһ����ѯ��ʹ�ò�ͬ�Ĵ�Сд������һ�����������ݿ�ͱ������в�ѯ������������Ϊ����Ϊmy_table����ΪMY_TABLE����һ������

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;

��������������¶��Ǻ��Դ�Сд�ġ�

���ı��������ִ�Сд�ġ����в�ѯ����������: ��Ϊ����a��A���ñ�����

mysql> SELECT col_name FROM tbl_name AS a
           WHERE a.col_name = 1 OR A.col_name = 2;

�еı����Ǻ��Դ�Сд�ġ�

7.2 �û�����

MySQL֧���߳��ض��ı�������@variablename�䷨��һ�������������ɵ�ǰ�ַ�����������ĸ�ַ�����_������$������.����ɡ�ȱʡ�ַ�����ISO-8859-1 Latin1�������ͨ�����±���MySQL�ı䡣��9.1.1 �������ݺ�������ַ�����

�������ر���ʼ����ȱʡ�أ����ǰ���NULL���ܴ洢������ʵ����һ���ַ���ֵ�����߳��˳�ʱ������һ���̵߳����б����Զ��ر��ͷš�

�������SET�䷨����һ��������

SET @variable= { integer expression | real expression | string expression }
[,@variable= ...].

��Ҳ������@variable:=expr�䷨��һ������ʽ������һ��������

select @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
+----------------------+------+------+------+
| @t1:=(@t2:=1)+@t3:=4 | @t1  | @t2  | @t3  |
+----------------------+------+------+------+
|                    5 |    5 |    1 |    4 |
+----------------------+------+------+------+

��������Dz��ò�ʹ��:=�䷨����Ϊ=��Ϊ�Ƚϱ����ģ�

7.3 ������

MySQL֧�ִ����������ͣ������Ա���Ϊ3�ࣺ�������͡����ں�ʱ�������Լ��ַ���(�ַ�)���͡��������ȸ����������͵�һ�������������ܽ�ÿ�������͵Ĵ洢����Ȼ���ṩÿ�����е��������ʵĸ���ϸ����������������򻯣�����ϸ��˵��Ӧ�ÿ��ǵ��й��ض������͵ĸ�����Ϣ����������Ϊ��ָ��ֵ��������ʽ��

��MySQL֧�ֵ��������������档���д�����ĸ���������У�

M
ָ��������ʾ�ߴ硣���ĺϷ�����ʾ�ߴ��� 255 ��
D
�����ڸ������Ͳ���ָ��������ʮ����С����������������������ܵ�ֵ��30������Ӧ�ò�����M-2��

������(��[������]��)ָ����ѡ���������η��IJ��֡�

ע�⣬�����ָ��һ����ΪZEROFILL��MySQL��Ϊ�����Զ�������UNSIGNED���ԡ�

TINYINT[(M)] [UNSIGNED] [ZEROFILL]
һ����С���������з��ŵķ�Χ��-128��127���޷��ŵķ�Χ��0��255��
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
һ��С�������з��ŵķ�Χ��-32768��32767���޷��ŵķ�Χ��0��65535��
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
һ���еȴ�С�������з��ŵķ�Χ��-8388608��8388607���޷��ŵķ�Χ��0��16777215��
INT[(M)] [UNSIGNED] [ZEROFILL]
һ��������С�������з��ŵķ�Χ��-2147483648��2147483647���޷��ŵķ�Χ��0��4294967295��
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
����INT��һ��ͬ��ʡ�
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
һ�����������з��ŵķ�Χ��-9223372036854775808��9223372036854775807���޷��ŵķ�Χ��0��18446744073709551615��ע�⣬���������������з��ŵ�BIGINT��DOUBLEֵ��ɣ�����㲻Ӧ��ʹ�ô���9223372036854775807��63λ)���з��Ŵ�����������λ������ע�⣬������������INTEGERֵʱ��-��+��*��ʹ��BIGINT���㣡����ζ��������2��������(�������ڷ��������ĺ���)������������9223372036854775807������Եõ�����Ľ����һ���������֣��������޷��ŵģ���һ�������ȸ��������侫�ȿ�����<=24����һ��˫���ȸ�����������25 ��53֮�䣬��Щ������FLOAT��DOUBLE��������������������FLOAT(X)�ж�Ӧ��FLOAT��DOUBLE��ͬ�ķ�Χ��������ʾ�ߴ��С��λ����δ����ġ���MySQL3.23�У�����һ�������ĸ���ֵ���ڸ����MySQL�汾�У�FLOAT(precision)������2λС�����þ䷨Ϊ��ODBC�����Զ��ṩ��
FLOAT[(M,D)] [ZEROFILL]
һ��С(������)�������֡������޷��š�������ֵ��-3.402823466E+38��-1.175494351E-38��0 ��1.175494351E-38��3.402823466E+38��M����ʾ���ȶ�D��С����λ����û�в�����FLOAT����<24 ��һ��������ʾһ�������ܸ������֡�
DOUBLE[(M,D)] [ZEROFILL]
һ��������С(˫����)�������֡������޷��š�������ֵ��-1.7976931348623157E+308��-2.2250738585072014E-308�� 0��2.2250738585072014E-308��1.7976931348623157E+308��M����ʾ���ȶ�D��С��λ����û��һ��������DOUBLE��FLOAT(X)��25 < = X < = 53������һ��˫���ܸ������֡�
DOUBLE PRECISION[(M,D)] [ZEROFILL]
��
REAL[(M,D)] [ZEROFILL]
��Щ��DOUBLEͬ��ʡ�
DECIMAL[(M[,D])] [ZEROFILL]
һ��δѹ��(unpack)�ĸ������֡������޷��š���Ϊ��ͬһ��CHAR�У���δѹ������ζ��������Ϊһ���ַ������洢��ֵ��ÿһλʹ��һ���ַ���С���㣬���Ҷ��ڸ�������-�����Ų���M�м��㡣���D��0��ֵ��û��С�����С�����֡�DECIMALֵ�����Χ��DOUBLE��ͬ�����Ƕ�һ��������DECIMAL�У�ʵ�ʵķ�Χ����ͨ��M��D��ѡ�����ơ����D��ʡ�ԣ���������Ϊ0�����M��ʡ������������Ϊ10��ע�⣬��MySQL3.22�M�����������ź�С���㡣
NUMERIC(M,D) [ZEROFILL]
����DECIMAL��һ��ͬ��ʡ�
DATE
һ�����ڡ�֧�ֵķ�Χ��'1000-01-01'��'9999-12-31'��MySQL��'YYYY-MM-DD'��ʽ����ʾDATEֵ������������ʹ���ַ��������ְ�ֵ����DATE�С�
DATETIME
һ�����ں�ʱ����ϡ�֧�ֵķ�Χ��'1000-01-01 00:00:00'��'9999-12-31 23:59:59'��MySQL��'YYYY-MM-DD HH:MM:SS'��ʽ����ʾDATETIMEֵ������������ʹ���ַ��������ְ�ֵ����DATETIME���С�
TIMESTAMP[(M)]
һ��ʱ����ǡ���Χ��'1970-01-01 00:00:00'��2037���ijʱ��MySQL��YYYYMMDDHHMMSS��YYMMDDHHMMSS��YYYYMMDD��YYMMDD��ʽ����ʾTIMESTAMPֵ��ȡ�����Ƿ�M��14����ʡ��)��12��8��6������������ʹ���ַ��������ְ�ֵ����TIMESTAMP�С�һ��TIMESTAMP�ж��ڼ�¼һ��INSERT��UPDATE���������ں�ʱ�������õģ���Ϊ����㲻�Լ�������ֵ�����Զ��ر�����Ϊ������������ں�ʱ�䡣���Կ���ͨ��������һ��NULLֵ������Ϊ��ǰ�����ں�ʱ�䡣��7.3.6 ���ں�ʱ��������
TIME
һ��ʱ�䡣��Χ��'-838:59:59'��'838:59:59'��MySQL��'HH:MM:SS'��ʽ����ʾTIMEֵ������������ʹ���ַ��������ְ�ֵ����TIME�С�
YEAR[(2|4)]
һ��2��4λ���ָ�ʽ����(ȱʡ��4λ)��������ֵ��1901��2155����0000��4λ���ʽ���������ʹ��2λ��1970-2069( 70-69)��MySQL��YYYY��ʽ����ʾYEARֵ�������������ʹ���ַ���������ֵ����YEAR�С���YEAR������MySQL3.22���������͡���
CHAR(M) [BINARY]
һ�������ַ��������洢ʱ���������ÿո������ұߵ�ָ���ij��ȡ�M�ķ�Χ��1 �� 255���ַ�����ֵ������ʱ���ո�β����ɾ����CHARֵ����ȱʡ�ַ����Դ�Сд�����ֵķ�ʽ����ͱȽϣ���������BINARY�ؼ��ʡ�NATIONAL CHAR������ʽNCHAR)��ANSI SQL�ķ�ʽ������CHAR��Ӧ��ʹ��ȱʡ�ַ���������MySQL��ȱʡ��CHAR��CHARACTER��һ����д��
[NATIONAL] VARCHAR(M) [BINARY]
һ���䳤�ַ�����ע�⣺��ֵ���洢ʱ��β���Ŀո�ɾ��(�ⲻͬ��ANSI SQL�淶)��M�ķ�Χ��1 �� 255���ַ��� VARCHARֵ����ȱʡ�ַ����Դ�Сд�����ֵķ�ʽ����ͱȽϣ���������BINARY�ؼ���ֵ����7.7.1 ��ʽ��ָ���仯�� VARCHAR��CHARACTER VARYINGһ����д��
TINYBLOB
��
TINYTEXT
һ��BLOB��TEXT�У���󳤶�Ϊ255(2^8-1)���ַ�����7.7.1 ��ʽ��ָ���仯��
BLOB
��
TEXT
һ��BLOB��TEXT�У���󳤶�Ϊ65535(2^16-1)���ַ�����7.7.1 ��ʽ��ָ���仯��
MEDIUMBLOB
��
MEDIUMTEXT
һ��BLOB��TEXT�У���󳤶�Ϊ16777215(2^24-1)���ַ�����7.7.1 ��ʽ��ָ���仯��
LONGBLOB
��
LONGTEXT
һ��BLOB��TEXT�У���󳤶�Ϊ4294967295(2^32-1)���ַ�����7.7.1 ��ʽ��ָ���仯
ENUM('value1','value2',...)
ö�١�һ������һ��ֵ���ַ����������ֵʽѡ����ֵ�б�'value1'��'value2', ...,��NULL��һ��ENUM�������65535��ͬ��ֵ��
SET('value1','value2',...)
һ�����ϡ������������ֵ��һ���ַ�����������ÿһ�������ֵ�б�'value1', 'value2', ...ѡ����һ��SET�������64����Ա��

7.3.1 �����ʹ洢����

����ÿ����MySQL֧�ֵ������͵Ĵ洢���������水���г���

7.3.2 ��������

������ ��Ҫ�Ĵ洢��
TINYINT 1 �ֽ�
SMALLINT 2 ���ֽ�
MEDIUMINT 3 ���ֽ�
INT 4 ���ֽ�
INTEGER 4 ���ֽ�
BIGINT 8 ���ֽ�
FLOAT(X) 4 ��� X < = 24 �� 8 ��� 25 < = X < = 53
FLOAT 4 ���ֽ�
DOUBLE 8 ���ֽ�
DOUBLE PRECISION 8 ���ֽ�
REAL 8 ���ֽ�
DECIMAL(M,D) M�ֽ�(D+2 , ���M < D)
NUMERIC(M,D) M�ֽ�(D+2 , ���M < D)

7.3.3 ���ں�ʱ������

������ ��Ҫ�Ĵ洢��
DATE 3 ���ֽ�
DATETIME 8 ���ֽ�
TIMESTAMP 4 ���ֽ�
TIME 3 ���ֽ�
YEAR 1 �ֽ�

7.3.4 ������

������ ��Ҫ�Ĵ洢��
CHAR(M) M�ֽڣ�1 <= M <= 255
VARCHAR(M) L+1 �ֽ�, �ڴ�L <= M��1 <= M <= 255
TINYBLOB, TINYTEXT L+1 �ֽ�, �ڴ�L< 2 ^ 8
BLOB, TEXT L+2 �ֽ�, �ڴ�L< 2 ^ 16
MEDIUMBLOB, MEDIUMTEXT L+3 �ֽ�, �ڴ�L< 2 ^ 24
LONGBLOB, LONGTEXT L+4 �ֽ�, �ڴ�L< 2 ^ 32
ENUM('value1','value2',...) 1 �� 2 ���ֽ�, ȡ����ö��ֵ����Ŀ(���ֵ65535��
SET('value1','value2',...) 1��2��3��4��8���ֽ�, ȡ���ڼ��ϳ�Ա������(���64����Ա��

VARCHAR��BLOB��TEXT�����DZ䳤���ͣ�������洢����ȡ������ֵ��ʵ�ʳ���(��ǰ��ı�������L��ʾ)��������ȡ�������͵������ܳߴ硣���磬һ��VARCHAR(10)���ܱ�����󳤶�Ϊ10���ַ���һ���ַ�����ʵ�ʵĴ洢��Ҫ���ַ����ij���(L)������1���ֽ��Լ�¼�ַ����ij��ȡ������ַ���'abcd'��L��4���洢Ҫ����5���ֽڡ�

BLOB��TEXT������Ҫ1��2��3��4���ֽ�����¼��ֵ�ij��ȣ���ȡ�������͵������ܳ��ȡ�

���һ���������κα䳤�������ͣ���¼��ʽ��Ҳ�DZ䳤�ġ�ע�⣬��һ����������ʱ��MySQL������ijЩ�����½�һ���д�һ���䳤���͸ı�Ϊһ���������ͻ��෴����7.7.1 ��ʽ��ָ���仯��

һ��ENUM����Ĵ�С�ɲ�ͬö��ֵ������������1�ֽڱ�����ö�٣����255�����ܵ�ֵ��2���ֽ�����ö�٣����65535 ֵ��

һ��SET����Ĵ�С�ɲ�ͬ�ļ��ϳ�Ա������������������ϴ�С��N������ռ��(N+7)/8���ֽڣ���������Ϊ1��2��3��4��8 ���ֽڡ�һ��SET�������64����Ա��

7.3.5 ��������

MySQL֧�����е�ANSI/ISO SQL92���������͡���Щ���Ͱ���׼ȷ���ֵ���������(NUMERIC, DECIMAL, INTEGER,��SMALLINT)��Ҳ�����������ֵ���������(FLOAT, REAL,��DOUBLE PRECISION)���ؼ���INT��INTEGER��һ��ͬ��ʣ����ؼ���DEC��DECIMALһ��ͬ��ʡ�

NUMERIC��DECIMAL���ͱ�MySQLʵ��Ϊͬ�������ͣ�����SQL92��׼���������DZ����ڱ���ֵ����ֵ��׼ȷ�����Ǽ�����Ҫ��ֵ���������Ǯ�йص����ݡ�������һ��������Щ����֮һʱ�����Ⱥ͹�ģ���ܱ�(����ͨ����)ָ�������磺

salary DECIMAL(9,2) 

����������У�9(precision)�����������ڴ洢ֵ���ܵ�С��λ������2(scale)�����������ڴ洢С������λ������ˣ�����������£��ܱ��洢��salary���е�ֵ�ķ�Χ�Ǵ�-9999999.99��9999999.99����ANSI/ISO SQL92�У��䷨DECIMAL(p)�ȼ���DECIMAL(p,0)��ͬ�����䷨DECIMAL�ȼ���DECIMAL(p,0)������ʵ�ֱ���������ֵp��MySQL��ǰ��֧��DECIMAL/NUMERIC�������͵���Щ������ʽ����һ�֡���һ��˵������һ�����ص����⣬��Ϊ��Щ���͵���Ҫ�洦���������Եؿ��ƾ��Ⱥ͹�ģ��������

DECIMAL��NUMERICֵ��Ϊ�ַ����洢����������Ϊ�����Ƹ��������Ա㱣����Щֵ��С�����ȡ�һ���ַ�����ֵ��ÿһλ��С����(���scale>0)����-������(���ڸ�ֵ)�����scale��0��DECIMAL��NUMERICֵ������С�����С�����֡�

DECIMAL��NUMERICֵ�����ķ�Χ��DOUBLEһ�������Ƕ���һ��������DECIMAL��NUMERIC�У�ʵ�ʵķ�Χ�������ɸ����е�precision��scale���ơ����������и�����С��������λ����ָ��scale��������λ��ֵ����ֵ����scale�������롣��һ��DECIMAL��NUMERIC�б����������С����ָ��(��ȱʡ�ģ�precision��scale�����ķ�Χ��ֵ��MySQL�洢��ʾ�Ǹ���Χ����Ӧ�Ķ˵�ֵ��

��Ϊ��ANSI/ISO SQL92��׼����չ��MySQLҲ֧���ϱ����е���������TINYINT��MEDIUMINT��BIGINT����һ����չ��MySQL֧�ֿ�ѡ��ָ��һ������ֵ��ʾ�Ŀ��ȣ������Ÿ��ڻ����ؼ���֮��(���磬INT(4))�������ѡ�Ŀ���ָ�������������С����ָ�����ȵ�ֵ�������ʾ�����Dz������������б��洢��ֵ�ķ�Χ��Ҳ������ֵ������ʾ��λ��������ȳ�����ָ���Ŀ��ȡ������ѡ����չ����ZEROFILLһ��ʹ��ʱ��ȱʡ�Ŀո��������档���磬��������ΪINT(5) ZEROFILL���У�һ��Ϊ4��ֵ��Ϊ00004��������ע�⣬�������һ�������д洢������ʾ���ȵĸ���ֵ����MySQL����ijЩ���ӵ�����(join)������ʱ��ʱ������ܻ��������⣬��Ϊ����Щ����£�MySQL��������ȷʵ�ʺ�ԭ�����п��ȡ�

���е��������Ϳ�����һ����ѡ(�DZ�׼��)����UNSIGNED��������Ҫ�����н�����������������Ҫһ���Դ�һ����з�Χ������ʹ���޷���ֵ��

FLOAT���ͱ�������ʾ�������ֵ��������͡�ANSI/ISO SQL92��׼����һ����ѡ�ľ���˵��(������ָ���ķ�Χ)�����ڹؼ���FLOAT�����������λ����MySQLʵ��Ҳ֧�������ѡ�ľ���˵�������ؼ���FLOAT������һ�������Ͷ�û�о���˵��ʱ��MySQLʹ��4���ֽڴ洢ֵ��һ�����ֵľ䷨Ҳ��֧�֣���FLOAT�ؼ��ʺ�������Ÿ���2�����֡������ѡ���һ�����ּ�����ʾ���ֽڼ����ֵ�洢���󣬶��ڶ�������ָ��Ҫ���洢�ĺ���ʾ����С������λ��(����DECIMAL��NUMERIC)����MySQLҪ��Ϊ����һ���У�һ��С������С��λ������ָ����ֵ���洢ֵʱ����ֵ���������룬ȥ�������λ��

REAL��DOUBLE PRECISION���Ͳ����ܾ���˵������Ϊ�� ANSI/ISO SQL92 ��׼����չ��MySQLʶ���DOUBLE��ΪDOUBLE PRECISION���͵�һ��ͬ��ʡ���REAL���ȱ�����DOUBLE PRECISION�ĸ�С�ı�׼Ҫ���෴��MySQLʵ�������֣���Ϊ8�ֽ�˫���ȸ���ֵ(�����в��ǡ�Ansiģʽ��ʱ)��Ϊ��������ֲ�ԣ��������ֵ�����ֵ�Ĵ洢�������Ӧ��ʹ��û�о��Ȼ�С��λ��˵����FLOAT��DOUBLE PRECISION��

��Ҫ�������ֵ��д洢�����������������ķ�Χ��ֵʱ��MySQL���и�ֵ����Χ�ڵ���ȷ�˵�ֵ���Ҵ洢���к�Ľ��ֵ��

���磬һ��INT�еķ�Χ��-2147483648��2147483647���������ͼ����-9999999999��һ��INT���У�ֵ�����е���Χ�ĵͲ��˵㣬���洢-2147483648��ͬ�����������ͼ����9999999999��2147483647���洢��

���INT����UNSIGNED���еķ�Χ�Ĵ�С����ͬ�ģ��������Ķ˵��Ƶ���0��4294967295���������ͼ�洢-9999999999��9999999999�����б��洢��ֵ��Ϊ0��4294967296��

����ALTER TABLE��LOAD DATA INFILE��UPDATE�Ͷ���INSERT��䣬���ڼ����������ı任��Ϊ�����桱�����档

7.3.6 ���ں�ʱ������

���ں�ʱ��������DATETIME��DATE��TIMESTAMP��TIME��YEAR����Щ��ÿһ�����кϷ�ֵ��һ����Χ�������㡱����ָ��ȷʵ���Ϸ���ֵʱ��ʹ�á�ע�⣬MySQL������洢ij�������ϸ�ء��Ϸ�������ֵ������1999-11-31��ԭ��������Ϊ����Ӧ�ó�����������������ڼ�飬������SQL��������Ϊ��ʹ���ڼ������족��MySQL������·���0-12�ķ�Χ������0-31�ķ�Χ��������Χ��������������ΪMySQL��������һ��DATE��DATETIME���д洢���ڣ��������������㡣��Դ洢�㲻֪��׼ȷ�����ڵ�һ�����յ�Ӧ�ó�����˵�Ǽ������õģ�����������£���򵥵ش洢������1999-00-00��1999-01-00������Ȼ�㲻�������Ӻ�����DATE_SUB()��DATE_ADD()�õ���������Щ���ڵ���ȷֵ)��

�������ں�ʱ�乤��ʱ�������ǵ�һЩҪ��ס��һ�㿼�ǣ�

  • MySQL��һ�����������ڻ�ʱ�������Ա�׼�ĸ�ʽ��������������ͼΪ���ṩ��ֵ���ͳ������ʽ(���磬����ָ��һ��ֵ����������Ƚ�һ�����ڻ�ʱ������ʱ)������ֻ֧����������С�������ĸ�ʽ���������ṩ�Ϸ���ֵ�������������������ʽʹ����Щֵ����������޷�Ԥ�ϵĽ����
  • ����MySQL��ͼ�Զ��ָ�ʽ����ֵ������������������ֵ����ݲ����������棬���ڱ�������-��-�յ�˳�����(���磬'98-09-04')���������������ط����õ���-��-�����-��-��Ĵ���(���磬'09-04-98'��'04-09-98')��
  • ���һ��ֵ�����ֵ������Ļ����б�ʹ�ã�MySQL�Զ��任һ�����ڻ�ʱ������ֵ��һ�����֣�������Ҳ��ˡ�
  • ��MySQL����һ�����ڻ�ʱ�����͵�ֵ������Χ��Ը����Ͳ��Ϸ�(�����ڵĿ�ʼ)ʱ�����������͵�ֵ�任�����㡱ֵ����������dz�����Χ��TIMEֵ������Ϊ�ʵ���TIME��Χ�˵�ֵ��)�±���ʾ��ÿ�����͵ġ��㡱ֵ�ĸ�ʽ��
    ������ ���㡱ֵ
    DATETIME '0000-00-00 00:00:00'
    DATE '0000-00-00'
    TIMESTAMP 00000000000000������ȡ������ʾ�ߴ磩
    TIME '00:00:00'
    YEAR 0000
  • ���㡱ֵ������ģ���������ʹ���ڱ�����ʾ��ֵ�����Եش洢���������ǡ���Ҳ����ʹ��ֵ'0'��0����, �������д��
  • ��MyODBC 2.50.12�����ϰ汾�У���MyODBCʹ�õġ��㡱���ڻ�ʱ��ֵ���Զ��任��NULL����ΪODBC���ܴ���������ֵ��

7.3.6.1 Y2K�������������

MySQL����Y2K��ȫ��(��1.6 2000��һ����)�����dzʽ���MySQL������ֵ���ܲ��ǡ�һ������2λ���ֵ���κ��������ɶ����Եģ���Ϊ������δ֪�ġ�������ֵ���뱻���ͳ�4λ��ʽ����ΪMySQL�ڲ�ʹ��4λ�洢��ݡ�

����DATETIME, DATE, TIMESTAMP��YEAR���ͣ�MySQLʹ�����й���Ľ��Ͷ����Ե����ֵ��

  • �ڷ�Χ00-69����ֵ���任��2000-2069��
  • �ڷ�Χ70-99����ֵ���任��1970-1999��

�ǵ���Щ��������ṩ���������ݵĺ���ĺ����²⡣���MySQLʹ�õ��������򲻲�����ȷ��ֵ����Ӧ���ṩ�޶���İ���4λ��ֵ�����롣

7.3.6.2 DATETIME, DATE��TIMESTAMP����

DATETIME, DATE��TIMESTAMP��������صġ������������ǵ�������������������ƵĶ��ֲ�ͬ�ġ�

DATETIME������������Ҫͬʱ�������ں�ʱ����Ϣ��ֵʱ��MySQL����������'YYYY-MM-DD HH:MM:SS'��ʽ��ʾDATETIMEֵ��֧�ֵķ�Χ��'1000-01-01 00:00:00'��'9999-12-31 23:59:59'������֧�֡���ζ�ž��ܸ����ֵ���ܹ����������ܱ�֤���ǿ��ԡ���

DATE�������������Ҫ����ֵʱ��û��ʱ�䲿�֡�MySQL����������'YYYY-MM-DD'��ʽ��ʾDATEֵ��֧�ֵķ�Χ��'1000-01-01'��'9999-12-31'��

TIMESTAMP�������ṩһ�����ͣ������ʹ�����Զ����õ�ǰ�����ں�ʱ����INSERT��UPDATE�IJ�����������ж��TIMESTAMP�У�ֻ�е�һ���Զ����¡�

�Զ����µ�һ��TIMESTAMP���������κ������·�����

  • ��û����ȷ����һ��INSERT��LOAD DATA INFILE�����ָ����
  • ��û����ȷ����һ��UPDATE�����ָ����һЩ������иı�ֵ����ע��һ��UPDATE����һ����Ϊ���Ѿ��е�ֵ���⽫������TIMESTAMP�б����£���Ϊ���������һ����Ϊ����ǰ��ֵ��MySQLΪ��Ч�ʶ����Ը��ġ���
  • ����ȷ���趨TIMESTAMP��ΪNULL.

����һ�������TIMESTAMP��Ҳ�������õ���ǰ�����ں�ʱ�䣬ֻҪ������ΪNULL����NOW()��

ͨ����ȷ������ϣ����ֵ������������κ�TIMESTAMP��Ϊ��ͬ�ڵ�ǰ���ں�ʱ���ֵ����ʹ�Ե�һ��TIMESTAMP��Ҳ�����������磬��������㴴��һ����ʱ������Ҫһ��TIMESTAMP�����õ���ǰ�����ں�ʱ�䣬�����Ժ����ۺ�ʱ�б�����ʱ�����ı䣬�����ʹ��������ԣ�

  • ��MySQL���б�����ʱ�����У��⽫��ʼ����Ϊ��ǰ�����ں�ʱ�䡣
  • ����ִ�����ĶԸ����������еĸ���ʱ����ȷ�趨TIMESTAMP��Ϊ���ĵ�ǰֵ��

��һ���棬����ܷ��֣����б���������Զ�����ĸ���ʱ����������һ������NOW()��ʼ����DATETIME�С�

TIMESTAMPֵ���Դ�1970��ijʱ�Ŀ�ʼһֱ��2037�꣬����Ϊһ�룬��ֵ��Ϊ������ʾ��

��MySQL����������ʾTIMESTAMPֵȡ������ʾ�ߴ�ĸ�ʽ���±�����������TIMESTAMP��ʽ��14λ������TIMESTAMP�п����ø��̵���ʾ�ߴ紴�죺

������ ��ʾ��ʽ
TIMESTAMP(14) YYYYMMDDHHMMSS
TIMESTAMP(12) YYMMDDHHMMSS
TIMESTAMP(10) YYMMDDHHMM
TIMESTAMP(8) YYYYMMDD
TIMESTAMP(6) YYMMDD
TIMESTAMP(4) YYMM
TIMESTAMP(2) YY

���е�TIMESTAMP�ж���ͬ���Ĵ洢��С����������ʾ�ߴ硣�������ʾ�ߴ���6��8��12����14��������ڱ�����ʱ��ָ��һ���������ʾ�ߴ磬����ֵ0���14��ǿ�Ƶ�14���ڴ�1��13��Χ������ֵ�ߴ类ǿ��Ϊ��һ�������ż����

ʹ��һ�����õĸ�ʽ�����κ�һ���������ָ��DATETIME��DATE��TIMESTAMPֵ��

  • 'YYYY-MM-DD HH:MM:SS'��'YY-MM-DD HH:MM:SS'��ʽ��һ���ַ���������һ�֡����ɡ����﷨--�κα������������ڲ��ֺ�ʱ�䲿��֮��ķָ��������磬'98-12-31 11:30:45'��'98.12.31 11+30+45'��'98/12/31 11*30*45'��'98@12@31 11^30^45'�ǵȼ۵ġ�
  • 'YYYY-MM-DD'��'YY-MM-DD'��ʽ��һ���ַ���������һ�֡����ɡ����﷨�����磬'98-12-31', '98.12.31', '98/12/31'��'98@12@31'�ǵȼ۵ġ�
  • 'YYYYMMDDHHMMSS'��'YYMMDDHHMMSS'��ʽ��û���κηָ�����һ���ַ��������磬'19970523091528'��'970523091528'������Ϊ'1997-05-23 09:15:28'������'971122459015'�Dz��Ϸ���(���к�������ķ��Ӳ���)�ұ��'0000-00-00 00:00:00'��
  • 'YYYYMMDD'��'YYMMDD'��ʽ��û���κηָ�����һ���ַ���������ַ�����Ϊ��һ�����ڡ����磬'19970523'��'970523'��������Ϊ'1997-05-23'������'971332'�Dz��Ϸ���( ������������º��첿��)�ұ��'0000-00-00'��
  • YYYYMMDDHHMMSS��YYMMDDHHMMSS��ʽ��һ�����֣����������Ϊ��һ�����ڡ����磬19830905132800��830905132800��������Ϊ'1983-09-05 13:28:00'��
  • YYYYMMDD��YYMMDD��ʽ��һ�����֣����������Ϊ��һ�����ڡ����磬19830905��830905��������Ϊ'1983-09-05'��
  • һ������ֵ������һ��DATETIME, DATE��TIMESTAMP�����Ļ����н��ܵĺ���������NOW()��CURRENT_DATE��

���Ϸ�DATETIME, DATE��TIMESTAMPֵ���任���ʵ����͵ġ��㡱ֵ('0000-00-00 00:00:00', '0000-00-00'��00000000000000)��

���ڰ��������ڲ��ַָ�����ָ��Ϊ�ַ�����ֵ������ҪΪС��10���»����ֵָ��2λ���֣�'1979-6-9'��'1979-06-09'��һ���ġ�ͬ��, ���ڰ�����ʱ�䲿�ַָ�����ָ��Ϊ�ַ�����ֵ������ΪС��10��Сʱ���»���ָ��2λ���֣�'1979-10-30 1:2:3'��'1979-10-30 01:02:03'��һ���ġ�

ָ��Ϊ����Ӧ����6��8��12��14λ�������������8��14λ���������ٶ���YYYYMMDD��YYYYMMDDHHMMSS��ʽ���������ͷ4λ���ָ��������������6��12λ���������ٶ�����YYMMDD��YYMMDDHHMMSS��ʽ�������ͷ2λ���ָ�����������Щ����֮һ������ͨ���ǰͷ���㵽��ӽ��ij��������͡�

ָ��Ϊ�޷ָ������ַ��������Ǹ����ij��������͡�����ַ���������8��14���ַ�����ݱ��ٶ�ͷ4���ַ�������������ݱ��ٶ���ͷ2���ַ������������ַ����г��ֵĶ�����֣��ַ��������ұ߱����ͣ����ҳ��ꡢ�¡��ա�Сʱ�����Ӻ���ֵ������ζ�ţ��㲻Ӧ��ʹ������ 6 ���ַ����ַ��������磬�����ָ��'9903'����Ϊ������1999��3�£���ᷢ��MySQL��һ�����㡱���ڲ��뵽��ı��У�������Ϊ��ݺ��·�ֵ99��03���������ڲ��ֶ�ʧ(��)����˸�ֵ����һ���Ϸ������ڡ�

TIMESTAMP��ʹ�ñ�ָ����ֵ���������ȵĴ洢�Ϸ���ֵ����������ʾ��С�����м������⣺

  • ����ָ���꣬�£����գ���ʹ�����������TIMESTAMP(4)��TIMESTAMP(2)������ֵ������һ���Ϸ������ڲ���0�����洢��
  • �����ʹ��ALTER TABLE�ؿ�һ����խ��TIMESTAMP�У���ǰ�������Ρ�����Ϣ������ʾ��
  • ͬ������Сһ��TIMESTAMP�в��ᵼ����Ϣʧȥ�����˸о���ֵ����ʾʱ�����ٵ���Ϣ����ʾ����
  • ����TIMESTAMPֵ���洢Ϊ�������ȣ�ֱ�Ӳ����洢ֵ��Ψһ������UNIX_TIMESTAMP()���������������ڸ�ʽ���˵ļ�����ֵ�ϣ�����ζ���㲻��ʹ�ú�������HOUR()��SECOND()������TIMESTAMPֵ����ز��ֱ������ڸ�ʽ����ֵ�С����磬һ��TIMESTAMP�е�HH���ֲ�����ʾ��������ʾ��С������10������ڸ��̵�TIMESTAMPֵ������ʹ��HOUR()����һ��������Ľ����

��ij�̶ֳ��ϣ�����԰�һ���������͵�ֵ����һ����ͬ���������͵Ķ���Ȼ���������ֵ��һЩ�ı����Ϣ����ʧ��

  • ����㽫һ��DATEֵ����һ��DATETIME��TIMESTAMP���󣬽��ֵ��ʱ�䲿�ֱ�����Ϊ'00:00:00'����ΪDATEֵ������ʱ����Ϣ��
  • ����㽫һ��DATETIME��TIMESTAMPֵ����һ��DATE���󣬽��ֵ��ʱ�䲿�ֱ�ɾ������ΪDATE���Ͳ��洢ʱ����Ϣ��
  • ��ס������DATETIME, DATE��TIMESTAMPֵȫ��������ͬ���ĸ�ʽ����ָ�������������Ͳ�����ͬ����ֵ��Χ�����磬TIMESTAMPֵ���ܱ�1970����2037����������ζ�ţ�һ����������'1968-01-01'������Ϊһ��DATETIME��DATEֵ�Ϸ�ʱ��������һ����ȷTIMESTAMPֵ�����������ֵ������һ�������������任��0��

��ָ������ֵʱ������ijЩȱ�ݣ�

  • ������Ϊ�ַ���ָ��ֵ�Ŀ��ɸ�ʽ�ܱ���ƭ�����磬ֵ����'10:11:12'���ܿ�������ʱ��ֵ����Ϊ��:���ָ��������������һ��������ʹ�ã������Ľ���Ϊ��ݱ����ͳ�'2010-11-12'��ֵ'10:45:15'�����任��'0000-00-00'����Ϊ'45'����һ���Ϸ����·ݡ�
  • ��2λ����ָ������ֵ��ģ���ģ���Ϊ������δ֪�ġ�MySQLʹ�����й������2λ��ֵ��
    • ��00-69��Χ����ֵ���任��2000-2069��
    • �ڷ�70-99Χ����ֵ���任��1970-1999��

7.3.6.3 TIME����

MySQL��������'HH:MM:SS'��ʽ��ʾTIMEֵ(��Դ�Сʱֵ��'HHH:MM:SS'��ʽ)��TIMEֵ�ķ�Χ���Դ�'-838:59:59'��'838:59:59'��Сʱ���ֿ��ܴܺ�ĵ�ԭ����TIME���Ͳ������Ա�ʹ���ڱ�ʾһ���ʱ��(�������Dz���24��Сʱ)���������ڱ�ʾ��2���¼�֮�侭����ʱ���ʱ����(�������DZ�24��Сʱ��Щ���������Ǹ�ֵ)��

�����ö��и�ʽָ��TIMEֵ��

  • ��Ϊ'HH:MM:SS'��ʽ��һ���ַ����������ɡ����﷨������--�κα����ſ�����ʱ�䲿�ֵķָ��������磬'10:11:12'��'10.11.12'�ǵȼ۵ġ�
  • ��Ϊû�зָ�����'HHMMSS'��ʽ��һ���ַ������������Ϊһ��ʱ����͡����磬'101112'������Ϊ'10:11:12'������'109712'�Dz��Ϸ���(����������ķ��Ӳ���)�����'00:00:00'��
  • ��ΪHHMMSS��ʽ��һ�����֣�������ܽ���Ϊһ��ʱ�䡣���磬101112������Ϊ'10:11:12'��
  • ����ֵ����һ��TIME�����Ľ��ܵĺ���������CURRENT_TIME��

������Ϊ����һ��ʱ��ָ������ַ�����ָ����TIMEֵ������ΪС��10��Сʱ�����ӻ���ֵָ��2λ���֣�'8:3:2'��'08:03:02'��һ���ġ�

�����̵ġ�TIMEֵ��ֵ��һ��TIME������Ҫ����С�ġ�MySQLʹ������λ������ļ���������ֵ��(MySQL��TIMEֵ����Ϊ������ʱ�䣬������Ϊһ���ʱ�� )���磬������뵽'11:12'��'1112'��1112��ζ��'11:12:00'��11��12��)������MySQL��������Ϊ'00:11:12'��11��12��)��ͬ����'12'��12������Ϊ'00:00:12'��

���dz���TIME��Χ֮���ֵ�����Ϸ��ģ��������е���Χ�ʵ��Ķ˵�ֵ�����磬'-850:00:00'��'850:00:00'���任��'-838:59:59'��'838:59:59'��

���Ϸ���TIMEֵ���任��'00:00:00'��ע�⣬��Ȼ'00:00:00'������һ���Ϸ���TIMEֵ��û�������������ֱ��д洢��һ��'00:00:00'ֵ��ԭ����ֵ�Ƿ�ָ��Ϊ'00:00:00'�����Ƿ��Dz��Ϸ��ġ�

7.3.6.4 YEAR����

YEAR������һ�� 1 �ֽ��������ڱ�ʾ��ݡ�

MySQL����������YYYY��ʽ��ʾYEARֵ���䷶Χ��1901��2155��

�����ö��ָ�ʽָ��YEARֵ��

  • ��Ϊ��'1901'��'2155'��Χ��һ��4λ�ַ�����
  • ��Ϊ��1901��2155��Χ��һ��4λ���֡�
  • ��Ϊ��'00'��'99'��Χ��һ��2λ�ַ���.��'00'��'69'��'70'��'99'��Χ��ֵ���任����2000��2069��Χ��1970��1999��YEARֵ��
  • ��Ϊ��1��99��Χ��һ��2λ���֡��ڷ�Χ1��69��70��99��ֵ���任���ڷ�Χ2001��2069��1970��1999��YEAR��ֵ��ע�����2λ���ֵķ�Χ��΢��ͬ��2λ�����ַ����ķ�Χ����Ϊ�㲻��ֱ��ָ������Ϊһ�����ֲ��Ұ�������Ϊ2000����������Ϊһ���ַ���'0'��'00'ָ����������������Ϊ0000��
  • �䷵��ֵ����һ��YEAR�����Ļ����н��ܵĺ���������NOW()��

���Ϸ�YEARֵ���任��0000��

7.3.7 �ַ�������

�ַ���������CHAR��VARCHAR��BLOB��TEXT��ENUM��SET��

7.3.7.1 CHAR��VARCHAR����

CHAR��VARCHAR���������Ƶģ����������DZ��洢�ͼ����ķ�ʽ��ͬ��

һ��CHAR�еij��ȱ�����Ϊ���㴴���ʱ���������ij��ȡ����ȿ�����1��255֮����κ�ֵ������MySQL 3.23�У�CHAR���ȿ�����0��255��) ��CHARֵ���洢ʱ�����DZ��ÿո����ұ����ָ���ij��ȡ���CHARֵ������ʱ���Ϻ�Ŀո�ɾȥ��

��VARCHAR���е�ֵ�DZ䳤�ַ��������������һ��VARCHAR������1��255֮����κγ��ȣ������CHAR�С�Ȼ������CHAR�෴��VARCHARֵֻ�洢������ַ������һ���ֽڼ�¼���ȣ�ֵ��������෴����ֵ���洢ʱ���Ϻ�Ŀո�ɾȥ��������ո�ɾ����ͬ��ANSI SQL�淶����

������һ����������󳤶ȵ�ֵ����һ��CHAR��VARCHAR�У�ֵ���ض����ʺ�����

�±���ʾ���������͵��еIJ�ͬ��ͨ����ʾ�洢�䳤�ַ���ֵ��CHAR(4)��VARCHAR(4)�У�

ֵ CHAR(4) �洢���� VARCHAR(4) �洢����
'' ' ' 4 ���ֽ� '' 1 �ֽ�
'ab' 'ab ' 4 ���ֽ� 'ab' 3 ���ֽ�
'abcd' 'abcd' 4 ���ֽ� 'abcd' 5 ���ֽ�
'abcdefgh' 'abcd' 4 ���ֽ� 'abcd' 5 ���ֽ�

��CHAR(4)��VARCHAR(4)�м�����ֵ��ÿ������¶���һ���ģ���Ϊ�Ϻ�Ŀո�Ӽ�����CHAR���ϱ�ɾ����

��CHAR��VARCHAR���д洢�ͱȽ�ֵ���Դ�Сд�����ֵķ�ʽ���еģ����ǵ����ӱ�����ʱ��BINARY���Ա�ָ����BINARY������ζ�Ÿ��е�ֵ����MySQL�������������еĻ�����ASCII˳���Դ�Сд���ֵķ�ʽ�洢�ͱȽϡ�

BINARY�����ǡ�ճ�ԡ��ġ�����ζ�ţ���������BINARY��������һ������ʽ�У������ı���ʽ��Ϊһ��BINARYֵ���Ƚϡ�

MySQL�ڱ�����ʱ���������ظı�һ��CHAR��VARCHAR�е����͡���7.7.1 �����ĵ���˵���ı���

7.3.7.2 BLOB��TEXT����

һ��BLOB��һ���ܱ���ɱ����������ݵĶ����ƵĴ����4��BLOB����TINYBLOB��BLOB��MEDIUMBLOB��LONGBLOB�����������ܱ���ֵ����󳤶ȷ���������ͬ����7.3.1 �����ʹ洢������

4��TEXT����TINYTEXT��TEXT��MEDIUMTEXT��LONGTEXT��Ӧ��4��BLOB���ͣ�������ͬ������󳤶Ⱥʹ洢������BLOB��TEXT����֮���Ψһ����Ƕ�BLOBֵ������ͱȽ��Դ�Сд���з�ʽִ�У�����TEXTֵ�Ǵ�Сд�����еġ����仰˵��һ��TEXT��һ����Сд�����е�BLOB��

������һ��������������󳤶ȵ�ֵ����һ��BLOB��TEXT�У�ֵ���ض����ʺ�����

�ڴ�������棬�������Ϊһ��TEXT����������ϣ�����һ��VARCHAR�С�ͬ�����������Ϊһ��BLOB����һ��VARCHAR BINARY�С�����ǣ�

  • ��MySQL�汾3.23.2�͸��£�������BLOB��TEXT�������������ɵ�MySQL�汾��֧�������
  • ��ֵ���洢ʱ����BLOB��TEXT��û���Ϻ�ո��ɾ������Ϊ��VARCHAR����ɾ����
  • BLOB��TEXT�в�����DEFAULTֵ��

MyODBC����BLOBΪLONGVARBINARY��TEXTֵΪLONGVARCHAR��

��ΪBLOB��TEXTֵ�����Ƿdz����ģ���ʹ������ʱ�����������һЩ���ƣ�

  • �������Ҫ��һ��BLOB��TEXT����ʹ��GROUP BY��ORDER BY������뽫��ֵ�任��һ�����������������ı�׼��������SUBSTRING���������磺
    mysql> select comment from tbl_name,substring(comment,20) as substr ORDER BY substr;
    

    ����㲻��������������ʱ��ֻ���е���max_sort_length���ֽڱ�ʹ�ã�ȱʡ��max_sort_length��1024�����ֵ��������mysqld������ʱʹ��-Oѡ��ı䡣������ڰ���BLOB��TEXTֵ��һ������ʽ�Ϸ���(group)��ͨ��ָ���е�λ�û�ʹ��һ��������

    mysql> select id,substring(blob_col,1,100) from tbl_name
               GROUP BY 2;
    mysql> select id,substring(blob_col,1,100) as b from tbl_name
               GROUP BY b;
    
  • һ��BLOB��TEXT��������ߴ��������;��������������ڿͻ��������֮����ʵ�ʴ�������ֵ�ɿ��õ��ڴ�������ͨѶ�������Ĵ�С�����������ܸı���Ϣ��������С������������ڷ������Ϳͻ�����������10.2.3 ���ڷ�����������

ע�⣬ÿ��BLOB��TEXTֵ�ڲ���һ����������Ķ����ʾ���������е������������෴���������ڴ򿪱�ʱ�����б�����һ�δ洢��

7.3.7.3 ENUM����

һ��ENUM��һ���ַ�������ֵͨ����һ���ڱ�����ʱ��ȷ���оٵ�����ֵ��һ�ű���ѡ��

�����е�ij�������£�ֵҲ���Կ��ַ���("")��NULL��

  • ������һ����Чֵ���뵽һ��ENUM������һ������������ֵ�б��е��ַ���)�����ַ�����Ϊһ����������ֵ�����롣
  • ���һ��ENUM������ΪNULL��NULLҲ���еĺϷ�ֵ������ȱʡֵ��NULL�����һ��ENUM������ΪNOT NULL��ȱʡֵ������ֵ���б��ĵ�һ��Ա��

ÿö��ֵ��һ����ţ�

  • ����˵��������������Աֵ�б�ֵ�ô�1��ʼ��š�
  • ���ַ�������ֵ�ı��ֵ��0������ζ�ţ�����ʹ������SELECT����ҳ���������ЧENUMֵ���У�
    mysql> SELECT * FROM tbl_name WHERE enum_col=0;
    
  • NULLֵ�ı����NULL��

���磬ָ��ΪENUM("one", "two", "three")���п�������ʾ�������ֵ���κ�һ����ÿ��ֵ�ı��Ҳ����ʾ��

ֵ ���
NULL NULL
"" 0
"one" 1
"two" 2
"three" 3

ö�ٿ��������65535����Ա��

�����ֵ����һ��ENUM��ʱ����ĸ�Ĵ�Сд���޹ؽ�Ҫ�ġ�Ȼ�����Ժ�����м�����ֵ��Сдƥ���ڱ�����ʱ����ָ������ֵ��ֵ�Ĵ�Сд��

�������һ�����ֵ������Ļ����м���һ��ENUM����ֵ�ı�ű����ء������洢һ�����ֵ�һ��ENUM�У����ֱ�����һ����ţ����Ҵ洢��ֵ�Ǹñ�ŵ�ö�ٳ�Ա��

ENUMֵ������˵���оٵ�ö�ٳ�Ա�Ĵ������򡣣����仰˵��ENUMֵ�������ǵı�����ֱ�����) ���磬��ENUM("a", "b")��"a"����"b"ǰ�棬���Ƕ�ENUM("b", "a")��"b"����"a"ǰ�档���ַ�������ǿ��ַ���֮ǰ������NULL������������ö��ֵ֮ǰ��

�������Ҫ�õ�һ��ENUM�е����п��ܵ�ֵ����Ӧ��ʹ�ã�SHOW COLUMNS FROM table_name LIKE enum_column_name���ҷ����ڵڶ��е�ENUM���塣

7.3.7.4 SET����

һ��SET�ǿ����������ֵ��һ���ַ���������ÿһ������ӱ������챻ָ���˵�����ֵ��һ���б��б�ѡ���ɶ�����ϳ�Ա��ɵ�SET��ͨ�����ɶ��ŷָ�(��,��)�ij�Ա��ָ�����������Ǹ�SET��Աֵ���ܰ������ű�����

����, һ��ָ��ΪSET("one", "two") NOT NULL���п�������Щֵ���κ�һ����

"" 
"one" 
"two" 
"one,two"

һ��SET�������64����ͬ�ij�Ա�� 

MySQL������ֵ�洢SETֵ���洢ֵ�ĵͽ�λ��Ӧ�ڵ�һ�����ϳ�Ա��������������������м���һ��SETֵ��������ֵ��λ����λ��Ӧ�����ֵ�ļ��ϳ�Ա�����һ�����ֱ��洢��һ��SET�У������ֵĶ����Ʊ�ʾ�����õ�λ�����������еļ��ϳ�Ա���ٶ�һ���б�ָ��ΪSET("a","b","c","d")����ô��Ա������λֵ��

SET ��Ա ʮ���Ƶ�ֵ �����Ƶ�ֵ
a 1 0001
b 2 0010
c 4 0100
d 8 1000

���������и�ֵ9���������Ƶ�1001��������һ���͵��ĸ�SETֵ��Ա"a"��"d"��ѡ���ҽ��ֵ��"a,d"��

���ڰ�������һ��SET��Ա��ֵ���������ֵʱ������ν��ʲô˳���о�ֵ��Ҳ����ν������ֵ�о��˶��ٴΡ����Ժ����ֵʱ����ֵ�е�ÿ����Ա������һ�Σ����������ڱ�����ʱ��ָ����˳���г���Ա�����磬�����ָ��ΪSET("a","b","c","d")����ô"a,d"��"d,a"��"d,a,a,d,d"�ڼ���ʱ������Ϊ"a,d"���֡�

SETֵ�����ִ�������NULLָ���ڷ�NULL SETֵ֮ǰ��

ͨ������ʹ��LIKE��������FIND_IN_SET()����ִ����һ��SET�ϵ�һ��SELECT��

mysql> SELECT * FROM tbl_name WHERE set_col LIKE '%value%';
mysql> SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;

��������Ҳ�Ṥ����

mysql> SELECT * FROM tbl_name WHERE set_col = 'val1,val2';
mysql> SELECT * FROM tbl_name WHERE set_col & 1;

��Щ���ĵ�һ�����Ѱ��һ����ȷ��ƥ�䡣�ڶ���Ѱ�Ұ�����һ�����ϳ�Ա��ֵ��

�������Ҫ�õ�һ��SET�е����п��ܵ�ֵ����Ӧ��ʹ�ã�SHOW COLUMNS FROM table_name LIKE set_column_name���ҷ����ڵڶ��е�SET���塣

7.3.8 Ϊ��ѡ����ȷ������

Ϊ������Ч��ʹ�ô洢�ռ䣬���������е������ʹ���ȷ�����͡����磬���һ�������б�������֮��1��99999��ֵ�� MEDIUMINT UNSIGNED����õ����͡�

����ֵ�ľ�ȷ��ʾ��һ�����������⡣��MySQL����Ӧ��ʹ��DECIMAL���ͣ�����Ϊһ���ַ������洢�����ᷢ����ȷ�Ե���ʧ�������ȷ�Բ���̫��Ҫ��DOUBLE����Ҳ���㹻�õġ�

�Ը߾��ȣ��������ܱ任����һ��BIGINT�洢�Ķ������͡��������������������еļ��㣬���ҽ��ڱ�Ҫʱ�����ת���ظ���ֵ����10.6 ѡ��һ����������

7.3.9 ������

���е�MySQL�������ܱ�����������ص����ϵ�ʹ�������ǸĽ�SELECT�������ܵ���÷�����

һ����������16���������������������256���ֽڣ�����������ڱ���MySQLʱ���ı䡣

����CHAR��VARCHAR�У�����������е�ǰ׺������첢�ұ�������������Ҫ���ٵĴ��̿ռ䡣��CREATE TABLE�����������ǰ׺���﷨��������������

KEY index_name (col_name(length)) 

���������Ϊname�е�ͷ10���ַ�����һ��������

mysql> CREATE TABLE test (
           name CHAR(200) NOT NULL,
           KEY index_name (name(10)));

����BLOB��TEXT�У�����������е�ǰ׺���㲻�������е�ȫ����

7.3.10 ��������

MySQL���ڶ�����ϴ���������һ���������������15������ɡ�����CHAR��VARCHAR���ϣ���Ҳ����ʹ���е�ǰ׺��Ϊһ�������IJ���)��

һ������������������Ϊ�ǰ���ͨ���ϲ�(concatenate)������ֵ������ֵ��һ���������顣

����Ϊ��һ��WHERE�Ӿ������ĵ�һ��ָ����֪������ʱ��MySQL�����ַ�ʽʹ�ö���������ʹ�ò�ѯ�dz����٣���ʹ�㲻Ϊ������ָ��ֵ��

�ٶ�һ�ű�ʹ������˵��������

mysql> CREATE TABLE test (
           id INT NOT NULL,
           last_name CHAR(30) NOT NULL,
           first_name CHAR(30) NOT NULL,
           PRIMARY KEY (id),
           INDEX name (last_name,first_name));

��ô����name��һ����last_name��first_name�ϵ������������������������last_name��last_name��first_name��һ����֪��Χ��ָ��ֵ�IJ�ѯ����ˣ�name������ʹ�������в�ѯ�У�

mysql> SELECT * FROM test WHERE last_name="Widenius";

mysql> SELECT * FROM test WHERE last_name="Widenius"
                          AND first_name="Michael";

mysql> SELECT * FROM test WHERE last_name="Widenius"
                          AND (first_name="Michael" OR first_name="Monty");

mysql> SELECT * FROM test WHERE last_name="Widenius"
                          AND first_name >="M" AND first_name < "N";

Ȼ����name����������������ѯ���У�

mysql> SELECT * FROM test WHERE first_name="Michael";

mysql> SELECT * FROM test WHERE last_name="Widenius"
                          OR first_name="Michael";

����MySQLʹ�������Ľ����ܵķ�ʽ�ĸ������Ϣ����10.4 ʹ��MySQL������

7.3.11 ʹ�������������ݿ������������

Ϊ�˸����׵�ʹ��Ϊ������Ӧ�̵�SQLʵ�ֱ�д�Ĵ��룬�±���ʾ��MySQLӳ��������͡���Щӳ��ʹ�ô��������ݿ������ƶ������嵽MySQL�����ף�

������Ӧ������ MySQL����
BINARY(NUM) CHAR(NUM) BINARY
CHAR VARYING(NUM) VARCHAR(NUM)
FLOAT4 FLOAT
FLOAT8 DOUBLE
INT1 TINYINT
INT2 SMALLINT
INT3 MEDIUMINT
INT4 INT
INT8 BIGINT
LONG VARBINARY MEDIUMBLOB
LONG VARCHAR MEDIUMTEXT
MIDDLEINT MEDIUMINT
VARBINARY(NUM) VARCHAR(NUM) BINARY

������ӳ�䷢���ڱ�����ʱ���������������Ӧ��ʹ�õ����ʹ���������ô����һ��DESCRIBE tbl_name��䣬MySQLʹ�õȼ۵�MySQL���ͱ�����ṹ��

7.4 ����SELECT��WHERE�Ӿ��еĺ���

��һ��SQL����е�select_expression��where_definition����ʹ�����������ĺ������κα���ʽ��ɡ�

����NULL��һ������ʽ���Dz���һ��NULLֵ��������DZ���ʽ�������IJ������ͺ������ĵ���˵����

ע�⣺��һ���������͸�����������֮�䲻��û�пո������MySQL���������ֺ������ú;�����ͬ���ֵĶԱ����е����ã����������ڲ�����Χ�пո�

Ϊ�˼�࣬��������д��ʽ��ʾ��mysql�����������ˣ�

mysql> select MOD(29,9); 
1 rows in set (0.00 sec) 

+-----------+
| mod(29,9) |
+-----------+
|         2 |
+-----------+

����ʾΪ������

mysql> select MOD(29,9);
        -> 2

7.4.1 ���麯��

( ... )
���š�ʹ��������ǿ����һ������ʽ�ļ���˳��
mysql> select 1+2*3;
        -> 7
mysql> select (1+2)*3;
        -> 9

7.4.2 ���õ���������

һ��������������ǿ��õġ�ע����-��+��*����£�������������������������BIGINT��64λ�����ȼ��㣡  

+
�ӷ�
mysql> select 3+5;
        -> 8
-
����
mysql> select 3-5;
        -> -2  
*
�˷�
mysql> select 3*5;
        -> 15
mysql> select 18014398509481984*18014398509481984.0;
        -> 324518553658426726783156020576256.0
mysql> select 18014398509481984*18014398509481984;
        -> 0

���һ������ʽ�Ľ���Dz���ȷ�ģ���Ϊ�����˻��Ľ��������BIGINT�����64λ��Χ��

/
����
mysql> select 3/5;
        -> 0.60

���������һ��NULL�����

mysql> select 102/(1-1);
        -> NULL

һ��������BIGINT�������㣬ֻҪ�����Ľ����ת����һ����������������ִ�У�

7.4.3 ���

MySQLΪλ����ʹ��BIGINT��64λ)�㷨�������Щ�����������64λ��һ����Χ��

|
�
mysql> select 29 | 15;
        -> 31
&
�
mysql> select 29 & 15;
        -> 13
 
<<
����λһ����(BIGINT)���֡�
mysql> select 1 << 2
        -> 4
 
>>
����λһ����(BIGINT)���֡�
mysql> select 4 >> 2
        -> 1 
~
�ߵ����е�λ��
mysql> select 5 & ~1
        -> 4
 
BIT_COUNT(N)
�����ڲ���N�趨��λ��������
mysql> select BIT_COUNT(29);
        -> 4
  

7.4.4 �߼�����

���е��߼���������1��TRUE����0��FALSE����

NOT
!
�߼��ǡ����������0������1�����򷵻�0�����⣺ NOT NULL����NULL��
mysql> select NOT 1;
        -> 0
mysql> select NOT NULL;
        -> NULL
mysql> select ! (1+1);
        -> 0
mysql> select ! 1+1;
        -> 1
�������ӷ���1����Ϊ����ʽ��Ϊ(!1)+1���㡣   
OR
��
||
�߼�������κ�һ����������0���Ҳ�NULL������1��
mysql> select 1 || 0;
        -> 1
mysql> select 0 || 0;
        -> 0
mysql> select 1 || NULL;
        -> 1
 
AND
��
&&
�߼��롣����κ�һ��������0��NULL������0�����򷵻�1��
mysql> select 1 && NULL;
        -> 0
mysql> select 1 && 0;
        -> 0
   

7.4.5 �Ƚ������

�Ƚϲ����ó�ֵ1��TRUE����0��FALSE����NULL�Ƚ������Щ�����������������ֺ��ַ����ϡ�����Ҫʱ���ַ����Զ��ر��任�����������ֵ��ַ���(����Perl)��

MySQLʹ�����й���ִ�бȽϣ�

  • ���һ��������������NULL���ȽϵĽ����NULL������<=>��������
  • ����ڱȽ��в����������������ַ�����������Ϊ�ַ������Ƚϡ�
  • �������������������������Ϊ�������Ƚϡ�
  • ʮ�����Ƶ�ֵ�������һ�����ֱȽϣ��򱻵����������ַ�����
  • �������֮һ��һ��TIMESTAMP��DATETIME�ж�����������һ���������ڱȽ�ִ��ǰ��������ת��Ϊһ��ʱ���ǡ���������Ϊ�˶�ODBC���Ѻá�
  • ����������������£�������Ϊ����(ʵ��)���ֱ��Ƚϡ�

ȱʡ�أ��ַ���ʹ�õ�ǰ���ַ����Դ�Сд���еķ�ʽ����(ȱʡΪISO-8859-1 Latin1������Ӣ�����õúܳ�ɫ)��

�����������ʾ�˶��ڱȽϲ����ַ��������ֵ�ת����

mysql> SELECT 1 > '6x';
         -> 0
mysql> SELECT 7 > '6x';
         -> 1
mysql> SELECT 0 > 'x6';
         -> 0
mysql> SELECT 0 = 'x6';
         -> 1
=
����
mysql> select 1 = 0;
        -> 0
mysql> select '0' = 0;
        -> 1
mysql> select '0.0' = 0;
        -> 1
mysql> select '0.01' = 0;
        -> 0
mysql> select '.01' = 0.01;
        -> 1
    
<>
��
!=
������
mysql> select '.01' <> '0.01';
        -> 1
mysql> select .01 <> '0.01';
        -> 0
mysql> select 'zapp' <> 'zappp';
        -> 1
<=
С�ڻ����
mysql> select 0.1 <= 2;
        -> 1
 
<
��
mysql> select 2 <= 2;
        -> 1
  
>=
���ڻ����
mysql> select 2 >= 2;
        -> 1 
>
����
mysql> select 2 > 2;
        -> 0
<=>
��ȫ����Null
mysql> select 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1 1 0
  
IS NULL
��
IS NOT NULL
����ֵ�Ƿ��ǻ���NULL
mysql> select 1 IS NULL, 0 IS NULL, NULL IS NULL:
        -> 0 0 1
mysql> select 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;
 
expr BETWEEN min AND max
���expr�Դ��ڻ����min��expr��С�ڻ����max��BETWEEN����1������������0��������еIJ���������һ���ã���ȼ��ڱ���ʽ(min <= expr AND expr <= max)����һ������(expr)�����Ƚ���α�ִ�С����expr��һ����Сд�����е��ַ�������ʽ������һ����Сд�����е��ַ����Ƚϡ����expr��һ����Сд���е��ַ�������ʽ������һ����Сд���е��ַ����Ƚϡ����expr��һ����������ʽ�����������Ƚϡ����򣬽���һ������(ʵ��)�Ƚϡ�
mysql> select 1 BETWEEN 2 AND 3;
        -> 0
mysql> select 'b' BETWEEN 'a' AND 'c';
        -> 1
mysql> select 2 BETWEEN 2 AND '3';
        -> 1
mysql> select 2 BETWEEN 2 AND 'x-3';
        -> 0
expr IN (value,...)
���expr����IN���е��κ�ֵ������1�����򷵻�0��������е�ֵ�dz�������ô���е�ֵ����expr���ͱ����������Ȼ����Ŀ���������ö����Ƶ�������ɡ�����ζ�����INֵ��ȫ���ɳ��������IN�Ǻܿ�ġ����expr��һ����Сд���е��ַ�������ʽ���ַ����Ƚ��Դ�Сд���з�ʽִ�С�
mysql> select 2 IN (0,3,5,'wefwf');
        -> 0
mysql> select 'wefwf' IN (0,3,5,'wefwf');
        -> 1 
expr NOT IN (value,...)
��NOT (expr IN (value,...))��ͬ��
ISNULL(expr)
���expr��NULL��ISNULL()����1������������0��
mysql> select ISNULL(1+1);
        -> 0
mysql> select ISNULL(1/0);
        -> 1

ע�⣬ʹ��=��NULL��ֵ�Ƚ���Ϊ�٣�

COALESCE(list)
����list�е�һ����NULL�ĵ�Ԫ��
mysql> select COALESCE(NULL,1);
        -> 1
mysql> select COALESCE(NULL,NULL,NULL);
        -> NULL
INTERVAL(N,N1,N2,N3,...)
���N< N1������0�����N< N2������1�ȵȡ����еIJ���������������Ϊ�˺�������ȷ�ع�������Ҫ��N1<N2<N3< ...<Nn��������Ϊʹ�ö���������(�ܿ�)��
mysql> select INTERVAL(23, 1, 15, 17, 30, 44, 200);
        -> 3
mysql> select INTERVAL(10, 1, 10, 100, 1000);
        -> 2
mysql> select INTERVAL(22, 23, 30, 44, 200);
        -> 0  

7.4.6 �ַ����ȽϺ���

ͨ����������ַ����Ƚ��е��κα���ʽ�����ִ�Сд�ģ��Ƚ��Դ�Сд���еķ�ʽִ�С�

expr LIKE pat [ESCAPE 'escape-char']
ʹ��SQL�ļ򵥵��������ʽ�Ƚϵ�ģʽƥ�䡣����1��TRUE����0��FALSE������LIKE���������ģʽ��ʹ������2��ͨ����ַ���
% ƥ���κ���Ŀ���ַ�����������ַ�
_ ��ȷƥ��һ���ַ�
mysql> select 'David!' LIKE 'David_';
        -> 1
mysql> select 'David!' LIKE '%D%v%';
        -> 1

Ϊ�˲���һ��ͨ���������ʵ������ת���ַ��ļ����ַ�ǰ�档����㲻ָ��ESCAPE�ַ����ٶ�Ϊ��\����

\% ƥ��һ%�ַ�
\_ ƥ��һ_�ַ�
mysql> select 'David!' LIKE 'David\_';
        -> 0
mysql> select 'David_' LIKE 'David\_';
        -> 1

Ϊ��ָ��һ����ͬ��ת���ַ���ʹ��ESCAPE�Ӿ䣺 
mysql> select 'David_' LIKE 'David|_' ESCAPE '|';
        -> 1

LIKE�����������ֵı���ʽ�ϣ�������MySQL��ANSI SQL LIKE��һ�����䡣)

mysql> select 10 LIKE '1%';
        -> 1

ע�⣺��ΪMySQL���ַ�����ʹ��Cת���﷨(���磬��\n��)������������LIKE�ַ������ظ��κ���\�������磬Ϊ�˲�����\n����ָ����Ϊ�� \\n����Ϊ�˲�����\����ָ����Ϊ��\\\\������б�߱���������ȥһ�Σ���һ������ģʽƥ�����ʱ������һ�������ķ�б�߱�ƥ��)��

expr NOT LIKE pat [ESCAPE 'escape-char']
��NOT (expr LIKE pat [ESCAPE 'escape-char'])��ͬ��
expr REGEXP pat
��
expr RLIKE pat
ִ��һ���ַ�������ʽexpr��һ��ģʽpat��ģʽƥ�䡣ģʽ������һ��������������ʽ����MySQL �������ʽ�䷨�� H ����.���exprƥ��pat������1�����򷵻�0��RLIKE��REGEXP��һ��ͬ��ʣ��ṩ����mSQL�ļ����ԡ�ע�⣺��ΪMySQL���ַ�����ʹ��Cת���﷨(���磬��\n��), ����������REGEXP�ַ����ظ��κ���\������MySQL3.23.4�У�REGEXP����������(���Ƕ�����)�ַ����Ǻ��Դ�Сд��
mysql> select 'Monty!' REGEXP 'm%y%%';
        -> 0
mysql> select 'Monty!' REGEXP '.*';
        -> 1
mysql> select 'new*\n*line' REGEXP 'new\\*.\\*line';
        -> 1
mysql> select "a" REGEXP "A", "a" REGEXP BINARY "A";
        -> 1  0
������һ���ַ�������ʱ��REGEXP��RLIKEʹ�õ�ǰ���ַ���(ȱʡΪISO-8859-1 Latin1)��
expr NOT REGEXP pat
��
expr NOT RLIKE pat
��NOT (expr REGEXP pat)��ͬ��
STRCMP(expr1,expr2)
����ַ�����ͬ��STRCMP()����0�������һ�������ݵ�ǰ���������С�ڵڶ���������-1�����򷵻�1��
mysql> select STRCMP('text', 'text2');
        -> -1
mysql> select STRCMP('text2', 'text');
        -> 1
mysql> select STRCMP('text', 'text');
        -> 0
 

7.4.7 ����ת�������

BINARY
BINARY������ǿ�Ƹ�����������ַ���Ϊһ���������ַ�������ʹ��û������ΪBINARY��BLOB������һ��ǿ���бȽ����ִ�Сд�ļ��׷�����
mysql> select "a" = "A";
        -> 1
mysql> select BINARY "a" = "A";
        -> 0

BINARY��MySQL 3.23.0�б����롣

7.4.8 ����������

IFNULL(expr1,expr2)
���expr1����NULL��IFNULL()����expr1������������expr2��IFNULL()����һ�����ֻ��ַ���ֵ��ȡ��������ʹ�õ������Ļ�����
mysql> select IFNULL(1,0);
        -> 1
mysql> select IFNULL(0,10);
        -> 0
mysql> select IFNULL(1/0,10);
        -> 10
mysql> select IFNULL(1/0,'yes');
        -> 'yes'
 
IF(expr1,expr2,expr3)
���expr1��TRUE(expr1<>0��expr1<>NULL)����ôIF()����expr2������������expr3��IF()����һ�����ֻ��ַ���ֵ��ȡ��������ʹ�õ������ġ�
mysql> select IF(1>2,2,3);
        -> 3
mysql> select IF(1<2,'yes','no');
        -> 'yes'
mysql> select IF(strcmp('test','test1'),'yes','no');
        -> 'no'

expr1��Ϊ����ֵ�����㣬����ζ����������ڲ��Ը�����ַ���ֵ����Ӧ��ʹ��һ���Ƚϲ���������

mysql> select IF(0.1,1,0);
        -> 0
mysql> select IF(0.1<>0,1,0);
        -> 1

������ĵ�һ������У�IF(0.1)����0����Ϊ0.1���任������ֵ, ���²���IF(0)������ܲ����������ġ��ڵڶ�������У��Ƚϲ���ԭ���ĸ���ֵ�����Ƿ��Ƿ��㣬�ȽϵĽ��������һ��������

CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
��
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
��һ���汾����result������value=compare-value���ڶ����汾�������һ������Ϊ�棬����result�����û��ƥ���resultֵ����ô�����ELSE���result�����ء����û��ELSE���֣���ôNULL�����ء�
mysql> SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END;
       -> "one"
mysql> SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END;
       -> "true"
mysql> SELECT CASE BINARY "B" when "a" then 1 when "b" then 2 END;
       -> NULL

7.4.9 ��ѧ����

���е���ѧ������һ������������·���NULL��

-
��Ŀ�����ı�����ķ��š�
mysql> select - 2;
ע�⣬��������������һ��BIGINTʹ�ã�����ֵ��һ��BIGINT������ζ����Ӧ�ñ�����������ʹ��-���ǿ�����ֵ-2^63�� 
ABS(X)
����X�ľ���ֵ��
mysql> select ABS(2);
        -> 2
mysql> select ABS(-32);
        -> 32

�ù��ܿɰ�ȫ����BIGINTֵ��

SIGN(X)
���ز����ķ��ţ�Ϊ-1��0��1��ȡ����X�Ƿ��Ǹ��������������
mysql> select SIGN(-32);
        -> -1
mysql> select SIGN(0);
        -> 0
mysql> select SIGN(234);
        -> 1
   
MOD(N,M)
��
%
ģ (����C�е�%������)������N��M����������
mysql> select MOD(234, 10);
        -> 4
mysql> select 253 % 7;
        -> 1
mysql> select MOD(29,9);
        -> 2
��������ɰ�ȫ����BIGINTֵ��  
FLOOR(X)
���ز�����X���������ֵ��

    
mysql> select FLOOR(1.23);
        -> 1
mysql> select FLOOR(-1.23);
        -> -2
ע�ⷵ��ֵ���任Ϊһ��BIGINT��  
CEILING(X)
���ز�С��X����С����ֵ��
mysql> select CEILING(1.23);
        -> 2
mysql> select CEILING(-1.23);
        -> -1

ע�ⷵ��ֵ���任Ϊһ��BIGINT��

ROUND(X)
���ز���X�����������һ��������
mysql> select ROUND(-1.23);
        -> -1
mysql> select ROUND(-1.58);
        -> -2
mysql> select ROUND(1.58);
        -> 2
 

ע�ⷵ��ֵ���任Ϊһ��BIGINT!

ROUND(X,D)
���ز���X�������������DΪС����һ�����֡����DΪ0�������û��С�����С�����֡�
mysql> select ROUND(1.298, 1);
        -> 1.3
mysql> select ROUND(1.298, 0);
        -> 1

ע�ⷵ��ֵ���任Ϊһ��BIGINT!

EXP(X)
����ֵe����Ȼ�����ĵף���X�η���
mysql> select EXP(2);
        -> 7.389056
mysql> select EXP(-2);
        -> 0.135335
 
LOG(X)
����X����Ȼ������
mysql> select LOG(2);
        -> 0.693147
mysql> select LOG(-2);
        -> NULL

�������Ҫһ������X�������B�Ķ�����ʹ�ù�ʽLOG(X)/LOG(B)��

LOG10(X)
����X����10Ϊ�׵Ķ�����
mysql> select LOG10(2);
        -> 0.301030
mysql> select LOG10(100);
        -> 2.000000
mysql> select LOG10(-100);
        -> NULL
POW(X,Y)
��
POWER(X,Y)
����ֵX��Y���ݡ�
mysql> select POW(2,2);
        -> 4.000000
mysql> select POW(2,-2);
        -> 0.250000
SQRT(X)
���طǸ���X��ƽ������
mysql> select SQRT(4);
        -> 2.000000
mysql> select SQRT(20);
        -> 4.472136
 
PI()
����PI��ֵ��Բ���ʣ���
mysql> select PI();
        -> 3.141593
COS(X)
����X������, ������X�Ի��ȸ�����
mysql> select COS(PI());
        -> -1.000000
 
SIN(X)
����X������ֵ���ڴ�X�Ի��ȸ�����
mysql> select SIN(PI());
        -> 0.000000
 
TAN(X)
����X������ֵ���ڴ�X�Ի��ȸ�����
mysql> select TAN(PI()+1);
        -> 1.557408
 
ACOS(X)
����X�����ң���������ֵ��X�����X����-1��1�ķ�Χ������NULL��
mysql> select ACOS(1);
        -> 0.000000
mysql> select ACOS(1.0001);
        -> NULL
mysql> select ACOS(0);
        -> 1.570796
 
ASIN(X)
����X������ֵ����������ֵ��X��L���X����-1��1�ķ�Χ������NULL��
mysql> select ASIN(0.2);
        -> 0.201358
mysql> select ASIN('foo');
        -> 0.000000
 
ATAN(X)
����X�ķ�����ֵ����������ֵ��X��
mysql> select ATAN(2);
        -> 1.107149
mysql> select ATAN(-2);
        -> -1.107149
ATAN2(X,Y)
����2������X��Y�ķ����С��������ڼ���Y/X�ķ����У��������������ķ��ű�����������������ޡ�
mysql> select ATAN(-2,2);
        -> -0.785398
mysql> select ATAN(PI(),0);
        -> 1.570796 
COT(X)
����X������
mysql> select COT(12);
        -> -1.57267341
mysql> select COT(0);
        -> NULL
RAND()
��
RAND(N)
�����ڷ�Χ0��1.0�ڵ��������ֵ�����һ����������N��ָ����������������ֵ��
mysql> select RAND();
        -> 0.5925
mysql> select RAND(20);
        -> 0.1811
mysql> select RAND(20);
        -> 0.1811
mysql> select RAND();
        -> 0.2079
mysql> select RAND();
        -> 0.7888

�㲻����һ��ORDER BY�Ӿ���RAND()ֵʹ���У���ΪORDER BY���ظ������ж�Ρ�Ȼ����MySQL3.23�У���������� SELECT * FROM table_name ORDER BY RAND()�����������ڵõ�һ������SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000�ļ��ϵ����������ע����һ��WHERE�Ӿ����һ��RAND()����ÿ��WHERE��ִ��ʱ����������

LEAST(X,Y,...)
��2��2�����ϵIJ�����������С(��Сֵ)�IJ���������ʹ�����й�����бȽϣ�
  • �������ֵ��ʹ����һ��INTEGER�����ģ������еIJ�����������ֵ��������Ϊ�����Ƚϡ�
  • �������ֵ��ʹ����һ��REAL�����ģ������еIJ�����ʵ��ֵ��������Ϊʵ���Ƚϡ�
  • ����κβ�����һ����С���е��ַ�����������Ϊ��Сд���е��ַ������Ƚϡ�
  • ������������£�������Ϊ��Сд�޹ص��ַ������Ƚϡ�
mysql> select LEAST(2,0);
        -> 0
mysql> select LEAST(34.0,3.0,5.0,767.0);
        -> 3.0
mysql> select LEAST("B","A","C");
        -> "A"

��MySQL 3.22.5��ǰ�İ汾�������ʹ��MIN()������LEAST��

GREATEST(X,Y,...)
�������(���ֵ)�IJ���������ʹ����LEASTһ���Ĺ�����бȽϡ�
mysql> select GREATEST(2,0);
        -> 2
mysql> select GREATEST(34.0,3.0,5.0,767.0);
        -> 767.0
mysql> select GREATEST("B","A","C");
        -> "C"
��MySQL�� 3.22.5 ��ǰ�İ汾, ����ʹ��MAX()������GREATEST.  
DEGREES(X)
���ز���X���ӻ��ȱ任Ϊ�Ƕȡ�
mysql> select DEGREES(PI());
        -> 180.000000
RADIANS(X)
���ز���X���ӽǶȱ任Ϊ���ȡ�
mysql> select RADIANS(90);
        -> 1.570796
TRUNCATE(X,D)
��������X���ض�ΪDλС�������DΪ0�������û��С�����С�����֡�
mysql> select TRUNCATE(1.223,1);
        -> 1.2
mysql> select TRUNCATE(1.999,1);
        -> 1.9
mysql> select TRUNCATE(1.999,0);
        -> 1
 

7.4.10 �ַ�������

�������ij��ȴ��ڷ���������max_allowed_packet���ַ���ֵ��������NULL����10.2.3 ���ڷ�����������

��������ַ���λ�õIJ�������һ��λ�ñ����Ϊ1��

ASCII(str)
�����ַ���str���������ַ���ASCII����ֵ�����str�ǿ��ַ���������0�����str��NULL������NULL��
mysql> select ASCII('2');
        -> 50
mysql> select ASCII(2);
        -> 50
mysql> select ASCII('dx');
        -> 100

Ҳ�ɲμ�ORD()������

ORD(str)
����ַ���str�������ַ���һ�����ֽ��ַ���ͨ���Ը�ʽ((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]�����ַ���ASCII����ֵ�����ض��ֽ��ַ����롣�����������ַ�����һ�����ֽ��ַ���������ASCII()�������ص���ֵͬ��
mysql> select ORD('2');
        -> 50
 
CONV(N,from_base,to_base)
�ڲ�ͬ�����ֻ�֮��任���֡���������N���ַ������֣���from_base���任Ϊto_base��������κβ�����NULL������NULL������N����Ϊһ�����������ǿ���ָ��Ϊһ��������һ���ַ�������С����2�����Ļ���36�����to_base��һ��������N����Ϊ��һ���з�����������N�������޷������� CONV��64λ�㾫�ȹ�����
mysql> select CONV("a",16,2);
        -> '1010'
mysql> select CONV("6E",18,8);
        -> '172'
mysql> select CONV(-17,10,-18);
        -> '-H'
mysql> select CONV(10+"10"+'10'+0xa,10,10);
        -> '40'
 
BIN(N)
���ض�����ֵN��һ���ַ�����ʾ���ڴ�N��һ��������(BIGINT)���֣���ȼ���CONV(N,10,2)�����N��NULL������NULL��
mysql> select BIN(12);
        -> '1100'
OCT(N)
���ذ˽���ֵN��һ���ַ����ı�ʾ���ڴ�N��һ�����������֣���ȼ���CONV(N,10,8)�����N��NULL������NULL��
mysql> select OCT(12);
        -> '14'
 
HEX(N)
����ʮ������ֵNһ���ַ����ı�ʾ���ڴ�N��һ��������(BIGINT)���֣���ȼ���CONV(N,10,16)�����N��NULL������NULL��
mysql> select HEX(255);
        -> 'FF'
 
CHAR(N,...)
CHAR()����������Ϊ�������ҷ�������Щ������ASCII�����ַ���ɵ�һ���ַ�����NULLֵ��������
mysql> select CHAR(77,121,83,81,'76');
        -> 'MySQL'
mysql> select CHAR(77,77.3,'77.3');
        -> 'MMM'
 
CONCAT(str1,str2,...)
���������ڲ���������ַ���������κβ�����NULL������NULL�������г���2���IJ�����һ�����ֲ������任Ϊ�ȼ۵��ַ�����ʽ��
mysql> select CONCAT('My', 'S', 'QL');
        -> 'MySQL'
mysql> select CONCAT('My', NULL, 'QL');
        -> NULL
mysql> select CONCAT(14.3);
        -> '14.3'
LENGTH(str)
��
OCTET_LENGTH(str)
��
CHAR_LENGTH(str)
��
CHARACTER_LENGTH(str)
�����ַ���str�ij��ȡ�
mysql> select LENGTH('text');
        -> 4
mysql> select OCTET_LENGTH('text');
        -> 4

ע�⣬���ڶ��ֽ��ַ�����CHAR_LENGTH()������һ�Ρ�

LOCATE(substr,str)
��
POSITION(substr IN str)
�����Ӵ�substr���ַ���str��һ�����ֵ�λ�ã����substr������str���棬����0.
mysql> select LOCATE('bar', 'foobarbar');
        -> 4
mysql> select LOCATE('xbar', 'foobar');
        -> 0
�ú����Ƕ��ֽڿɿ��ġ�  
LOCATE(substr,str,pos)
�����Ӵ�substr���ַ���str��һ�����ֵ�λ�ã���λ��pos��ʼ�����substr������str���棬����0��
mysql> select LOCATE('bar', 'foobarbar',5);
        -> 7

�⺯���Ƕ��ֽڿɿ��ġ�

INSTR(str,substr)
�����Ӵ�substr���ַ���str�еĵ�һ�����ֵ�λ�á�������2��������ʽ��LOCATE()��ͬ�����˲������ߵ���
mysql> select INSTR('foobarbar', 'bar');
        -> 4
mysql> select INSTR('xbar', 'foobar');
        -> 0

�⺯���Ƕ��ֽڿɿ��ġ�

LPAD(str,len,padstr)
�����ַ���str���������ַ���padstr�ֱ��str��len���ַ�����
mysql> select LPAD('hi',4,'??');
        -> '??hi'
 
RPAD(str,len,padstr)
�����ַ���str���������ַ���padstr�ֱ��str��len���ַ�����  
mysql> select RPAD('hi',5,'?');
        -> 'hi???'
LEFT(str,len)
�����ַ���str��������len���ַ���
mysql> select LEFT('foobarbar', 5);
        -> 'fooba'

�ú����Ƕ��ֽڿɿ��ġ�

RIGHT(str,len)
�����ַ���str��������len���ַ���
mysql> select RIGHT('foobarbar', 4);
        -> 'rbar'

�ú����Ƕ��ֽڿɿ��ġ�

SUBSTRING(str,pos,len)
��
SUBSTRING(str FROM pos FOR len)
��
MID(str,pos,len)
���ַ���str����һ��len���ַ����Ӵ�����λ��pos��ʼ��ʹ��FROM�ı�����ʽ��ANSI SQL92�﷨��
mysql> select SUBSTRING('Quadratically',5,6);
        -> 'ratica'

�ú����Ƕ��ֽڿɿ��ġ�

SUBSTRING(str,pos)
��
SUBSTRING(str FROM pos)
���ַ���str����ʼλ��pos����һ���Ӵ���
mysql> select SUBSTRING('Quadratically',5);
        -> 'ratically'
mysql> select SUBSTRING('foobarbar' FROM 4);
        -> 'barbar'

�ú����Ƕ��ֽڿɿ��ġ�

SUBSTRING_INDEX(str,delim,count)
���ش��ַ���str�ĵ�count���������ָ���delim֮����Ӵ������count���������������ķָ��������(�������) �������ַ������count�Ǹ������������ķָ������ұߵ������ַ�(���ұ���)��
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', 2);
        -> 'www.mysql'
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', -2);
        -> 'mysql.com'

�ú����Զ��ֽ��ǿɿ��ġ�

LTRIM(str)
����ɾ������ǰ�ÿո��ַ����ַ���str��
mysql> select LTRIM('  barbar');
        -> 'barbar'
RTRIM(str)
����ɾ�������Ϻ�ո��ַ����ַ���str��
mysql> select RTRIM('barbar   ');
        -> 'barbar'
�ú����Զ��ֽ��ǿɿ��ġ�  
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
�����ַ���str��������remstrǰ׺���׺��ɾ���ˡ����û�����η�BOTH��LEADING��TRAILING������BOTH���ٶ������remstrû��ָ�����ո�ɾ����
mysql> select TRIM('  bar   ');
        -> 'bar'
mysql> select TRIM(LEADING 'x' FROM 'xxxbarxxx');
        -> 'barxxx'
mysql> select TRIM(BOTH 'x' FROM 'xxxbarxxx');
        -> 'bar'
mysql> select TRIM(TRAILING 'xyz' FROM 'barxxyz');
        -> 'barx'

�ú����Զ��ֽ��ǿɿ��ġ�

SOUNDEX(str)
����str��һ��ͬ���ַ�������������������ͬ����2���ַ���Ӧ������ͬ��ͬ���ַ�����һ������׼����ͬ���ַ�������4���ַ�������SOUNDEX()��������һ�����ⳤ���ַ�����������ڽ����ʹ��SUBSTRING()�õ�һ������׼���� ͬ���������з�������ĸ�ַ��ڸ������ַ����б����ԡ�������A-Z֮����ַ�������ĸ������Ԫ����
mysql> select SOUNDEX('Hello');
        -> 'H400'
mysql> select SOUNDEX('Quadratically');
        -> 'Q36324'
 
SPACE(N)
������N���ո��ַ���ɵ�һ���ַ�����
mysql> select SPACE(6);
        -> '      '
 
REPLACE(str,from_str,to_str)
�����ַ���str�����ַ���from_str�����г������ַ���to_str���档
mysql> select REPLACE('www.mysql.com', 'w', 'Ww');
        -> 'WwWwWw.mysql.com'

�ú����Զ��ֽ��ǿɿ��ġ�

REPEAT(str,count)
�������ظ�countTimes�ε��ַ���str��ɵ�һ���ַ��������count <= 0������һ�����ַ��������str��count��NULL������NULL��
mysql> select REPEAT('MySQL', 3);
        -> 'MySQLMySQLMySQL'
 
REVERSE(str)
���صߵ��ַ�˳����ַ���str��
mysql> select REVERSE('abc');
        -> 'cba'

�ú����Զ��ֽڿɿ��ġ�

INSERT(str,pos,len,newstr)
�����ַ���str����λ��pos��ʼ���Ӵ���len���ַ������Ӵ����ַ���newstr���档
mysql> select INSERT('Quadratic', 3, 4, 'What');
        -> 'QuWhattic'

�ú����Զ��ֽ��ǿɿ��ġ�

ELT(N,str1,str2,str3,...)
���N= 1������str1�����N= 2������str2���ȵȡ����NС��1����ڲ�������������NULL��ELT()��FIELD()�����㡣
mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
        -> 'ej'
mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');
        -> 'foo'
FIELD(str,str1,str2,str3,...)
����str��str1, str2, str3, ...�嵥�����������strû�ҵ�������0��FIELD()��ELT()�����㡣
mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -> 2
mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -> 0
FIND_IN_SET(str,strlist)
����ַ���str����N�Ӵ���ɵı�strlist֮�У�����һ��1��N��ֵ��һ���ַ������DZ���,���ָ����Ӵ���ɵ�һ���ַ����������һ��������һ�������ַ������ҵڶ���������һ������ΪSET���У�FIND_IN_SET()�������Ż���ʹ��λ���㣡���str������strlist��������strlist�ǿ��ַ���������0������κ�һ��������NULL������NULL�������һ����������һ����,�����ú�����������������
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
        -> 2
 
MAKE_SET(bits,str1,str2,...)
����һ������ (��������,���ַ��ָ����Ӵ���ɵ�һ���ַ���)������Ӧ��λ��bits�����еĵ��ַ�����ɡ�str1��Ӧ��λ0��str2��Ӧλ1���ȵȡ���str1, str2, ...�е�NULL�������ӵ�����С�
mysql> SELECT MAKE_SET(1,'a','b','c');
        -> 'a'
mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
        -> 'hello,world'
mysql> SELECT MAKE_SET(0,'a','b','c');
        -> ''
EXPORT_SET(bits,on,off,[separator,[number_of_bits]])
����һ���ַ���������������ڡ�bits�����趨ÿһλ����õ�һ����on���ַ��������Ҷ���ÿ����λ(reset)��λ����õ�һ����off���ַ�����ÿ���ַ����á�separator���ָ�(ȱʡ��,��)������ֻ�С�bits���ġ�number_of_bits�� (ȱʡ64)λ��ʹ�á�
mysql> select EXPORT_SET(5,'Y','N',',',4)
        -> Y,N,Y,N 
LCASE(str)
��
LOWER(str)
�����ַ���str�����ݵ�ǰ�ַ���ӳ��(ȱʡ��ISO-8859-1 Latin1)�����е��ַ��ı��Сд���ú����Զ��ֽ��ǿɿ��ġ�
mysql> select LCASE('QUADRATICALLY');
        -> 'quadratically'
 
UCASE(str)
��
UPPER(str)
�����ַ���str�����ݵ�ǰ�ַ���ӳ��(ȱʡ��ISO-8859-1 Latin1)�����е��ַ��ı�ɴ�д���ú����Զ��ֽ��ǿɿ��ġ�
mysql> select UCASE('Hej');
        -> 'HEJ'

�ú����Զ��ֽ��ǿɿ��ġ�

LOAD_FILE(file_name)
�����ļ�������Ϊһ���ַ��������ļ����ݡ��ļ������ڷ������ϣ������ָ�����ļ�������·�����������������fileȨ�ޡ��ļ������������ݶ��ǿɶ��IJ���С��max_allowed_packet������ļ������ڻ���������ԭ��֮һ���ܱ���������������NULL��
mysql> UPDATE table_name
           SET blob_column=LOAD_FILE("/tmp/picture")
           WHERE id=1;

MySQL��Ҫʱ�Զ��任����Ϊ�ַ��������ҷ�����Ҳ��ˣ�

mysql> SELECT 1+"1";
        -> 2
mysql> SELECT CONCAT(2,' test');
        -> '2 test'

�������Ҫ��ȷ�ر任һ�����ֵ�һ���ַ�����������Ϊ�������ݵ�CONCAT()��

����ַ��������ṩһ���������ַ�����Ϊ����������ַ���Ҳ��һ���������ַ��������任��һ���ַ��������ֱ�������һ���������ַ��������Ӱ��Ƚϡ�

7.4.11 ���ں�ʱ�亯��

����ÿ������ӵ�е�ֵ��Χ�Լ�����ָ�����ں�ʱ��ֵ����Ч��ʽ��������7.3.6 ���ں�ʱ��������

������һ��ʹ�����ں��������ӡ�����IJ�ѯѡ�������м�¼����date_col��ֵ�������30�����ڣ�

mysql> SELECT something FROM table
           WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
DAYOFWEEK(date)
��������date����������(1=�����죬2=����һ, ����7=������)����Щ����ֵ��Ӧ��ODBC��׼��
mysql> select DAYOFWEEK('1998-02-03');
        -> 3
 
WEEKDAY(date)
����date����������(0=����һ��1=���ڶ�, ����6= ������)��
mysql> select WEEKDAY('1997-10-04 22:23:00');
        -> 5
mysql> select WEEKDAY('1997-11-05');
        -> 2
 
DAYOFMONTH(date)
����date���·������ڣ���1��31��Χ�ڡ�
mysql> select DAYOFMONTH('1998-02-03');
        -> 3
DAYOFYEAR(date)
����date��һ���е�����, ��1��366��Χ�ڡ�
mysql> select DAYOFYEAR('1998-02-03');
        -> 34
MONTH(date)
����date���·ݣ���Χ1��12��
mysql> select MONTH('1998-02-03');
        -> 2
 
DAYNAME(date)
����date���������֡�
mysql> select DAYNAME("1998-02-05");
        -> 'Thursday'
MONTHNAME(date)
����date���·����֡�
mysql> select MONTHNAME("1998-02-05");
        -> 'February'
 
QUARTER(date)
����dateһ���еļ��ȣ���Χ1��4��
mysql> select QUARTER('98-04-01');
        -> 2
 
WEEK(date)
��
WEEK(date,first)
������������һ�ܵĵ�һ��ĵط�����һ����������������date����������Χ��0��52��2��������ʽWEEK()������ָ�������Ƿ�ʼ�������������һ������ڶ���������0�����ڴ������쿪ʼ������ڶ���������1��������һ��ʼ��
mysql> select WEEK('1998-02-20');
        -> 7
mysql> select WEEK('1998-02-20',0);
        -> 7
mysql> select WEEK('1998-02-20',1);
        -> 8
YEAR(date)
����date����ݣ���Χ��1000��9999��
mysql> select YEAR('98-02-03');
        -> 1998
HOUR(time)
����time��Сʱ����Χ��0��23��
mysql> select HOUR('10:05:03');
        -> 10
MINUTE(time)
����time�ķ��ӣ���Χ��0��59��
mysql> select MINUTE('98-02-03 10:05:03');
        -> 5
SECOND(time)
����time������������0��59��
mysql> select SECOND('10:05:03');
        -> 3
PERIOD_ADD(P,N)
����N���µ��׶�P���Ը�ʽYYMM��YYYYMM)���Ը�ʽYYYYMM����ֵ��ע��׶β���P��������ֵ��
mysql> select PERIOD_ADD(9801,2);
        -> 199803
PERIOD_DIFF(P1,P2)
������ʱ��P1��P2֮��������P1��P2Ӧ���Ը�ʽYYMM��YYYYMM��ע�⣬ʱ�ڲ���P1��P2��������ֵ��
mysql> select PERIOD_DIFF(9802,199703);
        -> 11
    
DATE_ADD(date,INTERVAL expr type)
��
DATE_SUB(date,INTERVAL expr type)
��
ADDDATE(date,INTERVAL expr type)
��
SUBDATE(date,INTERVAL expr type)
��Щ����ִ���������㡣����MySQL 3.22���������µġ�ADDDATE()��SUBDATE()��DATE_ADD()��DATE_SUB()��ͬ��ʡ���MySQL 3.23�У������ʹ��+��-������DATE_ADD()��DATE_SUB()���������ӣ�date��һ��ָ����ʼ���ڵ�DATETIME��DATEֵ��expr��ָ���ӵ���ʼ���ڻ�ӿ�ʼ���ڼ�ȥ�ļ��ֵһ������ʽ��expr��һ���ַ�������������һ����-����ʼ��ʾ�������type��һ���ؼ��ʣ�ָ������ʽӦ����α����͡�EXTRACT(type FROM date)�����������з��ء�type��������±���ʾ��type��expr����������������
typeֵ ���� ������expr��ʽ
SECOND �� SECONDS
MINUTE ���� MINUTES
HOUR ʱ�� HOURS
DAY �� DAYS
MONTH �� MONTHS
YEAR �� YEARS
MINUTE_SECOND ���Ӻ��� "MINUTES:SECONDS"
HOUR_MINUTE Сʱ�ͷ��� "HOURS:MINUTES"
DAY_HOUR ���Сʱ "DAYS HOURS"
YEAR_MONTH ����� "YEARS-MONTHS"
HOUR_SECOND Сʱ, ���ӣ� "HOURS:MINUTES:SECONDS"
DAY_MINUTE ��, Сʱ, ���� "DAYS HOURS:MINUTES"
DAY_SECOND ��, Сʱ, ����, �� "DAYS HOURS:MINUTES:SECONDS"

MySQL��expr��ʽ�������κα��ָ�������ʾ��ʾ���ǽ���ķָ��������date������һ��DATEֵ������ļ����������YEAR��MONTH��DAY����(����û��ʱ�䲿��)�������һ��DATEֵ����������һ��DATETIMEֵ��

mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
        -> 1998-01-01 00:00:00
mysql> SELECT INTERVAL 1 DAY + "1997-12-31";
        -> 1998-01-01
mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
       -> 1997-12-31 23:59:59 
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
                       INTERVAL 1 SECOND);
        -> 1998-01-01 00:00:00
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
                       INTERVAL 1 DAY);
        -> 1998-01-01 23:59:59
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
                       INTERVAL "1:1" MINUTE_SECOND);
        -> 1998-01-01 00:01:00
mysql> SELECT DATE_SUB("1998-01-01 00:00:00",
                       INTERVAL "1 1:1:1" DAY_SECOND);
        -> 1997-12-30 22:58:59
mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
                       INTERVAL "-1 10" DAY_HOUR);
        -> 1997-12-30 14:00:00
mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
        -> 1997-12-02
mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");
       -> 1999
mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
       -> 199907
mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
       -> 20102

�����ָ��̫�̵ļ��ֵ(������type�ؼ��������ļ������)��MySQL������ʡ���˼��ֵ�������沿�֡����磬�����ָ��һ��type��DAY_SECOND��ֵexpr��ϣ�����졢Сʱ�����Ӻ��벿�֡��������"1:10"����ָ��ֵ��MySQL�������Ӻ�Сʱ�����Ƕ�ʧ�IJ���ֵ�������Ӻ��롣���仰˵��"1:10" DAY_SECOND�����ȼ���"1:10" MINUTE_SECOND�ķ�ʽ���ͣ������MySQL����TIMEֵ��ʾ������ʱ�������Ϊһ���ʱ��ķ�ʽ�ж����ԡ������ʹ��ȷʵ����ȷ�����ڣ������NULL�����������MONTH��YEAR_MONTH��YEAR���ҽ�����ڴ������·ݵ����ֵ�����������������������������

mysql> select DATE_ADD('1998-01-30', Interval 1 month);
        -> 1998-02-28
ע�⣬��ǰ��������д�INTERVAL��type�ؼ��ʲ������ִ�Сд�ġ�  
TO_DAYS(date)
����һ������date������һ������(��0�������)��
mysql> select TO_DAYS(950501);
        -> 728779
mysql> select TO_DAYS('1997-10-07');
        -> 729669

TO_DAYS()����������ʹ�ø��и�����(1582)����ǰ��ֵ��

FROM_DAYS(N)
����һ������N������һ��DATEֵ��
mysql> select FROM_DAYS(729669);
        -> '1997-10-07'

TO_DAYS()����������ʹ�ø��и�����(1582)����ǰ��ֵ��

DATE_FORMAT(date,format)
����format�ַ�����ʽ��dateֵ���������η����Ա�����format�ַ����У�
%M ������(January����December)
%W ��������(Sunday����Saturday)
%D ��Ӣ��ǰ׺���·ݵ�����(1st, 2nd, 3rd, �ȵȡ���
%Y ��, ����, 4 λ
%y ��, ����, 2 λ
%a �����������(Sun����Sat)
%d �·��е�����, ����(00����31)
%e �·��е�����, ����(0����31)
%m ��, ����(01����12)
%c ��, ����(1����12)
%b ��д���·�����(Jan����Dec)
%j һ���е�����(001����366)
%H Сʱ(00����23)
%k Сʱ(0����23)
%h Сʱ(01����12)
%I Сʱ(01����12)
%l Сʱ(1����12)
%i ����, ����(00����59)
%r ʱ��,12 Сʱ(hh:mm:ss [AP]M)
%T ʱ��,24 Сʱ(hh:mm:ss)
%S ��(00����59)
%s ��(00����59)
%p AM��PM
%w һ�������е�����(0=Sunday ����6=Saturday ��
%U ����(0����52), ���������������ڵĵ�һ��
%u ����(0����52), ��������һ�����ڵĵ�һ��
%% һ��������%����

���е������ַ��������ͱ����Ƶ�����С�

mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
        -> 'Saturday October 1997'
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
        -> '22:23:00'
mysql> select DATE_FORMAT('1997-10-04 22:23:00',
                          '%D %y %a %d %m %b %j');
        -> '4th 97 Sat 04 10 Oct 277'
mysql> select DATE_FORMAT('1997-10-04 22:23:00',
                          '%H %k %I %r %T %S %w');
        -> '22 22 10 10:23:00 PM 22:23:00 00 6'

MySQL3.23�У��ڸ�ʽ���η��ַ�ǰ��Ҫ%����MySQL����İ汾�У�%�ǿ�ѡ�ġ�

TIME_FORMAT(time,format)
���������DATE_FORMAT()����һ��ʹ�ã�����format�ַ���ֻ�ܰ�������Сʱ�����Ӻ������Щ��ʽ���η����������η�����һ��NULLֵ��0��
CURDATE()
��
CURRENT_DATE
��'YYYY-MM-DD'��YYYYMMDD��ʽ���ؽ�������ֵ��ȡ���ں�������һ���ַ����������������ı�ʹ�á�
mysql> select CURDATE();
        -> '1997-12-15'
mysql> select CURDATE() + 0;
        -> 19971215
CURTIME()
��
CURRENT_TIME
��'HH:MM:SS'��HHMMSS��ʽ���ص�ǰʱ��ֵ��ȡ���ں�������һ���ַ������������ֵ������ı�ʹ�á�
mysql> select CURTIME();
        -> '23:50:26'
mysql> select CURTIME() + 0;
        -> 235026
NOW()
��
SYSDATE()
��
CURRENT_TIMESTAMP
��'YYYY-MM-DD HH:MM:SS'��YYYYMMDDHHMMSS��ʽ���ص�ǰ�����ں�ʱ�䣬ȡ���ں�������һ���ַ������������ֵ������ı�ʹ�á�
mysql> select NOW();
        -> '1997-12-15 23:50:26'
mysql> select NOW() + 0;
        -> 19971215235026
UNIX_TIMESTAMP()
��
UNIX_TIMESTAMP(date)
���û�в������ã�����һ��Unixʱ�����(��'1970-01-01 00:00:00'GMT��ʼ������)�����UNIX_TIMESTAMP()��һ��date���������ã������ش�'1970-01-01 00:00:00' GMT��ʼ������ֵ��date������һ��DATE�ַ�����һ��DATETIME�ַ�����һ��TIMESTAMP����YYMMDD��YYYYMMDD��ʽ�ı���ʱ���һ�����֡�
mysql> select UNIX_TIMESTAMP();
        -> 882226357
mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
        -> 875996580

��UNIX_TIMESTAMP������һ��TIMESTAMP�У�������ֱ�ӽ���ֵ��û�������ġ�string-to-unix-timestamp���任��

FROM_UNIXTIME(unix_timestamp)
��'YYYY-MM-DD HH:MM:SS'��YYYYMMDDHHMMSS��ʽ����unix_timestamp��������ʾ��ֵ��ȡ���ں�������һ���ַ������ǻ������������б�ʹ�á�
mysql> select FROM_UNIXTIME(875996580);
        -> '1997-10-04 22:23:00'
mysql> select FROM_UNIXTIME(875996580) + 0;
        -> 19971004222300
FROM_UNIXTIME(unix_timestamp,format)
���ر�ʾ Unix ʱ���ǵ�һ���ַ���������format�ַ�����ʽ����format���԰�����DATE_FORMAT()�����г�����Ŀͬ�������η���
mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
                            '%Y %D %M %h:%i:%s %x');
        -> '1997 23rd December 03:43:30 x'
SEC_TO_TIME(seconds)
����seconds�������任��Сʱ�����Ӻ��룬ֵ��'HH:MM:SS'��HHMMSS��ʽ����ȡ���ں�������һ���ַ��������������������б�ʹ�á�
mysql> select SEC_TO_TIME(2378);
        -> '00:39:38'
mysql> select SEC_TO_TIME(2378) + 0;
        -> 3938
TIME_TO_SEC(time)
����time������ת�����롣
mysql> select TIME_TO_SEC('22:23:00');
        -> 80580
mysql> select TIME_TO_SEC('00:39:38');
        -> 2378

7.4.12 ��������

DATABASE()
���ص�ǰ�����ݿ����֡�
mysql> select DATABASE();
        -> 'test'

���û�е�ǰ�����ݿ⣬DATABASE()���ؿ��ַ�����

USER()
��
SYSTEM_USER()
��
SESSION_USER()
���ص�ǰMySQL�û�����
mysql> select USER();
        -> 'davida@localhost'

��MySQL 3.22.11���Ժ�汾�У�������û����Ϳͻ��������������������ֻ��ȡ�û�������(ֵ�Ƿ�������������־��ɹ���)��

mysql> select substring_index(USER(),"@",1);
        -> 'davida'
PASSWORD(str)
�Ӵ��ı�����str����һ�������ַ������ú���������Ϊ����user��Ȩ����Password���д洢���������MySQL���
mysql> select PASSWORD('badpwd');
        -> '7f84554057dd964b'

PASSWORD()�����Ƿǿ���ġ�PASSWORD()������Unix������ܵ���ͬ�ķ���ִ�п�����ܡ��㲻Ӧ�üٶ�������Unix ��������MySQL������һ���ģ�PASSWORD()����������Unix�����ļ��洢����ͬ�ļ���ֵ����ENCRYPT()��

ENCRYPT(str[,salt])
ʹ��Unix crypt()ϵͳ���ü���str��salt����Ӧ����һ����2���ַ����ַ�������MySQL 3.22.16�У�salt���Գ���2���ַ�����
mysql> select ENCRYPT("hello");
        -> 'VxuFAJXVARROc'

���crypt()�����ϵͳ�ϲ����ã�ENCRYPT()���Ƿ���NULL��ENCRYPT()ֻ����str��ʼ8���ַ�����������������������ijЩϵͳ�����������⽫�ɵײ��crypt()ϵͳ���õ���Ϊ������

ENCODE(str,pass_str)
ʹ��pass_str��Ϊ�������str��Ϊ�˽��ܽ����ʹ��DECODE()�������һ���������ַ������������Ҫ�����б�������ʹ��һ��BLOB�����͡�
DECODE(crypt_str,pass_str)
ʹ��pass_str��Ϊ������ܼ��ܵ��ַ���crypt_str��crypt_strӦ����һ����ENCODE()���ص��ַ�����
MD5(string)
���ַ�������MD5У��͡�ֵ��Ϊһ��32����ʮ���������ֱ����ؿ��ԣ�����������ϣ(hash)����
mysql> select MD5("testing")
        -> 'ae2b1fca515949e5d54fb22b8ed95575'

����һ����RSA���ݰ�ȫ��˾��MD5��ϢժҪ�㷨����

LAST_INSERT_ID([expr])
���ر�����һ��AUTO_INCREMENT�е����һ���Զ�������ֵ����20.4.29 mysql_insert_id()��
mysql> select LAST_INSERT_ID();
        -> 195

���������ID��ÿ������Ϊ�����ڷ�������ά���������ᱻ�����ͻ��ı䡣������������һ���з�ħ��ֵ(��������NULL�Ͳ���0��һ��ֵ)��AUTO_INCREMENT�У����������ᱻ�ı䡣���expr��Ϊһ��������һ��UPDATE�Ӿ��LAST_INSERT_ID()�����������ô����ֵ��Ϊһ��LAST_INSERT_ID()ֵ�����ء����������ģ��˳�����ȴ�������

mysql> create table sequence (id int not null);
mysql> insert into sequence values (0);

Ȼ����ܱ���������˳��ţ���������

mysql> update sequence set id=LAST_INSERT_ID(id+1);

����Բ�����LAST_INSERT_ID()������˳�򣬵�������ʹ�ú�����ʵ�ó����ڷ��������Զ�ά��IDֵ��Ϊ����Զ�������ֵ������Լ����µ�IDֵ���������ܶ�������MySQL�е��κ�������AUTO_INCREMENTֵһ�������磬LAST_INSERT_ID()��û��һ������ )��������ID��C API����mysql_insert_id()Ҳ�ɱ������õ�ֵ��

FORMAT(X,D)
��ʽ������XΪ�����ڸ�ʽ'#,###,###.##'���������뵽DΪС�������DΪ0�������û��С�����С�����֡�
mysql> select FORMAT(12332.123456, 4);
        -> '12,332.1235'
mysql> select FORMAT(12332.1,4);
        -> '12,332.1000'
mysql> select FORMAT(12332.2,0);
        -> '12,332'
VERSION()
���ر���MySQL�������汾��һ���ַ�����
mysql> select VERSION();
        -> '3.22.19b-log'
GET_LOCK(str,timeout)
��ͼ������ַ���str������һ�����ֵ��������ڶ���timeoutΪ��ʱ����������ɹ���ã�����1��������Գ�ʱ�ˣ�����0�����������һ�����󣬷���NULL(����Ӵ洢��������߳���mysqladmin kill��ɱ��)������ִ��RELEASE_LOCK()ʱ��ִ��һ���µ�GET_LOCK()���߳���ֹʱ��һ���������ͷš��ú�����������ʵ��Ӧ������ģ���¼��������ֹ�����ͻ���ͬ�����ֵ����������޳�һ�������������ַ������ֵĿͻ�����ʹ���ַ���ִ����Э�������������
mysql> select GET_LOCK("lock1",10);
        -> 1
mysql> select GET_LOCK("lock2",10);
        -> 1
mysql> select RELEASE_LOCK("lock2");
        -> 1
mysql> select RELEASE_LOCK("lock1");
        -> NULL

ע�⣬�ڶ���RELEASE_LOCK()���÷���NULL����Ϊ��"lock1"�Զ��ر��ڶ���GET_LOCK()�����ͷš�

RELEASE_LOCK(str)
�ͷ��ַ���str������ͨ��GET_LOCK()��õ�������������ͷţ�����1�������û������߳�����(�ڴ��������û���ͷ�)����0����������������������ڣ�����NULL�����������û��ͨ������GET_LOCK()��û�������Ѿ����ͷ��ˣ����������ڡ�
BENCHMARK(count,expr)
BENCHMARK()�����ظ�countTimes��ִ�б���ʽexpr�����������ڼ�ʱMySQL��������ʽ�ж�졣���ֵ����0����������mysql�ͻ����������ѯ��ִ��ʱ�䡣
mysql> select BENCHMARK(1000000,encode("hello","goodbye"));
+----------------------------------------------+
| BENCHMARK(1000000,encode("hello","goodbye")) |
+----------------------------------------------+
|                                            0 |
+----------------------------------------------+
1 row in set (4.74 sec)

�����ʱ���ǿͻ��˵ľ���ʱ�䣬�����ڷ������˵�CPUʱ�䡣ִ��BENCHMARK()���ɴο��������ǵģ�����ע������������ĸ����ж��������ͽ����

7.4.13 ��GROUP BY�Ӿ�һ��ʹ�õĺ���

������ڲ�����GROUP BY�Ӿ��һ�������ʹ�þۺϺ��������ȼ��ھۺ������С�

COUNT(expr)
������һ��SELECT�������������еķ�NULLֵ����Ŀ��
mysql> select student.student_name,COUNT(*)
           from student,course
           where student.student_id=course.student_id
           GROUP BY student_name;

COUNT(*)�������صļ�������������Ŀ����Щ��ͬ�����������Ƿ����NULLֵ�����SELECT��һ������������û�м����������в���û��WHERE�Ӿ䣬COUNT(*)���Ż��Ա���ٵط��ء����磺

mysql> select COUNT(*) from student;
  
COUNT(DISTINCT expr,[expr...])
����һ����ֵͬ����Ŀ��
mysql> select COUNT(DISTINCT results) from student;

��MySQL�У������ͨ������һ������ʽ�б��Եõ���ͬ�ı���ʽ��ϵ���Ŀ���� ANSI SQL�У�����ܱ�����CODE(DISTINCT ..)�ڽ������б���ʽ�����ӡ�

AVG(expr)
����expr��ƽ��ֵ��
mysql> select student_name, AVG(test_score)
           from student
           GROUP BY student_name;
  
MIN(expr)
��
MAX(expr)
����expr����С�����ֵ��MIN()��MAX()������һ���ַ��������������ֵ�����£����Ƿ�����С�������ַ���ֵ��
mysql> select student_name, MIN(test_score), MAX(test_score)
           from student
           GROUP BY student_name;
 
SUM(expr)
����expr�ĺ͡�ע�⣬������صļ���û���У�������NULL��
STD(expr)
��
STDDEV(expr)
����expr��׼��(deviation)�����Ƕ� ANSI SQL ����չ���ú�������ʽSTDDEV()���ṩ��Oracle�ļ����ԡ�
BIT_OR(expr)
����expr������λ��λ�򡣼����� 64 λ(BIGINT)���Ƚ��С�
BIT_AND(expr)
����expr������λ��λ�롣������ 64 λ(BIGINT)���Ƚ��С�

MySQL��չ��GROUP BY���÷�������Բ������ڵ�GROUP BY���ֵ�SELECT����ʽ��ʹ���л���㣬���ʾ�������κο���ֵ�������ʹ���������ܸ��ã������ڲ���Ҫ����Ŀ������ͷ��顣���磬�������в�ѯ�в���Ҫ��customer.name�Ͼۺϣ�

mysql> select order.custid,customer.name,max(payments)
       from order,customer
       where order.custid = customer.custid
       GROUP BY order.custid;

�� ANSI SQL�У��㽫���뽫customer.name�ӵ�GROUP BY�Ӿ䡣��MySQL�У�����������ġ�

������GROUP BY����ʡ�Ե��������в���Ψһ�ģ���Ҫʹ��������ܡ�

��ijЩ����£������ʹ��MIN()��MAX()���һ���ض�����ֵ����ʹ������Ψһ�ġ����������Ӱ���sort������Сֵ���е�columnֵ��

substr(MIN(concat(sort,space(6-length(sort)),column),7,length(column)))

ע�⣬���������ʹ��MySQL 3.22(�����)�������������ͼ���ANSI SQL���㲻����GROUP BY��ORDER BY�Ӿ���ʹ�ñ���ʽ�������ͨ��ʹ�ñ���ʽ��һ��������������ƣ�

mysql> SELECT id,FLOOR(value/100) AS val FROM tbl_name
           GROUP BY id,val ORDER BY val;

��MySQL3.23���������������

mysql> SELECT id,FLOOR(value/100) FROM tbl_name ORDER BY RAND();

7.5 CREATE DATABASE�䷨

CREATE DATABASE db_name

CREATE DATABASE�ø��������ִ���һ�����ݿ⡣���������ݿ����ֹ�����7.1.5 ���ݿ⡢���ӡ��������кͱ��������и�����������ݿ��Ѿ����ڣ�����һ������

��MySQL�е����ݿ�ʵ�ֳɰ�����Ӧ���ݿ��б����ļ���Ŀ¼����Ϊ���ݿ��ڳ�ʼ����ʱû���κα���CREATE DATABASE���ֻ����MySQL����Ŀ¼���洴��һ��Ŀ¼��

��Ҳ������mysqladmin�������ݿ⡣��12.1 ��ͬ��MySQL����ĸ�����

7.6 DROP DATABASE�䷨

DROP DATABASE [IF EXISTS] db_name

DROP DATABASEɾ�����ݿ��е����б������ݿ⡣ҪС�ĵ�ʹ��������

DROP DATABASE���ش����ݿ�Ŀ¼��ɾ�����ļ�����Ŀ��ͨ������3���ڱ�����������Ϊÿ�ű���Ӧ��һ����.MYD���ļ���һ����.MYI���ļ���һ����.frm���ļ���

��MySQL 3.22���Ժ�汾�У������ʹ�ùؼ���IF EXISTS��ֹһ������ķ�����������ݿⲻ���ڡ�

��Ҳ������mysqladmin�������ݿ⡣��12.1 ��ͬ�� MySQL ����ĸ�����

7.7 CREATE TABLE�䷨

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
[table_options] [select_statement]

create_definition:
  col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
            [PRIMARY KEY] [reference_definition]
  or    PRIMARY KEY (index_col_name,...)
  or    KEY [index_name] (index_col_name,...)
  or    INDEX [index_name] (index_col_name,...)
  or    UNIQUE [INDEX] [index_name] (index_col_name,...)
  or    [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...)
            [reference_definition]
  or    CHECK (expr)

type:
        TINYINT[(length)] [UNSIGNED] [ZEROFILL]
  or    SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
  or    MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
  or    INT[(length)] [UNSIGNED] [ZEROFILL]
  or    INTEGER[(length)] [UNSIGNED] [ZEROFILL]
  or    BIGINT[(length)] [UNSIGNED] [ZEROFILL]
  or    REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
  or    DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
  or    FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
  or    DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
  or    NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
  or    CHAR(length) [BINARY]
  or    VARCHAR(length) [BINARY]
  or    DATE
  or    TIME
  or    TIMESTAMP
  or    DATETIME
  or    TINYBLOB
  or    BLOB
  or    MEDIUMBLOB
  or    LONGBLOB
  or    TINYTEXT
  or    TEXT
  or    MEDIUMTEXT
  or    LONGTEXT
  or    ENUM(value1,value2,value3,...)
  or    SET(value1,value2,value3,...)

index_col_name:
        col_name [(length)]

reference_definition:
        REFERENCES tbl_name [(index_col_name,...)]
                   [MATCH FULL | MATCH PARTIAL]
                   [ON DELETE reference_option]
                   [ON UPDATE reference_option]

reference_option:
        RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

table_options:
	TYPE = {ISAM | MYISAM | HEAP}
or	AUTO_INCREMENT = #
or	AVG_ROW_LENGTH = #
or	CHECKSUM = {0 | 1}
or	COMMENT = "string"
or	MAX_ROWS = #
or	MIN_ROWS = #
or	PACK_KEYS = {0 | 1}
or	PASSWORD = "string"
or	DELAY_KEY_WRITE = {0 | 1}
or      ROW_FORMAT= { default | dynamic | static | compressed }

select_statement:
	[IGNORE | REPLACE] SELECT ...  (Some legal select statement)

CREATE TABLE�ڵ�ǰ���ݿ����ø��������ִ���һ�����ݿ���������ı����Ĺ�����7.1.5 ���ݿ⣬���ӣ��������кͱ��������и����������ǰ���ݿⲻ���ڻ�������Ѿ����ڣ�����һ������

��MySQL3.22���Ժ�汾�У��������Ա�ָ��Ϊdb_name.tbl_name��������û�е�ǰ�����ݿⶼ���ԡ�

��MySQL3.23�У����㴴��һ�ű�ʱ�������ʹ��TEMPORARY�ؼ��ʡ����һ��������������ʱ�����Զ���ɾ���������������ǰ���������������ζ�ţ�2����ͬ��������ʹ����ͬ����ʱ�������ֶ�����˴˳�ͻ������ͬ���ֵ��������ݿ����ͻ�������еı�������ֱ����ʱ����ɾ������

��MySQL3.23���Ժ�汾�У������ʹ�ùؼ���IF NOT EXISTS�Ա�������Ѿ����ڲ�����һ������ע�⣬�޷�֤ʵ���ṹ����ͬ�ġ�

ÿ�ű�tbl_name�������ݿ�Ŀ¼��һЩ�ļ���ʾ����MyISAM���͵ı�������£��㽫�õ���

�ļ� Ŀ��
tbl_name.frm ������(����)�ļ�
tbl_name.MYD �����ļ�
tbl_name.MYI �����ļ�

���ڸ��������͵����ʵĸ�����Ϣ����7.3 ��������

  • ����Ȳ�ָ��NULLҲ��ָ��NOT NULL���б���Ϊָ����NULL��
  • �����п����и��ӵ�����AUTO_INCREMENT���������NULLֵ���Ƽ�)��0��һ��AUTO_INCREMENT����ʱ���б�����Ϊvalue+1���ڴ�value�ǵ�ǰ���е��е����ֵ��AUTO_INCREMENT˳���1��ʼ����20.4.29 mysql_insert_id()�������ɾ���˰���һ��AUTO_INCREMENT�е����ֵ���У�ֵ��������ʹ�á������ɾ���������е��У�˳�����¿�ʼ��ע�⣺ÿ����ֻ����һ��AUTO_INCREMENT�У����������뱻������Ϊ��ʹ��MySQL����һЩ ODBC Ӧ�ó��������в�ѯ������ҳ���������У�
    SELECT * FROM tbl_name WHERE auto_col IS NULL
    
  • NULLֵ����TIMESTAMP�еĴ�����ͬ�����������͡��㲻����һ��TIMESTAMP���д洢һ������NULL��������ΪNULL��������ɵ�ǰ�����ں�ʱ�䡣��ΪTIMESTAMP�б��־�������NULL��NOT NULL���Բ���һ�㷽ʽ���ò��������ָ�����ǣ��������ԡ�����һ���棬Ϊ��ʹ��MySQL�ͻ������׵�ʹ��TIMESTAMP�У������������������п��Ա���ֵNULL( ���ǶԵ�)������TIMESTAMPʵ���Ͼ�������һ��NULLֵ������ʹ��DESCRIBE tbl_name�õ��й���ı�������ʱ����ͻ����ס�ע�⣬����һ��TIMESTAMP��Ϊ0��ͬ�ڽ�������ΪNULL����Ϊ0��һ����Ч��TIMESTAMPֵ��
  • ���û��Ϊ��ָ��DEFAULTֵ��MySQL�Զ��ط���һ��������п���ȡNULL��Ϊֵ��ȱʡֵ��NULL������б�����ΪNOT NULL��ȱʡֵȡ���������ͣ�
    • ����û������AUTO_INCREMENT���Ե��������ͣ�ȱʡֵ��0������һ��AUTO_INCREMENT�У�ȱʡֵ����˳���е���һ��ֵ��
    • ���ڳ�TIMESTAMP�����ں�ʱ�����ͣ�ȱʡֵ�Ǹ������ʵ��ġ��㡱ֵ�����ڱ��е�һ��TIMESTAMP�У�ȱʡֵ�ǵ�ǰ�����ں�ʱ�䡣��7.3.6 ���ں�ʱ��������
    • ���ڳ�ENUM���ַ������ͣ�ȱʡ�ǿ��ַ���������ENUM��ȱʡֵ�ǵ�һ��ö��ֵ��
  • KEY��INDEX��һ��ͬ��ʡ�
  • ��MySQL�У�һ��UNIQUE��ֻ���в�ͬ��ֵ���������ͼ��ƥ�������еļ����������У�����һ������
  • A PRIMARY KEY��һ��ΨһKEY�����ж�������ƣ������еĹؼ��б��뱻����ΪNOT NULL����MySQL�У���������ΪPRIMARY��һ�ű�ֻ����һ��PRIMARY KEY������ڱ�����û��һ��PRIMARY KEY����һЩӦ�ó���Ҫ��PRIMARY KEY��MySQL�����ص�һ��UNIQUE������û���κ�NULL�У���ΪPRIMARY KEY��
  • һ��PRIMARY KEY������һ������������Ȼ�����㲻����һ����˵����ʹ��PRIMARY KEY�Ĺؼ������Դ���һ��������������������������ǵ�������Ϊ�����������ʹ��PRIMARY KEY(index_col_name, ...)�﷨��
  • ����㲻�ܸ���������һ�����֣�����������������һ��index_col_name��ͬ�����֣���һ����ѡ��suffix(_2, _3, ...)ʹ��Ψһ������ʹ��SHOW INDEX FROM tbl_name����һ�ű����������֡���7.21 SHOW�䷨(�õ������еȵ���Ϣ����
  • ֻ��MyISAM������֧�ֿ�����NULLֵ�����ϵ�����������������£������������������ΪNOT NULL��������һ������
  • ��col_name(length)�﷨�������ָ����ʹ�ò��ֵ�CHAR��VARCHAR�е�һ������������ʹ�����ļ���ø�С����7.3.9 ��������
  • ֻ��MyISAM������֧��BLOB��TEXT�е�����������һ��BLOB��TEXT���Ϸ�������ʱ�����������ָ�������ij��ȣ�
    CREATE TABLE test (blob_col BLOB, index(blob_col(10)));
    
  • ������TEXT��BLOB��һ��ʹ��ORDER BY��GROUP BYʱ��ֻʹ��ͷmax_sort_length���ֽڡ���7.3.7.2 BLOB��TEXT������
  • FOREIGN KEY��CHECK��REFERENCES�Ӿ�ʵ���ϲ����κ����飬���﷨�����ṩ�����ԣ�ʹ���������״�������SQL��������ֲ���벢���н������ô�������Ӧ�á���5.4 MySQLȱ�ٵĹ�����
  • ÿ��NULL��ռ�ݶ���һλ��ȡ�ᵽ��ӽ����ֽڡ�
  • ����¼�������ֽڼƿ������¼��㣺
    row length = 1
                 + (sum of column lengths)
                 + (number of NULL columns + 7)/8
                 + (number of variable-length columns)
    
  • table_options��SELECTѡ��ֻ��MySQL 3.23���Ժ�汾�б�ʵ�֡���ͬ�ı������ǣ�
    ISAM ԭ���ı�������
    MyISAM ȫ�¶����ƿ���ֲ�ı�������
    HEAP ���ڸñ������ݽ����洢���ڴ���

    ��9.4 MySQL ��������������ѡ������Ż�������Ϊ���ڴ��������£��㲻��ָ�������κ�һ����ѡ������б������ã����������˵����

    AUTO_INCREMENT ����ҪΪ��ı��趨����һ�� auto_increment ֵ ( MyISAM ��
    AVG_ROW_LENGTH ��ı���ƽ���г��ȵĽ���ֵ����ֻ��ҪΪ�б䳤��¼�ı���������
    CHECKSUM �������ҪMySQL��ÿ��ά��һ��У���(ʹ����ø����Ը��µ���ʹ���������ҳ��𻵵ı�)������Ϊ1 ( MyISAM )
    COMMENT ������ı���һƪ60���ַ���ע��
    MAX_ROWS ��ƻ��ڱ��д洢���е������Ŀ
    MIN_ROWS ��ƻ��ڱ��д洢���е���С��Ŀ
    PACK_KEYS �������Ҫ�и�С��������������Ϊ1����ͨ��ʹ�ĸ��¸������Ҷ�ȡ����(MyISAM��ISAM)��
    PASSWORD ��һ���������.frm�ļ�����ѡ���ڱ�׼MySQL�汾�в����κ����顣
    DELAY_KEY_WRITE �����Ҫ�Ƴٹؼ����ĸ���ֱ�������ر�(MyISAM)����������Ϊ1��
    ROW_FORMAT ������Ӧ����α��洢(Ϊ�˽���)��

    ����ʹ��һ��MyISAM��ʱ��MySQLʹ��max_rows * avg_row_length�ij˻��������յı����ж������㲻ָ��������κ�ѡ���һ���������ߴ罫��4G(��2G�������IJ���ϵͳ��֧��2G�ı�)��

  • �������CREATE����ָ��һ��SELECT��MySQL��Ϊ��SELECT�����еĵ�Ԫ�������ֶΡ����磺
    mysql> CREATE TABLE test (a int not null auto_increment,
               primary key (a), key(b))
               TYPE=HEAP SELECT b,c from test2;
    

    �⽫����һ����3���е�HEAP����ע������ڿ������ݽ���ʱ�����κδ��󣬱����Զ���ɾ����

7.7.1 ��������˵���ı�

��ijЩ����£�MySQL�����ظı���һ��CREATE TABLE��������һ����˵��������Ҳ������ALTER TABLE����

  • ����С��4��VARCHAR���ı�ΪCHAR��
  • �����һ�����е��κ����пɱ䳤�ȣ�������������DZ䳤�ġ����, ���һ�ű������κα䳤����(VARCHAR��TEXT��BLOB)�����д���3���ַ���CHAR�б��ı�ΪVARCHAR�С������κη��涼��Ӱ�������ʹ���У���MySQL�У�VARCHARֻ�Ǵ洢�ַ���һ����ͬ������MySQLʵʩ���ָı䣬����Ϊ����ʡ�ռ䲢��ʹ����������ݡ���10.6 ѡ��һ�ֱ���������
  • TIMESTAMP����ʾ�ߴ������ż������2 �� 14�ķ�Χ�ڡ������ָ��0��ʾ�ߴ���14�󣬳ߴ类ǿ��Ϊ14����1��13��Χ�ڵ�����ֵ�ߴ类ǿ��Ϊ��һ�������ż����
  • �㲻����һ��TIMESTAMP������洢һ������NULL��������ΪNULL������Ϊ��ǰ�����ں�ʱ�䡣��ΪTIMESTAMP�б��־���������NULL��NOT NULL���Բ���һ��ķ�ʽ���ò��������ָ�����ǣ��������ԡ�DESCRIBE tbl_name���DZ����TIMESTAMP�п��ܸ�����NULLֵ��
  • MySQL������SQL���ݿ⹩Ӧ��ʹ�õ�ij��������ӳ�䵽MySQL���͡���7.3.11 ֻ���������ݿ������������

�������Ҫ֪��MySQL�Ƿ�ʹ���˳���ָ���������һ�������ͣ��ڴ�����ı���ı�֮�󣬷���һ��DESCRIBE tbl_name��伴�ɡ�

�����ʹ��myisampackѹ��һ���������ܻᷢ���ı�ijЩ�����������͡���10.6.3 ѹ������������ 

7.8 ALTER TABLE�䷨

ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]

alter_specification:
        ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
  or    ADD INDEX [index_name] (index_col_name,...)
  or    ADD PRIMARY KEY (index_col_name,...)
  or    ADD UNIQUE [index_name] (index_col_name,...)
  or    ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
  or    CHANGE [COLUMN] old_col_name create_definition
  or    MODIFY [COLUMN] create_definition
  or    DROP [COLUMN] col_name
  or    DROP PRIMARY KEY
  or    DROP INDEX index_name
  or    RENAME [AS] new_tbl_name
  or    table_options

ALTER TABLE�������޸�һ�����б��Ľṹ�����磬��������ӻ�ɾ���С��������ȥ�������ı������е����͡������������л����������Ҳ�ܸı����ע�ͺͱ������͡���7.7 CREATE TABLE�䷨��

�����ʹ��ALTER TABLE�޸�һ����˵������DESCRIBE tbl_name��ʾ����в�û�б��޸ģ��������MySQL��Ϊ��7.7.1 ��������˵���ı���������ԭ��֮һ������������޸ġ����磬�������ͼ��һ��VARCHAR��ΪCHAR��MySQL����Ȼʹ��VARCHAR����������������䳤���С�

ALTER TABLEͨ������ԭ������һ����ʱ�������������޸��ڸ�����ʩ�У�Ȼ��ԭ���ı���ɾ��������������һ���µġ�������ʹ�����е��޸��Զ���ת���±���û���κ�ʧ�ܵ��޸ġ���ALTER TABLE����ִ��ʱ��ԭ�������ɱ������ͻ���ȡ�����º�д������ӳٵ��±�׼������Ϊֹ��

  • Ϊ��ʹ��ALTER TABLE������Ҫ�ڱ��ϵ�select��insert��delete��update��create��drop��Ȩ�ޡ�
  • IGNORE��MySQL��ANSI SQL92 ��һ�����䣬������±��е�Ψһ�������ظ���������ALTER TABLE��ι��������IGNOREû��ָ�����������������һָ�ԭ״�����IGNORE��ָ������ô��Ψһ�����ظ����У�ֻ��ʹ�õ�һ�У����౻ɾ����
  • ������ڵ���ALTER TABLE����з������ADD��ALTER��DROP��CHANGE�Ӿ䡣����MySQL��ANSI SQL92��һ�����䣬SQL92��ÿ��ALTER TABLE�����ֻ����һ���Ӿ䡣
  • CHANGE col_name��DROP col_name��DROP INDEX��MySQL�� ANSI SQL92 �����䡣
  • MODIFY�� Oracle ��ALTER TABLE�����䡣
  • ��ѡ�Ĵ�COLUMN��һ������������ҿ���ʡ�ԡ�
  • �����ʹ��ALTER TABLE tbl_name RENAME AS new_name��û���κ�����ѡ�MySQL�򵥵���������Ӧ�ڱ�tbl_name���ļ���û�б�Ҫ������ʱ����
  • create_definition�Ӿ�ʹ��CREATE TABLE��ͬ��ADD��CHANGE�﷨��ע���﷨���������֣���ֻ�����͡���7.7 CREATE TABLE�䷨��
  • �����ʹ��CHANGE old_col_name create_definition�Ӿ�������һ���С�Ϊ����������ָ���ɵĺ��µ������ֺ��е�ǰ�е����͡����磬������һ��INTEGER�У���a��b���������������
    mysql> ALTER TABLE t1 CHANGE a b INTEGER;
    

    �������Ҫ�ı��е����Ͷ������֣�����������һ���ģ�CHANGE�﷨��Ȼ��Ҫ2�����������磺

    mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;
    

    Ȼ������MySQL3.22.16a����Ҳ����ʹ��MODIFY���ı��е����Ͷ���������������

    mysql> ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
    
  • �����ʹ��CHANGE��MODIFY����һ���У�һ�����������ڸ��еIJ���(���磬�������һ��VARCHAR�е�ͷ10���ַ�������)���㲻��ʹ�ж��ڱ��������ַ���Ŀ��
  • ����ʹ��CHANGE��MODIFY�ı�һ��������ʱ��MySQL��������ͼ�ܺõر任���ݵ������͡�
  • ��MySQL3.22���Ժ�����ʹ��FIRST��ADD ... AFTER col_name��һ������������һ���ض���λ�������С�ȱʡ�����ӵ����һ�С�
  • ALTER COLUMNΪ��ָ���µ�ȱʡֵ��ɾ���ϵ�ȱʡֵ������ϵ�ȱʡֵ��ɾ�����п�����NULL����ȱʡֵ��NULL������в�����NULL��MySQL����һ��ȱʡֵ��ȱʡֵ��ֵ��7.7 CREATE TABLE�䷨��������
  • DROP INDEXɾ��һ������������MySQL�� ANSI SQL92 ��һ�����䡣
  • ����д�һ�ű��б���������Ҳ����������ɲ��ֵ��κ������б�ɾ����������һ�������������б�������������Ҳ��������
  • DROP PRIMARY KEY������������������������������ڣ����������е�һ��UNIQUE������(���û����ȷ��ָ��PRIMARY KEY��MySQL��ǵ�һ��UNIQUE��ΪPRIMARY KEY����
  • �� C API ����mysql_info()�������ҳ����ټ�¼�������� ��(��ʹ��IGNOREʱ)����Ψһ��ֵ���ظ����ټ�¼��ɾ����
  • FOREIGN KEY��CHECK��REFERENCES�Ӿ�ʵ���ϲ����κ����飬���ǵľ䷨�����ṩ�����ԣ�ʹ�ø����׵ش�����SQL��������ֲ���벢�����н�����������������Ӧ�ó��򡣼�5.4 MySQLȱ�ٵĹ�����

������һ�����ӣ���ʾ��һЩALTER TABLE�÷���������һ�����´����ı�t1��ʼ��

mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10));

������������t1��t2:

mysql> ALTER TABLE t1 RENAME t2;

Ϊ�˸ı���a����INTEGER��ΪTINYINT NOT NULL(����һ��)�����Ҹı���b����CHAR(10)��ΪCHAR(20)��ͬʱ������������b��Ϊc��

mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);

����һ����TIMESTAMP�У���Ϊd��

mysql> ALTER TABLE t2 ADD d TIMESTAMP; 

����d������һ������������ʹ��aΪ������

mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);

ɾ����c��

mysql> ALTER TABLE t2 DROP COLUMN c;

����һ���µ�AUTO_INCREMENT�����У�����Ϊc��

mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,
           ADD INDEX (c);

ע�⣬����������c����ΪAUTO_INCREMENT�����뱻����������������������cΪNOT NULL����Ϊ�����˵��в�����NULL��

��������һ��AUTO_INCREMENT��ʱ���Զ�����˳������������ֵ��

7.9 OPTIMIZE TABLE�䷨

OPTIMIZE TABLE tbl_name

�����ɾ����һ�����Ĵ󲿷ֻ�������ñ䳤���ж�һ����(��VARCHAR��BLOB��TEXT�еı�)���˸ı䣬Ӧ��ʹ��OPTIMZE TABLE��ɾ���ļ�¼��һ�����ӱ�ά�ֲ�������INSERT�����ٴ�ʹ���ϼ�¼��λ�á������ʹ��OPTIMIZE TABLE�������õĿռ䡣

OPTIMIZE TABLEͨ������ԭ���ı���һ����ʱ�������������ϵı��ӱ��������±���(û�����õ���)��Ȼ��ԭ���ı���ɾ������������һ���µġ�������ʹ�����и����Զ�ת���µı���û���κ�ʧ�ܵĸ��¡���ʱOPTIMIZE TABLE����ִ��ʱ��ԭ���ı��ɱ�����Ŀͻ���ȡ���Ա��ĸ��º�д���ӳٵ��±���׼����Ϊֹ��

7.10 DROP TABLE�䷨

DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...]

DROP TABLEɾ��һ���������ݿ�������б��е����ݺͱ��������ɾ������С��ʹ��������

��MySQL 3.22���Ժ�汾�������ʹ�ùؼ���IF EXISTS����ⲻ���ڱ���һ����������

7.11 DELETE�䷨

DELETE [LOW_PRIORITY] FROM tbl_name
    [WHERE where_definition] [LIMIT rows]

DELETE��tbl_name����ɾ��������where_definition�������������У����ҷ���ɾ����¼�ĸ�����

����㷢��һ��û��WHERE�Ӿ��DELETE�������ж���ɾ����MySQLͨ������һ���ձ�����ɣ�����ɾ��ÿ��Ҫ�졣����������£�DELETE��������Ϊ��Ӱ���¼����Ŀ��(MySQL���ܷ���ʵ���ϱ�ɾ������������Ϊ�����ٴ��������Ǵ������ļ���ֻҪ�������ļ���tbl_name.frm������Ч�ģ��������������ٴ�������ʹ���ݻ������ļ��ƻ���)��

�����ȷʵ��Ҫ֪����������ɾ��������ʱ�����ж��ټ�¼��ɾ��������Ը������ٶ��ϵijͷ��������������ʽ��һ��ELETE��䣺

mysql> DELETE FROM tbl_name WHERE 1>0;

ע�����û��WHERE�Ӿ��DELETE FROM tbl_name���Ķ��ˣ���Ϊ��һ��ɾ��һ�С�

�����ָ���ؼ���LOW_PRIORITY��DELETE��ִ�б��Ƴٵ�û�������ͻ���ȡ����

ɾ���ļ�¼��һ�����ӱ�ά�ֲ�������INSERT�����ٴ�ʹ���ϵļ�¼λ�á�Ϊ�˻������õĿռ䲢��С�ļ���С��ʹ��OPTIMIZE TABLE����myisamchkʵ�ó���������֯����OPTIMIZE TABLE�����ף�����myisamchk���졣��7.9 OPTIMIZE TABLE�䷨��13.4.3 ���Ż���

MySQL��DELETE�ض���LIMIT rowsѡ����߷������ڿ��Ʊ����ص��ͻ�֮ǰ����Ҫɾ������������������������֤һ���ض�DELETE����Ứ̫���ʱ�䡣����Լ򵥵��ظ�DELETE����ֱ����Ӱ�������С��LIMITֵ��

7.12 SELECT�䷨

SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]
       [DISTINCT | DISTINCTROW | ALL]
    select_expression,...
    [INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
    [FROM table_references
        [WHERE where_definition]
        [GROUP BY col_name,...]
        [HAVING where_definition]
        [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
        [LIMIT [offset,] rows]
        [PROCEDURE procedure_name] ]

SELECT������������һ���������о�ѡ���С�select_expressionָ������Ҫ�������С�SELECTҲ�������������������κα��ļ����С����磺

mysql> SELECT 1 + 1;
         -> 2

����ʹ�õĹؼ��ʱ��뾫ȷ���������˳����������磬һ��HAVING�Ӿ�������GROUP BY�Ӿ�֮���ORDER BY�Ӿ�֮ǰ��

  • һ��SELECT����ʽ������һ��AS����һ����������������������ʽ������������ʹ����ORDER BY��HAVING�Ӿ��С����磺
    mysql> select concat(last_name,', ',first_name) AS full_name
        from mytable ORDER BY full_name;
    
  • FROM table_references�Ӿ�ָ�����ĸ����м����С�����������������������ִ��һ������(join)����������ľ䷨��Ϣ����7.13 JOIN�䷨��
  • ���������һ����Ϊcol_name��tbl_name.col_name��db_name.tbl_name.col_name���㲻����һ��SELECT�����ָ��һ��tbl_name��db_name.tbl_name��һ�������õ�ǰ׺�����������ж����ԡ���7.1.5 ���ݿ⡢�����������кͱ������������ڶ����Ե�����Ҫ�������ʽ�������ø�ʽ��
  • һ�������ÿ���ʹ��tbl_name [AS] alias_name��һ��������
    mysql> select t1.name, t2.salary from employee AS t1, info AS t2
               where t1.name = t2.name;
    mysql> select t1.name, t2.salary from employee t1, info t2
               where t1.name = t2.name;
    
  • ��ѡ������п������������б�������λ����ORDER BY��GROUP BY�Ӿ����ã���λ�ô�1��ʼ��
    mysql> select college, region, seed from tournament
               ORDER BY region, seed;
    mysql> select college, region AS r, seed AS s from tournament
               ORDER BY r, s;
    mysql> select college, region, seed from tournament
               ORDER BY 2, 3;
    

    Ϊ���Խ������У���DESC���½� )�ؼ��ʼӵ�ORDER BY�Ӿ�����Ҫ���������ǰ��ȱʡ��������Ҳ������ASC�ؼ�����ȷָ����

  • HAVING�Ӿ��������κ��л���select_expression�������ı�������������ã�������Ŀ���͵��ͻ�֮ǰ��û���Ż�����Ҫ�������WHERE�Ӿ��е���Ŀʹ��HAVING�����磬����д��������
    mysql> select col_name from tbl_name HAVING col_name > 0;
    

    �෴д��������

    mysql> select col_name from tbl_name WHERE col_name > 0;
    

    ��MySQL 3.22.5���Ժ���Ҳ������д��ѯ��

    mysql> select user,max(salary) from users group by user HAVING max(salary)>10; 
    

    ��������ϵ�MySQL�汾�У���������д��

    mysql> select user,max(salary) AS sum from users
               group by user HAVING sum>10;
    
  • SQL_SMALL_RESULT��SQL_BIG_RESULT��STRAIGHT_JOIN��HIGH_PRIORITY��MySQL��ANSI SQL92����չ��
  • STRAIGHT_JOINǿ���Ż�����������FROM�Ӿ�Ĵ�������(join)���ӡ�����Ż����Է���Ѵ��������������ʹ�������ٲ�ѯ����7.22 EXPLAIN�䷨(�õ�����SELECT����Ϣ)��
  • SQL_SMALL_RESULT����GROUP BY��DISTINCTһ��ʹ�ø����Ż������������С������������£�MySQL��ʹ�ÿ�����ʱ���洢���յı�������ʹ������ SQL_SMALL_RESULT��һ��MySQL��չ��
  • SQL_BIG_RESULT����GROUP BY��DISTINCTһ��ʹ���Ը����Ż���������Ͻ��кܶ��С�����������£������Ҫ��MySQL��ֱ��ʹ�û��ڴ��̵���ʱ���� MySQL����������½�ѡ����GROUP BY��Ԫ�ϵļ�ֵ���������������һ����ʱ����
  • HIGH_PRIORITY������SELECT��һ�����±��������ߵ����ȼ�����Ӧ�ý��Էdz���IJ��ұ���һ����ɵIJ�ѯʹ������ �����Ϊ����������������һ���ȴ����ͷŵĸ�����䣬һ��SELECT HIGH_PRIORITY�����С�
  • LIMIT�Ӿ���Ա���������SELECT��䷵�ص�������LIMITȡ1����2�����ֲ������������2����������һ��ָ��Ҫ���صĵ�һ�е�ƫ�������ڶ���ָ�������е������Ŀ����ʼ�е�ƫ������0(����1)��
    mysql> select * from table LIMIT 5,10;  # Retrieve rows 6-15
    

    �������һ����������ָ�������е������Ŀ��

    mysql> select * from table LIMIT 5;     # Retrieve first 5 rows
    

    ���仰˵��LIMIT n�ȼ���LIMIT 0,n��

  • SELECT ... INTO OUTFILE 'file_name'��ʽ��SELECT��佫ѡ�����д��һ���ļ����ļ��ڷ����������ϱ����������Ҳ������Ѿ����ڵ�(���ܱ�ģ������ֹ���ݿ�����ļ�������/etc/passwd�����ƻ�)���ڷ������������������fileȨ����ʹ������SELECT��SELECT ... INTO OUTFILE��LOAD DATA INFILE�����������export_options���ֵ��﷨������LOAD DATA INFILE����е�FIELDS��LINES�Ӿ����ͬ����7.16 LOAD DATA INFILE�䷨�������յ��ı��ļ��У�ֻ�������ַ���ESCAPED BY�ַ�ת�壺
    • ESCAPED BY�ַ�
    • ��FIELDS TERMINATED BY�еĵ�һ���ַ�
    • ��LINES TERMINATED BY�еĵ�һ���ַ�

    ���⣬ASCII 0���任��ESCAPED BY���0(ASCII 48)��������ԭ���������ת���κ�FIELDS TERMINATED BY��ESCAPED BY��LINES TERMINATED BY�ַ��Ա��ܿɿ����ܶ����ļ���ASCII 0��ת��ʹ���������÷�ҳ���ۿ�����Ϊ���յ��ļ���������ѭSQL�䷨��û�б�Ķ�����Ҫת�塣

�����ʹ��INTO DUMPFILE������INTO OUTFILE��MySQL��ֻдһ�е��ļ��У�û���κ��л��н�������û���κ�ת�塣�������Ҫ��һ���ļ��洢һ��blob�����Ǻ����õġ�

7.13 JOIN�䷨

MySQL֧����������SELECT����JOIN�䷨��

table_reference, table_reference
table_reference [CROSS] JOIN table_reference
table_reference INNER JOIN table_reference
table_reference STRAIGHT_JOIN table_reference
table_reference LEFT [OUTER] JOIN table_reference ON conditional_expr
table_reference LEFT [OUTER] JOIN table_reference USING (column_list)
table_reference NATURAL LEFT [OUTER] JOIN table_reference
{ oj table_reference LEFT OUTER JOIN table_reference ON conditional_expr }

��������LEFT OUTER JOIN�ľ䷨ֻ��Ϊ����ODBC���ݶ����ڵġ�

  • һ����������ʹ��aliasedtbl_name AS alias_name��tbl_name alias_name����ı�����
    mysql> select t1.name, t2.salary from employee AS t1, info AS t2
               where t1.name = t2.name;
    
  • INNER JOIN��,������)���������ǵȼ۵ģ����ǽ���һ����ʹ�õı�֮���ȫ���ᡣͨ������ָ����Ӧ�������WHERE��������������
  • ON�����ǿ�������һ��WHERE�Ӿ���ʽ���κ�������
  • �����һ��LEFT JOIN��û���ұ���ƥ���¼��һ������������ΪNULL���б������ұ��������ʹ�������ʵָ����������һ������û�ж�Ӧ��¼�ļ�¼��
    mysql> select table1.* from table1
               LEFT JOIN table2 ON table1.id=table2.id
               where table2.id is NULL;
    

    ��������ҳ���table1�����е��У���idֵ��table2�в����ڣ���������table1�е���table2��û�ж�Ӧ�е���)����Ȼ��ٶ�table2.id������ΪNOT NULL��

  • USING (column_list)�Ӿ�����һϵ�б���������������е��С� ����һ��USING�Ӿ䣺
    A LEFT JOIN B USING (C1,C2,C3,...)
    

    ��������������ϵ�ͬһ��������ON����ʽ��

    A.C1=B.C1 AND A.C2=B.C2 AND A.C3=B.C3,...
    
  • 2������NATURAL LEFT JOIN������Ϊ�������ϵ�ͬ��һ����USING�Ӿ������������д��ڵ������е�һ��LEFT JOIN��
  • STRAIGHT_JOIN��ͬ��JOIN������������ұ�֮ǰ�����룬����������Щ����������Ż���������˳��Ŵ��ˡ�

һЩ���ӣ�

mysql> select * from table1,table2 where table1.id=table2.id;
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id;
mysql> select * from table1 LEFT JOIN table2 USING (id);
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id
           LEFT JOIN table3 ON table2.id=table3.id;

��10.5.4 MySQL�����Ż�LEFT JOIN��

7.14 INSERT�䷨

    INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
        [INTO] tbl_name [(col_name,...)]
        VALUES (expression,...),(...),...
��  INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
        [INTO] tbl_name [(col_name,...)]
        SELECT ...
��  INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
        [INTO] tbl_name
        SET col_name=expression, col_name=expression, ...

INSERT�����в��뵽һ�����ڵı��У�INSERT ... VALUES��ʽ����������ȷָ����ֵ�����У�INSERT ... SELECT��ʽ�����������ѡ����У��ж��ֵ����INSERT ... VALUES����ʽ��MySQL 3.22.5���Ժ�汾��֧�֣�col_name=expression�﷨��MySQL 3.22.10���Ժ�汾��֧�֡�

tbl_name����Ӧ�ñ��������еı�����������SET�Ӿ�ָ�����Ϊ��һ��ָ��ֵ��

  • �����ΪINSERT ... VALUES��INSERT ... SELECT��ָ���б��������е�ֵ������VALUES()������SELECT�ṩ������㲻֪�������е�˳��ʹ��DESCRIBE tbl_name���ҳ���
  • �κ�û����ȷ�ظ���ֵ���б�����Ϊ����ȱʡֵ�����磬�����ָ��һ���б���û�������������У�δ�������б�����Ϊ���ǵ�ȱʡֵ��ȱʡֵ��ֵ��7.7 CREATE TABLE�䷨��������
  • һ��expression����������һ��ֵ����ǰ���õ��κ��С����磬����������
    mysql> INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
    

    ������������

    mysql> INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
    
  • �����ָ���ؼ���LOW_PRIORITY��INSERT��ִ�б��Ƴٵ�û�������ͻ����ڶ�ȡ��������������£��ͻ�����ȵ����������ɺ������Ƶ��ʹ�ã������ܻ��ܳ�ʱ�䡣����INSERT DELAYED�ÿ����ϼ��������෴��
  • �������һ��������ֵ�е�INSERT��ָ���ؼ���IGNORE�������κθ���һ������PRIMARY��UNIQUE�����б����Բ��Ҳ������롣����㲻ָ��IGNORE������������κθ������йؼ�ֵ���б������������C API����mysql_info()�������б����뵽���С�
  • ���MySQL��DONT_USE_DEFAULT_FIELDSѡ�����ã�INSERT������һ�����󣬳�������ȷ����Ҫһ����NULLֵ��������ָ��ֵ����4.7.3 ����configureѡ����
  • INSERT INTO ... SELECT�����������������
    • ��ѯ���ܰ���һ��ORDER BY�Ӿ䡣
    • INSERT����Ŀ�ı����ܳ�����SELECT��ѯ���ֵ�FROM�Ӿ䣬��Ϊ����ANSI SQL�б���ֹ�ô������ڲ���ı���SELECT����������SELECT�����ܷ�����ͬһ�������ڼ�����ǰ������ļ�¼����ʹ����ѡ���Ӿ�ʱ������ܺ����׻�����
    • AUTO_INCREMENT��������һ��������

�����ʹ��INSERT ... SELECT��INSERT ... VALUES����ж��ֵ�б��������ʹ��C API����mysql_info()�õ���ѯ����Ϣ����Ϣ�ַ����ĸ�ʽ���£�

Records: 100 Duplicates: 0 Warnings: 0 

Duplicatesָ�����ܱ�������е���������Ϊ���������е�Ψһ������ֵ�ظ���Warningsָ���ڳ���ijЩ����ʱ���Բ�����ֵ�Ĵ������������κ������¶����ܷ�������

  • ����NULL����������NOT NULL���У��б�����Ϊ����ȱʡֵ��
  • �������з�Χ��ֵ���ø�һ�������У�ֵ������Ϊ��Χ���ʵ��Ķ˵�ֵ��
  • ���������������'10.34 a'��ֵ����β����������ȥ����Ȼ�����ֲ��ֱ����롣���ֵ��������һ�����֣��б����õ�0��
  • ��һ���ַ������뵽�����е���󳤶ȵ�һ��CHAR��VARCHAR��TEXT��BLOB���С�ֵ���ض�Ϊ�е���󳤶ȡ�
  • ��һ���������Ͳ��Ϸ���ֵ���뵽һ�����ڻ�ʱ���С��б�����Ϊ���������ʵ��ġ��㡱ֵ��

����INSERT����DELAYEDѡ����MySQLר����ѡ��-�����ͻ��в��ܵȵ�INSERT��ɣ����Ǻ����õġ�����Ϊ�ռǵ�¼ʹ��MySQLʱ��������Ҳ�����Ե����л��ܳ�ʱ����ɵ�SELECT��䣬����һ�����������⡣DELAYED����MySQL 3.22.15�б����룬����MySQL�� ANSI SQL92 ��һ����չ��

����ʹ��INSERT DELAYEDʱ���ͻ�������׼���ã����ҵ��������κ��������߳�ʹ��ʱ���н������롣

��һ��ʹ��INSERT DELAYED����Ҫ�ô��ǴӺܶ�ͻ����뱻������һ����д��һ���顣������ܶ൥���IJ���Ҫ���Ŀ졣

ע�⣬��ǰ�Ŷӵ���ֻ�Ǵ洢���ڴ��У�ֱ�����DZ����뵽���С�����ζ�ţ������ӲҪɱ��mysqld(kill -9)�����mysqld�������ϵ�������û��д�����̵��κ��Ŷӵ��б���ʧ��

������ϸ��������ΪINSERT��REPLACEʹ��DELAYEDѡ��ʱ������ʲô������������У����̡߳����յ�һ��INSERT DELAYED������̲߳��ҡ����������Ǵ������ж���һ���ض�����INSERT DELAYED��䡣

  • ��һ���̶߳�һ����ִ��һ��DELAYED���ʱ����������������Ĵ�������һ���������̱߳������Դ������ڸñ�������DELAYED��䡣
  • �̼߳�鴦�������Ƿ��Ѿ������һ��DELAYED�������û�У������ߴ�������ȥ��á���ʹ�������߳����ڱ��ϵ�һ��READ��WRITE����Ҳ�ܻ��DELAYED����Ȼ�����������򽫵ȴ�����ALTER TABLE����FLUSH TABLES�Ա�֤���ṹ�����µġ�
  • �߳�ִ��INSERT��䣬�����ǽ���д������������һ�еĸ����Ž����������̹߳�����һ�����С��κ��﷨�����ܱ��̷߳�����������ͻ�����
  • �˿Ͳ��ܱ������е��ظ�������AUTO_INCREMENTֵ�������ܴӷ�����������ǣ���ΪINSERT�ڲ���������ǰ���ء������ʹ��C API��ͬ��ԭ��mysql_info()�����������κ�������Ķ�����
  • ���б����뵽����ʱ��������־�д������̸߳��¡��ڶ��в��������£�����һ�б�����ʱ��������־�����¡�
  • ��ÿд��delayed_insert_limit�к󣬴���������Ƿ��κ�SELECT�����Ȼ��δ��ɣ�����������ڼ���֮ǰ����ִ����Щ��䡣
  • �������������Ķ�����û�и�����ʱ�����������������delayed_insert_timeout����û���յ��µ�INSERT DELAYED�����������ֹ��
  • ����Ѿ��ж���delayed_queue_size����һ���ض��Ĵ�����������δ������̵߳ȴ�ֱ�������пռ䡣�������ڱ�֤mysqld���������ӳٵ��ڴ���в�ʹ�������ڴ档
  • �������߳̽���Command�е�MySQL���̱�����ʾdelayed_insert�������ִ��һ��FLUSH TABLES�������KILL thread_idɱ������������ɱ����Ȼ���������˳�ǰ���Ƚ������Ŷӵ��д�����С������ڼ䣬����������������߳̽����κ��µ�INSERT������������֮��ִ��һ��INSERT DELAYED��������һ���µĴ������̡߳�
  • ע�⣬������ζ�ţ������һ��INSERT DELAYED�������Ѿ����У�INSERT DELAYED�����б�����INSERT���ߵ����ȼ������������������ȵ�INSERT DELAY�Ŷӱ�ա�ɱ���������߳�(��KILL thread_id)��ִ��FLUSH TABLES��
  • ����״̬�����ṩ�˹���INSERT DELAYED�������Ϣ��
    Delayed_insert_threads �������߳�����
    Delayed_writes ��INSERT DELAYED���������
    Not_flushed_delayed_rows �ȴ���д���������

    ����ͨ������һ��SHOW STATUS����ͨ��ִ��һ��mysqladmin extended-status����쿴��Щ������

ע��������Ӳ���ʹ�ã�INSERT DELAYED��һ��������INSERT�����Է�����Ҳ�ж��⿪�������������ʹ��INSERT DELAYED��ÿ������һ�������̡߳�����ζ�ţ���Ӧ��ֻ����ȷʵ�϶���Ҫ����ʱ���ʹ��INSERT DELAYED��

7.15 REPLACE�䷨

    REPLACE [LOW_PRIORITY | DELAYED]
        [INTO] tbl_name [(col_name,...)]
        VALUES (expression,...)
��  REPLACE [LOW_PRIORITY | DELAYED]
        [INTO] tbl_name [(col_name,...)]
        SELECT ...
��  REPLACE [LOW_PRIORITY | DELAYED]
        [INTO] tbl_name
        SET col_name=expression, col_name=expression,...
 

REPLACE������INSERT��ȫһ������������ڱ��е�һ���ϼ�¼������һ��Ψһ�����ϵ��¼�¼����ͬ��ֵ�����¼�¼������֮ǰ���ϼ�¼��ɾ������7.14 INSERT�䷨��

7.16 LOAD DATA INFILE�䷨

LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS
        [TERMINATED BY '\t']
        [OPTIONALLY] ENCLOSED BY '']
        [ESCAPED BY '\\' ]]
    [LINES TERMINATED BY '\n']
    [IGNORE number LINES]
    [(col_name,...)]

LOAD DATA INFILE����һ���ı��ļ����Ժܸߵ��ٶȶ���һ�����С����ָ��LOCAL�ؼ��ʣ��ӿͻ��������ļ������LOCALûָ�����ļ�����λ�ڷ������ϡ�(LOCAL��MySQL3.22.6���Ժ�汾�п��á���

Ϊ�˰�ȫԭ�򣬵���ȡλ�ڷ������ϵ��ı��ļ�ʱ���ļ����봦�����ݿ�Ŀ¼��ɱ������˶�ȡ�����⣬Ϊ�˶Է��������ļ�ʹ��LOAD DATA INFILE���ڷ������������������file��Ȩ�ޡ���6.5 ��MySQL�ṩ��Ȩ����

�����ָ���ؼ���LOW_PRIORITY��LOAD DATA����ִ�б��Ƴٵ�û�������ͻ���ȡ����

ʹ��LOCAL�����÷�����ֱ�Ӵ�ȡ�ļ���Щ����Ϊ�ļ������ݱ���ӿͻ��������͵�����������������һ���棬�㲻��ҪfileȨ��װ�ر����ļ���

��Ҳ����ʹ��mysqlimportʵ�ó���װ�������ļ������ɷ���һ��LOAD DATA INFILE����������������� --localѡ��ʹ��mysqlimport�ӿͻ������϶�ȡ���ݡ�����ͻ��ͷ�����֧��ѹ��Э�飬����ָ��--compress�ڽ����������ϻ�ø��õ����ܡ�

���ڷ�����������Ѱ���ļ�ʱ��������ʹ�����й���

  • �������һ������·������������ʹ�ø�·������
  • �������һ����һ������ǰ�ò��������·��������������Է�����������Ŀ¼�����ļ���
  • �������һ��û��ǰ�ò�����һ���ļ������������ڵ�ǰ���ݿ�����ݿ�Ŀ¼Ѱ���ļ���

ע����Щ������ζ��һ������./myfile.txt���������ļ��Ǵӷ�����������Ŀ¼��ȡ������Ϊ��myfile.txt��������һ���ļ��Ǵӵ�ǰ���ݿ�����ݿ�Ŀ¼�¶�ȡ��ҲҪע�⣬����������Щ��䣬��db1�ļ������ݿ�Ŀ¼��ȡ��������db2��

mysql> USE db1;
mysql> LOAD DATA INFILE "./data.txt" INTO TABLE db2.my_table; 

REPLACE��IGNORE�ؼ��ʿ��ƶ����е�Ψһ����¼���ظ��Ĵ����������ָ��REPLACE�����н���������ͬ��Ψһ��ֵ�������С������ָ��IGNORE��������Ψһ���������е��ظ��е����롣����㲻ָ���κ�һ��ѡ����ҵ��ظ�����ʱ������һ�����󣬲����ı��ļ������²��ֱ�����ʱ��

�����ʹ��LOCAL�ؼ��ʴ�һ�������ļ�װ�����ݣ�������û�а취�ڲ����ĵ���ֹͣ�ļ��Ĵ��䣬���ȱʡ����Ϊ����IGNORE��ָ��һ����

LOAD DATA INFILE��SELECT ... INTO OUTFILE�����������7.12 SELECT�䷨��Ϊ�˽�һ�����ݿ������д��һ���ļ���ʹ��SELECT ... INTO OUTFILE��Ϊ�˽��ļ��������ݿ⣬ʹ��LOAD DATA INFILE�����������FIELDS��LINES�Ӿ���﷨����ͬ�ġ������Ӿ��ǿ�ѡ�ģ��������ָ��������FIELDS������LINES֮ǰ��

�����ָ��һ��FIELDS�Ӿ䣬����ÿһ���Ӿ�(TERMINATED BY, [OPTIONALLY] ENCLOSED BY��ESCAPED BY)Ҳ�ǿ�ѡ�ģ��������������ָ������֮һ��

����㲻ָ��һ��FIELDS�Ӿ䣬ȱʡֵ�����������д����ͬ��

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'

����㲻ָ��һ��LINES�Ӿ䣬ȱʡֵ�����������д����ͬ��

LINES TERMINATED BY '\n' 

���仰˵��ȱʡֵ���¶�ȡ����ʱ��LOAD DATA INFILE�������£�

  • �ڻ��з���Ѱ���б߽�
  • �ڶ�λ�������зֽ��ֶ�
  • ��Ҫ�����ֶ����κ������ַ���װ
  • ������\����ͷ�Ķ�λ�������з�����\���������ֶ�ֵ�IJ��������ַ�

�෴��ȱʡֵ������д�����ʱ��SELECT ... INTO OUTFILE�������£�

  • ���ֶ�֮��д��λ��
  • �����κ������ַ���װ�ֶ�
  • ʹ����\��ת��������ֶ��еĶ�λ�������з�����\���ַ�
  • ����β��д���з�

ע�⣬Ϊ��д��FIELDS ESCAPED BY '\\'������Ϊһ�������ķ�б�߱���ȡ��ֵ�������ָ��2����б��ֵ��

IGNORE number LINESѡ��ɱ������������ļ���ʼ��һ�������ֵ�ͷ��

mysql> LOAD DATA INFILE "/tmp/file_name" into table test IGNORE 1 LINES;

������LOAD DATA INFILEһ��ʹ��SELECT ... INTO OUTFILE��һ�����ݿ������д��һ���ļ�����������Ͻ��ļ��������ݿ�ʱ������������ֶκʹ���ѡ�����ƥ�䣬����LOAD DATA INFILE��������ȷ�����ļ������ݡ��ٶ���ʹ��SELECT ... INTO OUTFILE���ɶ��ŷָ����ֶ�д��һ���ļ���

mysql> SELECT * FROM table1 INTO OUTFILE 'data.txt'
           FIELDS TERMINATED BY ','
           FROM ...

Ϊ�˽��ɶ��ŷָ����ļ�����������ȷ����佫�ǣ�

mysql> LOAD DATA INFILE 'data.txt' INTO TABLE table2
           FIELDS TERMINATED BY ',';

�෴���������ͼ��������ʾ������ȡ�ļ��������Ṥ������Ϊ������LOAD DATA INFILE���ֶ�֮��Ѱ�Ҷ�λ����

mysql> LOAD DATA INFILE 'data.txt' INTO TABLE table2
           FIELDS TERMINATED BY '\t';

���ܵĽ����ÿ�������н�������Ϊ�������ֶΡ�

LOAD DATA INFILE�ܱ�������ȡ���ⲿ��Դ��õ��ļ������磬��dBASE��ʽ���ļ������ɶ��ŷָ�����˫���Ű�Χ���ֶΡ�����ļ��е����ɻ��з���ֹ��������ʾ������˵���㽫����װ���ļ����ֶκ��д���ѡ�

mysql> LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
           FIELDS TERMINATED BY ',' ENCLOSED BY '"'
           LINES TERMINATED BY '\n';

�κ��ֶλ��д���ѡ�����ָ��һ�����ַ���('')��������ǿգ�FIELDS [OPTIONALLY] ENCLOSED BY��FIELDS ESCAPED BYֵ������һ�������ַ���FIELDS TERMINATED BY��LINES TERMINATED BYֵ�����dz���һ���ַ������磬д���ɻس����з��ԣ�CR+LF����ֹ���У����ȡ���������е�һ���ļ���ָ��һ��LINES TERMINATED BY '\r\n'�Ӿ䡣

FIELDS [OPTIONALLY] ENCLOSED BY�����ֶεİ�Χ�ַ����������(SELECT ... INTO OUTFILE)�������ʡ��OPTIONALLY�����е��ֶ���ENCLOSED BY�ַ���Χ�����������������һ������(ʹ��һ��������Ϊ�ֶηָ���)��ʾ�����棺

"1","a string","100.20"
"2","a string containing a , comma","102.20"
"3","a string containing a \" quote","102.20"
"4","a string containing a \", quote and comma","102.20"

�����ָ��OPTIONALLY��ENCLOSED BY�ַ��������ڰ�ΧCHAR��VARCHAR�ֶΣ�

1,"a string",100.20
2,"a string containing a , comma",102.20
3,"a string containing a \" quote",102.20
4,"a string containing a \", quote and comma",102.20

ע�⣬һ���ֶ�ֵ�е�ENCLOSED BY�ַ��ij���ͨ����ESCAPED BY�ַ���Ϊ��ǰ׺��ת�塣ҲҪע�⣬�����ָ��һ����ESCAPED BYֵ�����ܲ������ܱ�LOAD DATA INFILE��ȷ��������������磬���ת���ַ�Ϊ�գ�������ʾ�������ʾ���¡�ע�⵽�ڵ����еĵڶ����ֶΰ����������ŵ�һ�����ţ���(�����)����Ҫ��ֹ�ֶΣ�

1,"a string",100.20
2,"a string containing a , comma",102.20
3,"a string containing a " quote",102.20
4,"a string containing a ", quote and comma",102.20

�������룬ENCLOSED BY�ַ�������ڣ������ֶ�ֵ��β������ȥ���������Ƿ�ָ��OPTIONALLY����������OPTIONALLY����������Ͳ�������)��ENCLOSED BY�ַ����ȵ�ESCAPED BY�ַ����ֱ�����Ϊ��ǰ�ֶ�ֵ��һ���֡����⣬�������ֶ����ظ���ENCLOSED BY������Ϊ����ENCLOSED BY�ַ�������ֶα����Ը��ַ���ʼ�����磬���ENCLOSED BY '"'��ָ�����������´�����

"The ""BIG"" boss"  -> The "BIG" boss
The "BIG" boss      -> The "BIG" boss
The ""BIG"" boss    -> The ""BIG"" boss

FIELDS ESCAPED BY�������д�����������ַ������FIELDS ESCAPED BY�ַ����ǿյģ���������ǰ׺������ϵ������ַ���

  • FIELDS ESCAPED BY�ַ�
  • FIELDS [OPTIONALLY] ENCLOSED BY�ַ�
  • FIELDS TERMINATED BY��LINES TERMINATED BYֵ�ĵ�һ���ַ�
  • ASCII 0��ʵ���Ͻ�����ת���ַ�д�� ASCII'0'��������һ����ֵ�ֽڣ�

���FIELDS ESCAPED BY�ַ��ǿյģ�û���ַ���ת�塣ָ��һ����ת���ַ����ܲ���һ�������⣬�ر���������������е��ֶ�ֵ�����ղŸ����ı��е��κ��ַ���

�������룬���FIELDS ESCAPED BY�ַ����ǿյģ����ַ��ij��ֱ���ȥ���Һ����ַ�����������Ϊ�ֶ�ֵ��һ�����֡�������һ��ת�����0������N��������\0��\N�����ת���ַ�����\��)����Щ���б�����ΪASCII 0��һ����ֵ�ֽڣ���NULL�����������NULL�����Ĺ���

���ڸ��������\��- ת��䷨����Ϣ����7.1 ���֣�����д�ַ�����������

��ijЩ����£��ֶκ��д���ѡ���໥���ã�

  • ���LINES TERMINATED BY��һ�����ַ�������FIELDS TERMINATED BY�Ƿǿյģ���Ҳ��FIELDS TERMINATED BY��ֹ��
  • ���FIELDS TERMINATED BY��FIELDS ENCLOSED BYֵ���ǿյ�('')��һ���̶���(���޶���)��ʽ��ʹ�á��ù̶��и�ʽ�����ֶ�֮�䲻ʹ�÷ָ������෴����ֵֻ���еġ���ʾ�����ȱ�д��Ͷ��������磬����б�����ΪINT(7)���е�ֵʹ��7���ַ����ֶα�д�롣�������룬��ֵͨ����ȡ7���ַ���á��̶��и�ʽҲӰ��NULLֵ�Ĵ����������档ע�����������ʹ��һ�����ֽ��ַ������̶����ȸ�ʽ����������

NULLֵ�Ĵ����ж��֣�ȡ������ʹ�õ�FIELDS��LINESѡ�

  • ����ȱʡFIELDS��LINESֵ���������NULL��д��\N�������룬\N����ΪNULL����(�ٶ�ESCAPED BY�ַ�����\��)��
  • ���FIELDS ENCLOSED BY���ǿյģ����������ִʵ�NULL��Ϊ����ֵ���ֶ���Ϊһ��NULLֵ������(�ⲻͬ�ڰ�Χ��FIELDS ENCLOSED BY�ַ��е���NULL������Ϊ�ַ���'NULL'����)��
  • ���FIELDS ESCAPED BY�ǿյģ�NULL��Ϊ��NULL��д�롣
  • �ù̶��и�ʽ(��������FIELDS TERMINATED BY��FIELDS ENCLOSED BY���ǿյ�ʱ��)��NULL��Ϊһ�����ַ�����д�롣ע�⣬��д���ļ�ʱ���⵼��NULL�Ϳ��ַ����ڱ��в������֣���Ϊ���Ƕ���Ϊ���ַ�����д�롣����ڶ����ļ�ʱ��Ҫ�����������ߣ���Ӧ�ò�ʹ�ù̶��и�ʽ��

һЩ����LOAD DATA INFILE֧�ֵ������

  • �̶����ȵ���(FIELDS TERMINATED BY��FIELDS ENCLOSED BY��Ϊ��)��BLOB��TEXT�С�
  • �����ָ��һ���ָ�������һ����ͬ��������һ����ǰ׺��LOAD DATA INFILE������ȷ�ؽ������롣���磬����FIELDS�Ӿ佫�������⣺
    FIELDS TERMINATED BY '"' ENCLOSED BY '"'
    
  • ���FIELDS ESCAPED BY�ǿյģ�һ����������FIELDS TERMINATED BYֵ֮���FIELDS ENCLOSED BY��LINES TERMINATED BY���ֶ�ֵ��ʹ��LOAD DATA INFILE�������ֹ��ȡһ���ֶλ��С�������ΪLOAD DATA INFILE������ȷ�ؾ����ֶλ���ֵ���Ķ�������

��������װ������persondata�����У�

mysql> LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata;

û��ָ���ֶα�������LOAD DATA INFILE���������ж�ÿ�����а���һ���ֶΡ�ʹ��ȱʡFIELDS��LINESֵ��

�����ϣ������װ��һ�ű���ijЩ�У�ָ��һ���ֶα���

mysql> LOAD DATA INFILE 'persondata.txt'
           INTO TABLE persondata (col1,col2,...);

����������ļ��е��ֶ�˳��ͬ�ڱ����е�˳����Ҳ����ָ��һ���ֶα�������MySQL����֪�����ƥ�������ֶκͱ��е��С�

���һ�����к��ٵ��ֶΣ����ڲ����������ֶε��б�����Ϊȱʡֵ��ȱʡֵ��ֵ��7.7 CREATE TABLE�䷨��������

����ֶ�ֵȱʡ�����ֶ�ֵ�в�ͬ�Ľ��ͣ�

  • �����ַ������ͣ��б�����Ϊ���ַ�����
  • �����������ͣ��б�����Ϊ0��
  • �������ں�ʱ�����ͣ��б�����Ϊ�����͵��ʵ����㡱ֵ����7.3.6 ���ں�ʱ��������

�������һ��NULL����(ֻ�Ե�һ��TIMESTAMP��)��ָ��һ���ֶα�ʱ�����TIMESTAMP�д��ֶα�ʡ����TIMESTAMP��ֻ������Ϊ��ǰ�����ں�ʱ�䡣

�����������̫����ֶΣ�������ֶα����Բ��Ҿ������ּ�1��

LOAD DATA INFILE��Ϊ���е��������ַ���������㲻����������INSERT����ENUM��SET�еķ�ʽʹ������ֵ�����е�ENUM��SETֵ������Ϊ�ַ�����ָ����

���������ʹ��C API����LOAD DATA INFILE��ѯ���ʱ�����ͨ������API����mysql_info()�õ��йز�ѯ����Ϣ����Ϣ�ַ����ĸ�ʽ��ʾ�����棺

Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

��ֵͨ��INSERT������ʱ����ijЩ����³��־���(��7.14 INSERT�䷨)������������������̫�ٻ�̫����ֶ�ʱ��LOAD DATA INFILEҲ�������档����û���洢���κεط����������ֽ������ڱ���һ���Ƿ�˳���������õ����沢����Ҫȷ��֪����Ϊʲô�õ����ǣ�һ��������ʹ��SELECT ... INTO OUTFILE������һ���ļ����Ұ��������ԭ�������ļ��Ƚϡ�

�����й�INSERT���LOAD DATA INFILE��Ч�ʺͼӿ�LOAD DATA INFILE�ĸ�����Ϣ����10.5.6 ����INSERT��ѯ��

��

7.17 UPDATE�䷨

UPDATE [LOW_PRIORITY] tbl_name SET col_name1=expr1,col_name2=expr2,...
    [WHERE where_definition] [LIMIT #]

UPDATE����ֵ�����ִ�����е��У�SET�Ӿ�ָ���ĸ���Ҫ�޸ĺ�����Ӧ�ñ�������ֵ��WHERE�Ӿ䣬���������ָ���ĸ���Ӧ�ñ����£����������б����¡�

�����ָ���ؼ���LOW_PRIORITY��ִ��UPDATE���Ƴٵ�û�������ͻ����ڶ�ȡ��ʱ��

������һ������ʽ��tbl_name��ȡ�У�UPDATEʹ���еĵ�ǰֵ�����磬�����������ageΪ���ĵ�ǰֵ��1��

mysql> UPDATE persondata SET age=age+1;

UPDATE��ֵ�Ǵ����Ҽ��㡣���磬�����������age�У�Ȼ���1��

mysql> UPDATE persondata SET age=age*2, age=age+1;

�����������Ϊ������ǰ�е�ֵ��MySQLע�⵽��㲢�Ҳ���������

UPDATE����ʵ���ϱ��ı���е���������MySQL 3.22���Ժ�汾�У�C API����mysql_info()���ر�ƥ�䲢�Ҹ��µ���������UPDATE�ڼ䷢�������������

��MySQL3.23�У����ʹ��LIMIT #����ֻ֤��һ�������������б��ı䡣

��

7.18 USE�䷨

USE db_name 

USE db_name������MySQLʹ��db_name���ݿ���Ϊ���IJ�ѯ��ȱʡ���ݿ⡣���ݿⱣ�ֵ��Ự�������򷢳�����һ��USE��䣺

mysql> USE db1;
mysql> SELECT count(*) FROM mytable;      # selects from db1.mytable
mysql> USE db2;
mysql> SELECT count(*) FROM mytable;      # selects from db2.mytable

����USE���ʹ��һ���ض������ݿ��Ϊ��ǰ���ݿⲢ����ֹ���������������ݿ��еı�����������ӷ���db1���ݿ��е�author����db2���ݿ��е�editor����

mysql> USE db1;
mysql> SELECT author_name,editor_name FROM author,db2.editor
           WHERE author.editor_id = db2.editor.editor_id;

USE����ṩ��Sybase�ļ����ԡ�

��

7.19 FLUSH�䷨(������棩

FLUSH flush_option [,flush_option]

�������Ҫ���һЩMySQLʹ���ڲ����棬��Ӧ��ʹ��FLUSH���Ϊ��ִ��FLUSH���������reloadȨ�ޡ�

flush_option�����������κζ�����

HOSTS ��������������������ijЩ�����ı�IP���֣��������õ�������ϢHost ... is blocked����Ӧ���������������������MySQL������ʱ����һ̨�����������ж���max_connect_errors�������������ϵط�����MySQL�϶�ijЩ�������˲�����ֹ������һ������������������������������ٳ������ӡ���18.2.3 Host '...' is blocked����)�������-O max_connection_errors=999999999����mysqld����������������Ϣ��
LOGS �رղ����ٴ򿪱�׼�͸��¼�¼�ļ��������ָ����һ��û����չ���ĸ��¼�¼�ļ����µĸ��¼�¼�ļ�����չ���ֽ������ǰ���ļ���1��
PRIVILEGES ��mysql���ݿ���Ȩ��������װ��Ȩ�ޡ�
TABLES �ر����д򿪵ı���
STATUS ���ô����״̬������0��

��Ҳ������mysqladminʵ�ó���ʹ��flush-hosts, flush-logs, reload��flush-tables����������������ÿһ�����

��

7.20 KILL�䷨

KILL thread_id 

ÿ����mysqld��������һ���������߳����С�������ÿ�SHOW PROCESSLIST����쿴�ĸ��߳��������У�������KILL thread_id����ɱ��һ���̡߳�

�������processȨ�ޣ����ܿ�������ɱ�������̡߳�������ֻ�ܿ�������ɱ�����Լ����̡߳�

��Ҳ����ʹ��mysqladmin processlist��mysqladmin kill�����鲢ɱ���̡߳�

7.21 SHOW�䷨ (�õ������еȵ���Ϣ��

   SHOW DATABASES [LIKE wild]
or SHOW TABLES [FROM db_name] [LIKE wild]
or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild]
or SHOW INDEX FROM tbl_name [FROM db_name]
or SHOW STATUS
or SHOW VARIABLES [LIKE wild]
or SHOW [FULL] PROCESSLIST
or SHOW TABLE STATUS [FROM db_name] [LIKE wild]
or SHOW GRANTS FOR user

SHOW�ṩ�������ݿ⡢���ӡ��л����������Ϣ�����ʹ��LIKE wild���֣�wild�ַ���������һ��ʹ��SQL����%������_��ͨ������ַ�����

����ʹ��db_name.tbl_name��Ϊtbl_name FROM db_name�䷨����һ��ѡ���������������ȵģ�

mysql> SHOW INDEX FROM mytable FROM mydb;
mysql> SHOW INDEX FROM mydb.mytable;

SHOW DATABASES�г���MySQL�����������ϵ����ݿ⡣��Ҳ������mysqlshow����õ����ű���

SHOW TABLES�г���һ�����������ݿ��еı�����Ҳ������mysqlshow db_name����õ����ű���

ע�⣺���һ���û�û��һ�������κ�Ȩ�ޣ���������SHOW TABLES��mysqlshow db_name�е��������ʾ��

SHOW COLUMNS�г���һ���������е��С���������Ͳ�ͬ�����������ǻ���CREATE TABLE����������ע�⣬MySQL��ʱ�ı������͡���7.7.1 ��������˵���仯��

DESCRIBE����ṩ������SHOW COLUMNS����Ϣ����7.23 DESCRIBE �䷨ (�õ��е���Ϣ����

SHOW TABLE STATUS���ڰ汾3.23����)��������SHOW STATUS�������ṩÿ�����ĸ�����Ϣ����Ҳ����ʹ��mysqlshow --status db_name����õ����ű���������б����أ�

�� ����
Name ����
Type �������� (ISAM��MyISAM��HEAP)
Row_format �д洢��ʽ (�̶�, ��̬, ��ѹ����
Rows ������
Avg_row_length ƽ���г���
Data_length �����ļ��ij���
Max_data_length �����ļ�����󳤶�
Index_length �����ļ��ij���
Data_free �ѷ��䵫δʹ�����ֽ���
Auto_increment ��һ�� autoincrement(�Զ���1��ֵ
Create_time ���������ʱ��
Update_time �����ļ������µ�ʱ��
Check_time ���Ա�����һ������ʱ��
Create_options ��CREATE TABLEһ��ʹ�õĶ���ѡ��
Comment �������ʱ��ʹ�õ�ע�� (��ΪʲôMySQL���ܴ�ȡ����Ϣ��һЩ��Ϣ)��

SHOW FIELDS��SHOW COLUMNSһ��ͬ��ʣ�SHOW KEYS��SHOW INDEXһ��ͬ��ʡ���Ҳ������mysqlshow db_name tbl_name��mysqlshow -k db_name tbl_name �г�һ�ű����л�������

SHOW INDEX�Էdz�������ODBC��SQLStatistics���õĸ�ʽ����������Ϣ��������б����أ�

�� ����
Table ����
Non_unique 0������������ܰ����ظ���
Key_name ������
Seq_in_index �����е���˳���, �� 1 ��ʼ��
Column_name ������
Collation �������������б�������MySQL�У��������ֵA������) ��NULL��������)��
Cardinality ������Ψһֵ�����������ͨ������isamchk -a����.
Sub_part �����ֻ�Dz��ֱ������������ַ���������NULL�������������������

SHOW STATUS�ṩ��������״̬��Ϣ(��mysqladmin extended-statusһ��)������������������ʾ�����ܸ�ʽ�����ֿ����е㲻ͬ��

+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| Aborted_clients          | 0      |
| Aborted_connects         | 0      |
| Connections              | 17     |
| Created_tmp_tables       | 0      |
| Delayed_insert_threads   | 0      |
| Delayed_writes           | 0      |
| Delayed_errors           | 0      |
| Flush_commands           | 2      |
| Handler_delete           | 2      |
| Handler_read_first       | 0      |
| Handler_read_key         | 1      |
| Handler_read_next        | 0      |
| Handler_read_rnd         | 35     |
| Handler_update           | 0      |
| Handler_write            | 2      |
| Key_blocks_used          | 0      |
| Key_read_requests        | 0      |
| Key_reads                | 0      |
| Key_write_requests       | 0      |
| Key_writes               | 0      |
| Max_used_connections     | 1      |
| Not_flushed_key_blocks   | 0      |
| Not_flushed_delayed_rows | 0      |
| Open_tables              | 1      |
| Open_files               | 2      |
| Open_streams             | 0      |
| Opened_tables            | 11     |
| Questions                | 14     |
| Slow_queries             | 0      |
| Threads_connected        | 1      |
| Threads_running          | 1      |
| Uptime                   | 149111 |
+--------------------------+--------+

�����г���״̬���������к��壺

Aborted_clients ���ڿͻ�û����ȷ�ر������Ѿ��������Ѿ�����������������
Aborted_connects �����Ѿ�ʧ�ܵ�MySQL�����������ӵĴ�����
Connections ��ͼ����MySQL�������Ĵ�����
Created_tmp_tables ��ִ�����ʱ���Ѿ��������˵�������ʱ����������
Delayed_insert_threads ����ʹ�õ��ӳٲ��봦�����̵߳�������
Delayed_writes ��INSERT DELAYED��������
Delayed_errors ��INSERT DELAYEDд��ķ���ijЩ����(�����ظ���ֵ)��������
Flush_commands ִ��FLUSH����Ĵ�����
Handler_delete �����һ�ű���ɾ���еĴ�����
Handler_read_first ���������е�һ�еĴ�����
Handler_read_key �������ֻ��ڼ����С�
Handler_read_next ����������һ������һ�еĴ�����
Handler_read_rnd ����������һ���̶�λ�õ�һ�еĴ�����
Handler_update ������±���һ�еĴ�����
Handler_write ��������в���һ�еĴ�����
Key_blocks_used ���ڹؼ��ֻ���Ŀ��������
Key_read_requests ����ӻ������һ����ֵ�Ĵ�����
Key_reads �Ӵ�����������һ����ֵ�Ĵ�����
Key_write_requests ����һ���ؼ��ֿ�д�뻺�������
Key_writes ��һ����ֵ������д����̵Ĵ�����
Max_used_connections ͬʱʹ�õ����ӵ������Ŀ��
Not_flushed_key_blocks �ڼ��������Ѿ��ı䵫�ǻ�û����յ������ϵļ��顣
Not_flushed_delayed_rows ��INSERT DELAY�����еȴ�д����е�������
Open_tables �򿪱���������
Open_files ���ļ���������
Open_streams ����������(��Ҫ������־���أ�
Opened_tables �Ѿ��򿪵ı���������
Questions �����������IJ�ѯ��������
Slow_queries Ҫ������long_query_timeʱ��IJ�ѯ������
Threads_connected ��ǰ�򿪵����ӵ�������
Threads_running ����˯�ߵ��߳�������
Uptime �����������˶����롣

���������һЩע�ͣ�

  • ���Opened_tables̫����ô���table_cache��������̫С��
  • ���key_reads̫����ô���key_cache����̫С�����������ʿ�����key_reads/key_read_requests���㡣
  • ���Handler_read_rnd̫����ô��ܿ����д����IJ�ѯ��ҪMySQLɨ��������������û��ȷʹ�ü�ֵ������(join)��

SHOW VARIABLES��ʾ��һЩMySQLϵͳ������ֵ����Ҳ��ʹ��mysqladmin variables����õ������Ϣ�����ȱʡֵ�����ʣ�������mysqld����ʱʹ��������ѡ����������Щ�����Ĵ����������������������ʾ�����ܸ�ʽ�����ֿ����е㲻ͬ��

+------------------------+--------------------------+
| Variable_name          | Value                    |
+------------------------+--------------------------+
| back_log               | 5                        |
| connect_timeout        | 5                        |
| basedir                | /my/monty/               |
| datadir                | /my/monty/data/          |
| delayed_insert_limit   | 100                      |
| delayed_insert_timeout | 300                      |
| delayed_queue_size     | 1000                     |
| join_buffer_size       | 131072                   |
| flush_time             | 0                        |
| interactive_timeout    | 28800                    |
| key_buffer_size        | 1048540                  |
| language               | /my/monty/share/english/ |
| log                    | OFF                      |
| log_update             | OFF                      |
| long_query_time        | 10                       |
| low_priority_updates   | OFF                      |
| max_allowed_packet     | 1048576                  |
| max_connections        | 100                      |
| max_connect_errors     | 10                       |
| max_delayed_threads    | 20                       |
| max_heap_table_size    | 16777216                 |
| max_join_size          | 4294967295               |
| max_sort_length        | 1024                     |
| max_tmp_tables         | 32                       |
| net_buffer_length      | 16384                    |
| port                   | 3306                     |
| protocol-version       | 10                       |
| record_buffer          | 131072                   |
| skip_locking           | ON                       |
| socket                 | /tmp/mysql.sock          |
| sort_buffer            | 2097116                  |
| table_cache            | 64                       |
| thread_stack           | 131072                   |
| tmp_table_size         | 1048576                  |
| tmpdir                 | /machine/tmp/            |
| version                | 3.23.0-alpha-debug       |
| wait_timeout           | 28800                    |
+------------------------+--------------------------+

��10.2.3 ���ڷ�����������

SHOW PROCESSLIST��ʾ�ĸ��߳��������У���Ҳ��ʹ��mysqladmin processlist����õ������Ϣ���������processȨ�ޣ� ���ܿ������е��̣߳���������ܿ������Լ����̡߳���7.20 KILL�䷨������㲻ʹ��FULLѡ���ôÿ����ѯֻ��ͷ100�ַ�����ʾ������

SHOW GRANTS FOR user�г���һ���û����뷢�����ظ���Ȩ����Ȩ���

mysql> SHOW GRANTS FOR root@localhost;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root''localhost' WITH GRANT OPTION  |
+---------------------------------------------------------------------+
  

7.22 EXPLAIN�䷨(�õ�����SELECT����Ϣ)

    EXPLAIN tbl_name
or  EXPLAIN SELECT select_options

EXPLAIN tbl_name��DESCRIBE tbl_name��SHOW COLUMNS FROM tbl_name��һ��ͬ��ʡ�

������һ��SELECT���ǰ���Ϲؼ���EXPLAIN��MySQL����������δ���SELECT���ṩ�йر�����������ʲô�����������Ϣ��

������EXPLAIN�������֪����ʲôʱ�����Ϊ�����������Եõ�һ��ʹ�������ҵ���¼�ĸ����SELECT����Ҳ��֪���Ż����Ƿ���һ����Ѵ����������Ϊ��ǿ���Ż�����һ��SELECT���ʹ��һ���ض������������һ��STRAIGHT_JOIN�Ӿ䡣

���ڷǼ򵥵����ᣬEXPLAINΪ����SELECT����е�ÿ��������һ����Ϣ���������ǽ��������˳���г���MySQL��һ��ɨ��������ķ�ʽ����������ᣬ����ζ��MySQL�ӵ�һ�����ж�һ�У�Ȼ���ҵ��ڵڶ������е�һ��ƥ���У�Ȼ���ڵ�3�����еȵȡ������еı��������꣬�����ѡ����в��һ��ݱ��б�ֱ���ҵ�һ�����и����ƥ���У��Ӹñ�������һ�в�����������һ������

��EXPLAIN���������������

table
������������õı���
type
�������͡��������͵���Ϣ�����������
possible_keys
possible_keys��ָ��MySQL��ʹ���ĸ������ڸñ����ҵ��С�ע�⣬������ȫ�����ڱ��Ĵ�������ζ����possible_keys�е�ijЩ��ʵ���ϲ��������ɵı�����ʹ�á���������ǿյģ�û����ص�����������������£���Ҳ����ͨ������WHERE�Ӿ俴�Ƿ�������ijЩ�л��в����ʺ������������IJ�ѯ���ܡ����������������һ���ʵ���������������EXPLAIN����ѯ����7.8 ALTER TABLE�䷨��Ϊ�˿���һ�ű���ʲô������ʹ��SHOW INDEX FROM tbl_name��
key
key����ʾMySQLʵ�ʾ���ʹ�õļ������û��������ѡ�񣬼���NULL��
key_len
key_len����ʾMySQL����ʹ�õļ����ȡ��������NULL��������NULL��ע�����������MySQL��ʵ��ʹ��һ���ಿ��ֵ�ļ������֡�
ref
ref����ʾ�ĸ��л�����keyһ�����ڴӱ���ѡ���С�
rows
rows����ʾMySQL���������������ִ�в�ѯ��������
Extra
���Extra�а�������Only index������ζ����Ϣֻ���������е���Ϣ�������ġ�ͨ�������ɨ��������Ҫ�졣���Extra�а�������where used������ζ��һ��WHERE�Ӿ佫������������Щ������һ����ƥ�����ͻ���

��ͬ�����������������棬����õ�������͵Ĵ���

system
���ӽ���һ��(=ϵͳ��)������const�������͵�һ��������
const
���������һ��ƥ���У������ڲ�ѯ��ʼʱ����ȡ����Ϊ����һ�У������е���ֵ�ɱ�ʣ�µ��Ż�����Ϊ�dz����� const���ܿ죬��Ϊ����ֻ��ȡһ�Σ�
eq_ref
����ÿ����������ǰ�ı�������ϣ��Ӹñ��ж�ȡһ�С����������õ��������ͣ�����const���͡�������һ�����������в��ֱ�����ʹ�ò���������UNIQUE��PRIMARY KEY��
ref
����ÿ����������ǰ�ı�������ϣ�������ƥ������ֵ���н������ű��ж�ȡ���������ֻʹ�ü���������ǰ׺�������������UNIQUE��PRIMARY KEY�����仰˵��������᲻�ܻ��ڼ�ֵѡ�񵥸��еĻ�)��ʹ��ref�������ʹ�õļ�����ƥ��һЩ�У������������Dz����ġ�
range
ֻ����һ��������Χ���н���������ʹ��һ������ѡ���С�ref����ʾ�ĸ�������ʹ�á�
index
����ALL��ͬ������ֻ����������ɨ�衣��ͨ����ALL�죬��Ϊ�����ļ�ͨ���������ļ�С��
ALL
����ÿ����������ǰ�ı�������ϣ���Ҫ��һ�������ı�ɨ�衣��������ǵ�һ��û���const�ı�����ͨ�����ã�����ͨ�������е���������������ͨ������ͨ�����Ӹ��������������ALL��ʹ�����ܴ����ȵı��л��ڳ���ֵ����ֵ����������

ͨ�����EXPLAIN�����rows�е�����ֵ�����ܵõ�һ������һ������Ҫ��õ���ʾ����Ӧ�ô��Եظ�����MySQL��������������ִ�в�ѯ������ʹ��max_join_size�������Ʋ�ѯʱ��Ҳ��������֡���10.2.3 ���ڷ�����������

����������ʾ��һ��JOIN�����ʹ��EXPLAIN�ṩ����Ϣ�𲽱��Ż���

�ٶ�������ʾ�������SELECT��䣬��ʹ��EXPLAIN���飺

EXPLAIN SELECT tt.TicketNumber, tt.TimeIn,
            tt.ProjectReference, tt.EstimatedShipDate,
            tt.ActualShipDate, tt.ClientID,
            tt.ServiceCodes, tt.RepetitiveID,
            tt.CurrentProcess, tt.CurrentDPPerson,
            tt.RecordVolume, tt.DPPrinted, et.COUNTRY,
            et_1.COUNTRY, do.CUSTNAME
        FROM tt, et, et AS et_1, do
        WHERE tt.SubmitTime IS NULL
            AND tt.ActualPC = et.EMPLOYID
            AND tt.AssignedPC = et_1.EMPLOYID
            AND tt.ClientID = do.CUSTNMBR;

����������ӣ��ٶ���

  • ���Ƚϵ��б��������£�
    �� �� ������
    tt ActualPC CHAR(10)
    tt AssignedPC CHAR(10)
    tt ClientID CHAR(10)
    et EMPLOYID CHAR(15)
    do CUSTNMBR CHAR(15)
  • ������ʾ�������������
    �� ����
    tt ActualPC
    tt AssignedPC
    tt ClientID
    et EMPLOYID��������
    do CUSTNMBR��������
  • tt.ActualPCֵ���Ǿ��ȷֲ��ġ�

��ʼ�����κ��Ż���ʩ��ǰ��EXPLAIN������������Ϣ��

table type possible_keys                key  key_len ref  rows  Extra
et    ALL  PRIMARY                      NULL NULL    NULL 74
do    ALL  PRIMARY                      NULL NULL    NULL 2135
et_1  ALL  PRIMARY                      NULL NULL    NULL 74
tt    ALL  AssignedPC,ClientID,ActualPC NULL NULL    NULL 3872
      range checked for each record (key map: 35)

��Ϊtype��ÿ�ű���ALL����������ʾMySQL���ڶ����б�����һ���������ᣡ�⽫���൱����ʱ�䣬��Ϊ�������ÿ�ű��������ij˻�����������һ��ʵ��������74 * 2135 * 74 * 3872 = 45,268,558,720�С������������ֻ�������������೤ʱ�䡭��

�����������ͬ�������һ��������MySQL(��)���ܸ�Ч��������ʹ���������ڱ����У�VARCHAR��CHAR����ͬ�ģ�������������Ϊ��ͬ�ij��ȡ���Ϊtt.ActualPC������ΪCHAR(10)����et.EMPLOYID������ΪCHAR(15)����һ������ʧ�䡣

Ϊ���������г����ϵIJ�ͬ��ʹ��ALTER TABLE��ActualPC�ij��ȴ�10���ַ���Ϊ15���ַ���

mysql> ALTER TABLE tt MODIFY ActualPC VARCHAR(15);

����tt.ActualPC��et.EMPLOYID����VARCHAR(15)����ִ��EXPLAIN��������������

table type   possible_keys   key     key_len ref         rows    Extra
tt    ALL    AssignedPC,ClientID,ActualPC NULL NULL NULL 3872    where used
do    ALL    PRIMARY         NULL    NULL    NULL        2135
      range checked for each record (key map: 1)
et_1  ALL    PRIMARY         NULL    NULL    NULL        74
      range checked for each record (key map: 1)
et    eq_ref PRIMARY         PRIMARY 15      tt.ActualPC 1

�ⲻ�������ģ������Ǻ�һЩ��(rowsֵ�ij˻�����һ��74һ������)������汾�ڼ�����ִ�С�

��2�ָı�������tt.AssignedPC = et_1.EMPLOYID��tt.ClientID = do.CUSTNMBR�Ƚϵ��еij���ʧ�䣺

mysql> ALTER TABLE tt MODIFY AssignedPC VARCHAR(15),
                      MODIFY ClientID   VARCHAR(15);

����EXPLAIN�����������ʾ�����棺

table type   possible_keys   key     key_len ref            rows     Extra
et    ALL    PRIMARY         NULL    NULL    NULL           74
tt    ref    AssignedPC,ClientID,ActualPC ActualPC 15 et.EMPLOYID 52 where used
et_1  eq_ref PRIMARY         PRIMARY 15      tt.AssignedPC  1
do    eq_ref PRIMARY         PRIMARY 15      tt.ClientID    1

�⡰�����������ܵõ���һ���á�

ʣ�µ������ǣ�ȱʡ�أ�MySQL������tt.ActualPC�е�ֵ�Ǿ��ȷֲ��ģ����Ҷ�tt�������������Һã������׸���MySQL������Щ��

shell> myisamchk --analyze PATH_TO_MYSQL_DATABASE/tt
shell> mysqladmin refresh

���������ǡ����������ˣ�����EXPLAIN������������

table type   possible_keys   key     key_len ref            rows    Extra
tt    ALL    AssignedPC,ClientID,ActualPC NULL NULL NULL    3872    where used
et    eq_ref PRIMARY         PRIMARY 15      tt.ActualPC    1
et_1  eq_ref PRIMARY         PRIMARY 15      tt.AssignedPC  1
do    eq_ref PRIMARY         PRIMARY 15      tt.ClientID    1

ע���ڴ�EXPLAIN�����rows����һ������MySQL�����Ż����ġ������²⡱��Ϊ���Ż���ѯ����Ӧ�ü�������Ƿ�ӽ���ʵ��������ǣ������ͨ�������SELECT�������ʹ��STRAIGHT_JOIN������������FROM�Ӿ��Բ�ͬ�Ĵ����г��������ܵõ����õ����ܡ�

��

7.23 DESCRIBE�䷨ (�õ��е���Ϣ��

{DESCRIBE | DESC} tbl_name {col_name | wild}

DESCRIBE�ṩ����һ�ű����е���Ϣ��col_name������һ�������ֻ����SQL����%������_��ͨ�����һ���ַ�����

��������Ͳ�ͬ�����������ǻ���һ��CREATE TABLE��䣬ע��MySQL��ʱ�ı������͡���7.7.1 ��������˵���仯��

������Ϊ���� Oracle ���ݶ��ṩ�ġ�

SHOW����ṩ���Ƶ���Ϣ����7.21 SHOW�䷨(�õ������е���Ϣ)��

��

7.24 LOCK TABLES/UNLOCK TABLES�䷨

LOCK TABLES tbl_name [AS alias] {READ | [LOW_PRIORITY] WRITE}
            [, tbl_name {READ | [LOW_PRIORITY] WRITE} ...]
...
UNLOCK TABLES

LOCK TABLESΪ��ǰ�߳���������UNLOCK TABLES�ͷű���ǰ�̳߳��е��κ��������̷߳�������һ��LOCK TABLESʱ���򵱷����������ӱ��ر�ʱ����ǰ�߳����������б��Զ���������

���һ���̻߳����һ�����ϵ�һ��READ�������߳�(�����������߳�)ֻ�ܴӱ��ж������һ���̻߳��һ�����ϵ�һ��WRITE������ôֻ�г������߳�READ��WRITE���������̱߳���ֹ��

ÿ���̵߳ȴ�(û�г�ʱ)ֱ����������������������

WRITE��ͨ����READ���и��ߵ����ȼ�����ȷ�����ľ��챻����������ζ�ţ����һ���̻߳��READ��������Ȼ������һ���߳�����һ��WRITE��, ����READ�����󽫵ȴ�ֱ��WRITE�̵߳õ����������ͷ����������߳����ڵȴ�WRITE��ʱ�������ʹ��LOW_PRIORITY WRITE���������̻߳��READ���������϶������и�ʱ��û���߳̽���һ��READ������Ӧ��ֻʹ��LOW_PRIORITY WRITE��

����ʹ��LOCK TABLESʱ������������㽫ʹ�õ����б������������һ����ѯ�ж��ʹ��һ�ű�(�ñ���)��������ÿ�������õ�һ�������������߱�֤����������������

ע����Ӧ���������κ���������INSERT DELAYEDʹ�õı���������Ϊ����������£�INSERT��һ����ͬ���߳�ִ�С�

ͨ�����㲻������������Ϊ���е���UPDATE�����ԭ�û�������߳��ܷ����κ���������ִ��SQL�����̡߳�����������������һЩ�����

  • ����㽫��һ�ѱ���������������������㽫ʹ�õı��ǽϿ�ġ���Ȼȱ���ǣ�û�������߳��ܸ���һ��READ�����ı�����û�������߳��ܶ�һ��WRITE-�����ı���
  • MySQL��֧�����񻷾��������������Ҫ��֤��һ��SELECT��һ��UPDATE֮��û�������̵߳����������ʹ��LOCK TABLES��������ʾ������Ҫ��LOCK TABLES�Ա㰲ȫ��ִ�У�
    mysql> LOCK TABLES trans READ, customer WRITE;
    mysql> select sum(value) from trans where customer_id= some_id;
    mysql> update customer set total_value=sum_from_previous_statement
               where customer_id=some_id;
    mysql> UNLOCK TABLES;

û��LOCK TABLES������һ���߳̿�����һ��������ִ��SELECT��UPDATE���֮����trans���в���һ�����С�

ͨ��ʹ�ý�������(UPDATE customer SET value=value+new_value)��LAST_INSERT_ID()�������ںܶ����������ʹ��LOCK TABLES�����⡣

��Ҳ����ʹ���û�����������GET_LOCK()��RELEASE_LOCK()���һЩ�������Щ�������ڷ�������һ�Ź�ϣ���в�����pthread_mutex_lock()��pthread_mutex_unlock()ʵ���Ի�ø��ٶȡ���7.4.12 ����������

�й��������ߵĸ�����Ϣ����10.2.8 MySQL ������������

7.25 SET OPTION�䷨

SET [OPTION] SQL_VALUE_OPTION= value, ...

SET OPTION����Ӱ�����������Ŀͻ������ĸ���ѡ������õ��κ�ѡ�񱣳���Чֱ����ǰ�Ự��������ֱ��������ѡ��Ϊ��ͬ��ֵ��

CHARACTER SET character_set_name | DEFAULT
���ø�����ӳ�����/���ͻ�ӳ�������ַ�������character_set_name��ǰΨһ��ѡ���� cp1251_koi8��������������ͨ���༭��MySQLԴ����ַ��ġ�sql/convert.cc���ļ������µ�ӳ�䡣ȱʡӳ������character_set_name��DEFAULTֵ�ָ���ע������CHARACTER SETѡ����﷨��ͬ����������ѡ��Ŀ���﷨��
PASSWORD = PASSWORD('some password')
���õ�ǰ�û��Ŀ���κη��������û��ܸı����Լ��Ŀ��
PASSWORD FOR user = PASSWORD('some password')
���õ�ǰ�����������ϵ�һ���ض��û��Ŀ��ֻ�о߱���ȡmysql���ݿ���û��������������û�Ӧ����user@hostname��ʽ����������user��hostname��ȫ����������mysql.user����Ŀ��User��Host��һ�������磬�������һ����Ŀ��User��Host�ֶ���'bob'��'%.loc.gov'���㽫д�ɣ�
mysql> SET PASSWORD FOR bob@"%.loc.gov" = PASSWORD("newpass");

��

mysql> UPDATE mysql.user SET password=PASSWORD("newpass") where user="bob' and host="%.loc.gov";
SQL_AUTO_IS_NULL = 0 | 1
�������Ϊ1��ȱʡ )����ô����һ������һ���Զ���1���еı��������й������ҳ���������У�WHERE auto_increment_column IS NULL���ⱻһЩ ODBC ������Accessʹ�á�
SQL_BIG_TABLES = 0 | 1
�������Ϊ1��������ʱ�������ڴ����϶����ڴ��С��⽫����һЩ�����Ƕ���Ҫ�����ʱ���Ĵ�SELECT�������㽫����õ�The table tbl_name is full�Ĵ��󡣶���һ�������ӵ�ȱʡֵ��0������ʹ���ڴ��е���ʱ��)��
SQL_BIG_SELECTS = 0 | 1
�������Ϊ0�����һ��SELECT���Կ��ܻ��ܳ���ʱ�䣬MySQL������������һ�����׵���WHERE��䷢��ʱ�����õġ�һ����IJ�ѯ������Ϊһ�������ܱ���������max_join_size�е�SELECT����һ�������ӵ�ȱʡֵ��1��������������SELECT���)��
SQL_LOW_PRIORITY_UPDATES = 0 | 1
�������Ϊ1������INSERT��UPDATE��DELETE��LOCK TABLE WRITE���ȴ���ֱ������Ӱ��ı���û��δ�����SELECT��LOCK TABLE READ��
SQL_SELECT_LIMIT = value | DEFAULT
��SELECT��䷵�صļ�¼��������������һ��SELECT��һ��LIMIT�Ӿ䣬LIMIT������SQL_SELECT_LIMITֵ����һ�������ӵ�ȱʡֵ�ǡ����ޡ��ġ������ı������ƣ�ȱʡֵ����SQL_SELECT_LIMIT��һ��DEFAULTֵ�ָ���
SQL_LOG_OFF = 0 | 1
�������Ϊ1������ͻ���processȨ�ޣ��Ըÿͻ�û����־���ص���׼����־�ļ��С��ⲻӰ�������־��¼��
SQL_LOG_UPDATE = 0 | 1
�������Ϊ0, ����ͻ���processȨ�ޣ��Ըÿͻ�û����־���ص�������־�С��ⲻӰ���׼��־�ļ���
TIMESTAMP = timestamp_value | DEFAULT
Ϊ�ÿͻ�����ʱ�䡣�����ʹ�ø�����־�ָ��У��ⱻ�����õ�ԭ����ʱ���ǡ�
LAST_INSERT_ID = #
���ô�LAST_INSERT_ID()���ص�ֵ�������ڸ���һ������������ʹ��LAST_INSERT_ID()ʱ�����洢�ڸ�����־�С�
INSERT_ID = #
���õ�����һ��AUTO_INCREMENTֵʱ����INSERT����ʹ�õ�ֵ������Ҫ�������־һ��ʹ�á�

7.26 GRANT��REVOKE�䷨

GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
    ON {tbl_name | * | *.* | db_name.*}
    TO user_name [IDENTIFIED BY 'password']
        [, user_name [IDENTIFIED BY 'password'] ...]
    [WITH GRANT OPTION]

REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]
    ON {tbl_name | * | *.* | db_name.*}
    FROM user_name [, user_name ...]

GRANT��MySQL 3.22.11���Ժ�汾��ʵ�֡����ڸ���MySQL�汾��GRANT��䲻���κ����顣

GRANT��REVOKE��������ϵͳ������4��Ȩ�޼�������Ȩ�ͳ��ظ���MySQL�û���Ȩ����

ȫ�ּ���
ȫ��Ȩ��������һ�������������ϵ��������ݿ⡣��ЩȨ�޴洢��mysql.user���С�
���ݿ⼶��
���ݿ�Ȩ��������һ���������ݿ�����б�����ЩȨ�޴洢��mysql.db��mysql.host���С�
������
��Ȩ��������һ���������������С���ЩȨ�޴洢��mysql.tables_priv���С�
���
��Ȩ����������һ���������ĵ����С���ЩȨ�޴洢��mysql.columns_priv���С�

����GRANT��ι��������ӣ���6.11 ΪMySQL�����µ��û�Ȩ����

����GRANT��REVOKE��䣬priv_type����ָ�����е��κ�һ����

ALL PRIVILEGES      FILE                RELOAD
ALTER               INDEX               SELECT
CREATE              INSERT              SHUTDOWN
DELETE              PROCESS             UPDATE
DROP                REFERENCES          USAGE

ALL��ALL PRIVILEGES��һ��ͬ��ʣ�REFERENCES��û��ʵ�֣�USAGE��ǰ�ǡ�û��Ȩ�ޡ���һ��ͬ��ʡ�������������Ҫ����һ��û��Ȩ���û���ʱ��

Ϊ�˴�һ���û�����grant��Ȩ�ޣ�ʹ��GRANT OPTION��һ��priv_typeֵ��

REVOKE GRANT OPTION ON ... FROM ...;

���ڱ�������ָ����Ψһpriv_typeֵ��SELECT��INSERT��UPDATE��DELETE��CREATE��DROP��GRANT��INDEX��ALTER��

�����У�����ָ����Ψһpriv_typeֵ��(��������ʹ��һ��column_list�Ӿ�ʱ)��SELECT��INSERT��UPDATE��

����ͨ��ʹ��ON *.*�﷨����ȫ��Ȩ�ޣ�����ͨ��ʹ��ON db_name.*�﷨�������ݿ�Ȩ�ޡ������ָ��ON *��������һ����ǰ���ݿ⣬�㽫Ϊ�����ݿ�����Ȩ�ޡ�(���棺�����ָ��ON *����û��һ����ǰ���ݿ⣬�㽫Ӱ��ȫ��Ȩ�ޣ���

Ϊ�����ɶ������������û������Ȩ����MySQL֧����user@host��ʽָ��user_nameֵ���������Ҫָ��һ�������ַ���һ��user�ַ���(������-��)����һ�����������ַ���ͨ�����host�ַ���(������%��)��������������������û����������� (���磬'test-user'@'test-hostname')��

��������������ָ��ͨ��������磬user@"%.loc.gov"��������loc.gov�����κ�������user������user@"144.155.166.%"��������144.155.166�� C �������κ�������user��

����ʽ��user��user@"%"��һ��ͬ��ʡ�ע�⣺��������������û�����MySQL������(����ȱʡ��)����ҲӦ���������б����û���user@localhost����Ϊ���򣬵��û���ͼ�ӱ��ػ����ϵ�¼��MySQL������ʱ������mysql.user���еı��������������û���Ŀ����ʹ�ã������û�ͨ��������User=''����Ŀ��mysql.user���������塣ͨ��ִ�������ѯ������Լ������Ƿ��������㣺

mysql> SELECT Host,User FROM mysql.user WHERE User='';

Ŀǰ��GRANT��֧���60���ַ����������������ݿ��������һ���û���������ൽ16���ַ���

����һ�������е�Ȩ������4��Ȩ�޼�����߼����γɵġ����磬���mysql.user��ָ��һ���û���һ��ȫ��selectȨ�ޣ������ܱ����ݿ⡢�����е�һ����Ŀ���ϡ�

����һ���е�Ȩ�������¼��㣺

global privileges
OR (database privileges AND host privileges)
OR table privileges
OR column privileges

�ڴ��������£���ֻ�����û�һ��Ȩ�޼����ϵ�Ȩ�ޣ������ʵͨ������������˵���������ӡ�:) Ȩ�޼����̵�ϸ����6 MySQL ��ȡȨ��ϵͳ�и�����

�����Ϊһ����mysql.user���в����ڵ��û�/�����������Ȩ��һ����Ŀ�����Ӳ��ұ���ֱ����һ��DELETE����ɾ�������仰˵��GRANT���Դ���user������Ŀ������REVOKE����ɾ�����������ȷ��ʹ��DELETEɾ��.

��MySQL 3.22.12���Ժ��������һ�����û����������ȫ������Ȩ�ޣ��û��Ŀ��������Ϊ��IDENTIFIED BY�Ӿ�ָ���Ŀ���������һ��������û��Ѿ�����һ���������һ���µĴ��档

���棺����㴴��һ�����û����Dz�ָ��һ��IDENTIFIED BY�Ӿ䣬�û�û�п�����Dz���ȫ�ġ�

����Ҳ����SET PASSWORD�������á���7.25 SET OPTION�䷨��

�����Ϊһ�����ݿ���Ȩ�������Ҫ��mysql.db���д���һ����Ŀ��������Ϊ���ݿ����Ȩ��REVOKEɾ��ʱ�������Ŀ��ɾ����

���һ���û�û����һ�����ϵ��κ�Ȩ�ޣ����û�����һϵ�б�ʱ����������ʾ(���磬��һ��SHOW TABLES���)��

WITH GRANT OPTION�Ӿ�����û������������û���ָ����Ȩ��ˮƽ�ϵ��κ�Ȩ�޵���������Ӧ�ý����Դ���������grantȨ�޵��û�����Ϊ���в�ͬȨ�޵������û�Ҳ���ܺϲ�Ȩ�ޣ�

�㲻�����������û����Լ����߱���Ȩ�ޣ� agreeȨ����������������ӵ�е���ЩȨ�ޡ�

Ҫ֪�������㽫һ���ض�Ȩ�޼����ϵ�grant���������û����û��Ѿ�ӵ��(����δ�������裡)���ڸü����ϵ��κ�Ȩ��Ҳ���ɸ��û���Ȩ���ٶ�����Ȩһ���û���һ�����ݿ��ϵ�insertȨ�ޣ���ô�������Ȩ�����ݿ���selectȨ�޲���ָ��WITH GRANT OPTION���û��ܲ�������selectȨ�ޣ�����insert���������Ȩ�û������ݿ��ϵ�updateȨ�ޣ��û��ܷ���insert��select��update��

�㲻Ӧ�ý�alterȨ������һ��һ���û�����������������û�����ͨ������������ͼ�߸�Ȩ��ϵͳ��

ע�⣬���������ʹ�ü�ʹһ���û��ı����е�Ȩ�ޣ�������Ҫ��������û��ı�����Ȩ�޲����⽫ʹMySQL������һ�㡣

��mysqld����ʱ�����е�Ȩ�ޱ�����洢�������ݿ⡢������Ȩ��������Ч�����û���Ȩ������һ���û�����ʱ��Ч������GRANT��REVOKE����Ȩ��ִ�еĸ���������������֪����������ֹ��޸���Ȩ��(ʹ��INSERT��UPDATE�ȵ�)����Ӧ��ִ��һ��FLUSH PRIVILEGES��������mysqladmin flush-privileges���߷������ٴ�װ����Ȩ������6.9 Ȩ�ޱ仯��ʱ��Ч��

ANSI SQL�汾��GRANT��MySQL�汾֮��������

  • ANSI SQL û��ȫ�ֻ����ݿ⼶��Ȩ�ޣ����� ANSI SQL ��֧������MySQL֧�ֵ�Ȩ�ޡ�
  • ������ ANSI SQL ����һ�ű�ʱ����������Ȩ�޾���������������� ANSI SQL ����Ȩ�ޣ����л��ڸ�Ȩ�޵���ȨҲ��Ҳ����������MySQL�У�Ȩ��ֻ������ȷ��REVOKE��������MySQL��Ȩ��������

��

7.27��CREATE INDEX�䷨

CREATE [UNIQUE] INDEX index_name ON tbl_name (col_name[(length)],... )

CREATE INDEX�����MySQL�汾 3.22 ��ǰ�����κ����顣�� 3.22 ���Ժ�汾�У�CREATE INDEX��ӳ�䵽һ��ALTER TABLE�����������������7.8 ALTER TABLE�䷨��

ͨ����������CREATE TABLE����������ʱ��������������������7.7 CREATE TABLE�䷨��CREATE INDEX������������ӵ����б��С�

һ��(col1,col2,...)��ʽ���б�����һ����������������ֵ�и����е�ֵ�������ɡ�

����CHAR��VARCHAR�У���������ֻ��һ���еIJ�����������ʹ��col_name(length)�䷨������BLOB��TEXT������Ҫ����)��������ʾ�����ʹ��name�е�ͷ10���ַ�����һ��������

mysql> CREATE INDEX part_of_name ON customer (name(10));
��Ϊ���������ͨ����ͷ10���ַ���ͬ���������Ӧ�ò��ȴ�����name�еĴ��������������١����⣬������ʹ�ò��ֵ�����ʹ���������Ϊ��С���ļ��󲿷�, ���ܱ���ܶ���̿ո��ҿ���Ҳ�ӿ�INSERT������ 

ע�⣬���������ʹ��MySQL�汾 3.23.2 ����²�������ʹ��MyISAM�������ͣ���ֻ���ڿ�����NULLֵ���л�һ��BLOB/TEXT��������һ��������

����MySQL���ʹ�������ĸ�����Ϣ����10.4 MySQL������ʹ����

��

7.28 DROP INDEX�䷨

DROP INDEX index_name ON tbl_name

DROP INDEX��tbl_name��������Ϊindex_name��������DROP INDEX��MySQL 3.22 ��ǰ�İ汾�в����κ����顣�� 3.22 ���Ժ�DROP INDEX��ӳ�䵽һ��ALTER TABLE�����������������7.8 ALTER TABLE�䷨��

7.29 ע�;䷨

MySQL������֧��# to end of line��-- to end of line��/* in-line or multiple-line */ע�ͷ��

mysql> select 1+1;     # This comment continues to the end of line
mysql> select 1+1;     -- This comment continues to the end of line 
mysql> select 1 /* this is an in-line comment */ + 1;
mysql> select 1+
/*
this is a
multiple-line comment
*/
1;

ע��--ע�ͷ��Ҫ������--�Ժ�������һ���ո�

���ܷ���������ղ�������ע�;䷨��mysql�ͻ�����/* ... */ע�͵ķ�ʽ����һЩ���ƣ�

  • �����ź�˫�����ַ���������־һ�����������ַ����Ŀ�ʼ����ʹ��һƪע���ڡ����������������û����2������ƥ�䣬��������֪��ע���Ѿ���������������ڽ���ʽ����mysql�����ܸ�֪��Щ���ң���Ϊ��ʾ����mysql>��Ϊ'>��">��
  • һ���ֺű�����ָ����ǰ��SQL���������Ҹ��������κζ�����ʾ��һ�еĿ�ʼ��

���㽻��ʽ����mysqlʱ�͵�����������һ���ļ��в���mysql < some-file����mysql���Ǹ��ļ�����������ʱ����Щ���ƶ����á�

MySQL��֧����--����ANSI SQLע�ͷ�񡣼�5.4.7 ��--����Ϊһƪע�͵Ŀ�ʼ��

��

7.30 CREATE FUNCTION/DROP FUNCTION�䷨

CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|REAL|INTEGER}
       SONAME shared_library_name

DROP FUNCTION function_name

һ���û��ɶ��庯��(UDF)����һ����MySQL��ԭ�������ã�������ABS()��CONCAT()���º�������չMySQL�ķ�����

AGGREGATE��MySQL 3.23��һ����ѡ�һ��AGGREGATE�������ܾ���һ��ԭ��MySQL GROUP������SUM��COUNT()��

CREATE FUNCTION��mysql.funcϵͳ���б��溯���������ͺ͹���������������mysql���ݿ���insert��deleteȨ���Դ���������������

���л�Ծ�ĺ�����ÿ�η���������ʱ������װ�أ�������ʹ��--skip-grant-tablesѡ������mysqld������������£�UDF��ʼ������������UDF���޷���õġ���һ����Ծ������һ���Ѿ���CREATE FUNCTIONװ�ز���û��DROP FUNCTIONɾ���ĺ�����)

���ڱ�д�û��ɶ��庯����ָ���14 ΪMySQL�����º���������UDF�Ĺ������ƣ����������� C �� C++ ��д����IJ���ϵͳ����֧�ֶ�̬װ�ز�������붯̬������mysqld(���Ǿ�̬)��

��

7.31 MySQL�Ա����ʺ�������

һ������������Դ������ͼʹ��MySQL���õ��������ͻ�����ͬ���������������ݿ��������TIMESTAMP��GROUP��������������(���磬ABS��һ������������)�����ǵ�ʹ��������Ҳ�������ĺ���ʱ����һ������������ ( ��֮�䲻�����׿ա�

���д���ȷ����MySQL�б����������ǵĴ������ ANSI SQL92 ��ֹ��Ϊ�л����(���磬group)��һЩ��������ΪMySQL��Ҫ���Dz�������(��ǰ)ʹ��һ��yacc��������

action add aggregate all
alter after and as
asc avg avg_row_length auto_increment
between bigint bit binary
blob bool both by
cascade case char character
change check checksum column
columns comment constraint create
cross current_date current_time current_timestamp
data database databases date
datetime day day_hour day_minute
day_second dayofmonth dayofweek dayofyear
dec decimal default delayed
delay_key_write delete desc describe
distinct distinctrow double drop
end else escape escaped
enclosed enum explain exists
fields file first float
float4 float8 flush foreign
from for full function
global grant grants group
having heap high_priority hour
hour_minute hour_second hosts identified
ignore in index infile
inner insert insert_id int
integer interval int1 int2
int3 int4 int8 into
if is isam join
key keys kill last_insert_id
leading left length like
lines limit load local
lock logs long longblob
longtext low_priority max max_rows
match mediumblob mediumtext mediumint
middleint min_rows minute minute_second
modify month monthname myisam
natural numeric no not
null on optimize option
optionally or order outer
outfile pack_keys partial password
precision primary procedure process
processlist privileges read real
references reload regexp rename
replace restrict returns revoke
rlike row rows second
select set show shutdown
smallint soname sql_big_tables sql_big_selects
sql_low_priority_updates sql_log_off sql_log_update sql_select_limit
sql_small_result sql_big_result sql_warnings straight_join
starting status string table
tables temporary terminated text
then time timestamp tinyblob
tinytext tinyint trailing to
type use using unique
unlock unsigned update usage
values varchar variables varying
varbinary with write when
where year year_month zerofill

���з���(�����ϱ�)��ANSI SQL��ֹ���DZ�MySQL������Ϊ��/������������Ϊ��Щ���ֵ�һЩ�Ǻ���Ȼ�����ֲ��Һܶ����Ѿ�ʹ�������ǡ�

  • ACTION
  • BIT
  • DATE
  • ENUM
  • NO
  • TEXT
  • TIME
  • TIMESTAMP

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

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