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


��һ��, ǰһ��, ��һ��, ����һ��


18 �����ͳ�������

18.1 ����MySQL���DZ�����ô��

����MySQL�ڷ�������֮ǰ��������ƽ̨�ϱ����ԡ��Ⲣ����ζ����MySQL��û���κδ��󣬵��������д����������Ǻ��ٵIJ��Һ����ѷ��֡���������һ�����Ⲣ�������㳢���ҳ�������ʲô�ݻ�������ϵͳ�����������а����ģ���Ϊ�㽫��һ�����û���ʹ�����������޸���

������Ӧ�������ҳ�����mysqld�ػ������Ƿ����������������Ƿ������Ŀͻ��йء���������mysqladmin version��������mysqld����������ִ���˶೤ʱ�䣬����mysqld���ˣ����������ļ���mysql-data-directory/'hostname'.err�����ҵ���ԭ����

��Ϊ����֪��һЩ����Ϊʲô�������������ż���Ϊ�����˹����Ķ����Ƿ�ʹ���������볢���������飺

18.2 ʹ��MySQLʱ��һЩ��������

18.2.1 MySQL server has gone away����

��С��Ҳ�漰�й�Lost connection to server during query�Ĵ�����

��MySQL server has gone away���������ԭ���Ƿ�������ʱ�˲��ҹر������ӡ�ȱʡ�أ�����û�����鷢������������ 8��Сʱ���ر����ӡ�����������mysqldʱͨ������wait_timeout�����ı�ʱ�����ơ�

������ͨ��ִ��mysqladmin version���Ҽ����������е�ʱ��������MySQL��û������

��������һ���ű�����ֻ���ٷ�����ѯ�ÿͻ�����һ���Զ����������ӡ�

���������£���ͨ���ܻ������д�������(���õ�����OS���ص�)��

CR_SERVER_GONE_ERROR �ͻ����ܷ���һ����������������
CR_SERVER_LOST ��д������ʱ���ͻ�û�г�����������û�еõ���������һ�������Ĵ���(���κδ���)��

�����������������Ͳ���ȷ�Ļ�̫���IJ�ѯ����Ҳ���ܵõ���Щ����������mysqld�õ�һ��̫�����������İ�������Ϊ�ͻ������˲��ر����ӡ���������Ҫ�ϴ��IJ�ѯ(���磬���������ڴ����ϴ���BLOB��)��������ʹ��-O max_allowed_packet=#ѡ��(ȱʡ1M)����mysqld�����Ӳ�ѯ���ơ��������ڴ水�����䣬����mysqldֻ�����㷢���ϴ���ѯʱ��mysqld���뷵�ؽϴ��Ľ�����ʱ����ʹ�ø������ڴ棡

18.2.2 Can't connect to [local] MySQL server����

һ��MySQL�ͻ��������ֲ�ͬ�ķ�ʽ����mysqld��������Unix�׽��֣���ͨ�����ļ�ϵͳ�е�һ���ļ�(ȱʡ��/tmp/mysqld.sock��)�������ӣ���TCP/IP����ͨ��һ���˿ں����ӡ�Unix�׽��ֱ�TCP/IP���죬����ֻ����������ͬһ̨�������ϵķ������������㲻ָ����������������ָ��������������localhost��ʹ��Unix�׽��֡�

����(2002��Can't connect to ...ͨ����ζ��û��һ��MySQL������������ϵͳ�ϻ�����ͼ����mysqld������ʱ��������ʹ��һ���������׽����ļ���TCP/IP�˿ڡ�

�ɼ���(ʹ��ps)�����ķ���������һ����Ϊmysqld�Ľ�������������û���κ�mysqld���̣���Ӧ������һ������4.15.2 ����MySQL��������������

����һ��mysqld�����������У�������ͨ��������Щ��ͬ������������������(��Ȼ���˿ںź��׽���·�������������İ�װ���Dz�ͬ��)��

shell> mysqladmin version
shell> mysqladmin variables
shell> mysqladmin -h `hostname` version variables
shell> mysqladmin -h `hostname` --port=3306 version
shell> mysqladmin -h 'ip for your host' version
shell> mysqladmin --socket=/tmp/mysql.sock version

ע��hostname����ʹ�÷����š�`�����������š�'������Щ����hostname������������ǰ������)��������mysqladmin�����С�

���ǿ�������Can't connect to local MySQL server������һЩԭ����

�������õ�����Can't connect to MySQL server on some_hostname�������Գ������в����ҳ�������ʲô��

18.2.3 Host '...' is blocked����

�������õ���������һ��������

Host 'hostname' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'

����ζ�ţ�mysqld�Ѿ��õ��˴���(max_connect_errors)������'hostname'������;���ж��˵�������������max_connect_errors��ʧ����������mysqld�϶�������(������һ���ڿ͵Ĺ���)��������ֹ��վ����һ�������ӣ�ֱ��ij��ִ������mysqladmin flush-hosts��

ȱʡ�أ�mysqld��10�����Ӵ���������һ̨������������ͨ�����������������������׵ص�������

shell> safe_mysqld -O max_connect_errors=10000 &

ע�⣬�Ը����������������õ�����������Ϣ����Ӧ�����ȼ�����������TCP/IP������û�����⡣��������TCP/IP���Ӳ������У�����max_connect_errors������ֵ����Ҳ�����а�����

18.2.4 Too many connections����

����������������MySQLʱ�����õ�����Too many connections������ζ���Ѿ���max_connections���ͻ�������mysqld��������

��������Ҫ��ȱʡ(100)���������ӣ���ô��Ӧ������mysqld���ø����� max_connections ����ֵ��

ע�⣬mysqldʵ��������(max_connections+1)���ͻ����ӡ�����һ��������Ϊһ����ProcessȨ�޵��û������ġ�ͨ����������Ȩ�޸�һ���û�(���Dz�Ӧ����Ҫ��)��������Ȩ��һ������Ա���Ե�¼����ʹ��SHOW PROCESSLIST�ҳ�ʲô���ܳ�������7.21 SHOW�䷨(�õ������е���Ϣ����

18.2.5 Out of memory����

�����㷢����ѯ���ҵõ������������Ĵ�����

mysql: Out of memory at line 42, 'malloc.c'
mysql: needed 8136 byte (8k), memory in use: 12481367 bytes (12189k)
ERROR 2008: MySQL client ran out of memory

ע�⣬����ָ����MySQL����mysql������������ԭ���ܼ򵥣��ͻ�û���㹻���ڴ��洢ȫ��������

Ϊ�������������⣬���ȼ������IJ�ѯ�Ƿ���ȷ����Ӧ�÷�����ô�����У�����������������������������ʹ��mysql --quick����ʹ��mysql_use_result()�����������ϡ��⽫���ٵĸ��������˿ͻ���(ֻ�Ƿ���������)��

18.2.6 Packet too large����

��һ��MySQL�ͻ���mysqld�������õ�һ����max_allowed_packet���ֽڳ��İ���������һ��Packet too large��������ֹ���ӡ�

����������ʹ��mysql�ͻ���������ͨ����mysql --set-variable=max_allowed_packet=8Mָ��һ�������Ļ������������ͻ�������

����������ʹ�ò�������ָ����������С�������ͻ�(���� DBI)������Ҫ��������������ʱ���ð���С��������ʹ��mysqld��������ѡ������max_allowed_packetΪһ�������ijߴ硣���磬��������������һ��ȫ����BLOB����һ�ű��У��㽫��Ҫ��--set-variable=max_allowed_packet=24Mѡ����������������

��

18.2.7 The table is full����

���������������ڴ���ʱ�����ñ�tmp_table_size�ֽڴ�ʱ��Ϊ�˱����������⣬������ʹ��mysqld��-O tmp_table_size=#ѡ����������ʱ���Ĵ�С�������㷢�������ʵIJ�ѯ֮ǰʹ��SQLѡ��SQL_BIG_TABLES����7.25 SET OPTION�䷨��

��Ҳ����ʹ��--big-tablesѡ������mysqld������Ϊ���в�ѯʹ��SQL_BIG_TABLES��ȫ��ͬ��

18.2.8 Commands out of sync in client����

�����������Ŀͻ������еõ�Commands out of sync; You can't run this command now���������Դ����Ĵ������ÿͻ�������

�����ܷ��������磬����������ʹ��mysql_use_result()���������Ѿ�������mysql_free_result()֮ǰ��ͼִ���²�ѯ����������mysql_use_result()��mysql_store_result()֮����ͼִ�з������ݵ�2����ѯ����Ҳ���ܷ�����

18.2.9 Ignoring user����

�������õ����д�����

Found wrong password for user: 'some_user@some_host'; Ignoring user

����ζ����mysqld����ʱ�������ٴ�װ��Ȩ�ޱ�ʱ������user�����ҵ���һ����һ����Ч��������Ŀ����������Ŀ�򵥵ر�Ȩ��ϵͳ���ԡ�

���ܵ�������������ԭ����������

18.2.10 Table 'xxx' doesn't exist����

�������õ�����Table 'xxx' doesn't exist��Can't find file: 'xxx' (errno: 2)������ζ���ڵ�ǰ���ݿ���û����Ϊxxx�ı����ڡ�

ע�⣬��ΪMySQLʹ��Ŀ¼���ļ��洢���ݿ��ͱ������ݿ��ͱ����������ִ�Сд��������Win32�ϣ����ݿ��ͱ����������ִ�Сд�ģ������ڲ�ѯ�ж����б������ñ���ʹ����ͬ�Ĵ�Сд����

��������SHOW TABLES�������ڵ�ǰ���ݿ������ĸ�������7.21 SHOW�䷨(�õ������е���Ϣ����

18.3 MySQL��������һ�������Ĵ���

������һ����������������ʱ��MySQL���������飺

Ϊ�˻����������⣬�����Բ�ȡ�����ж���

18.4 ���δ�һ���ı��ļ�����SQL����

һ���أ�mysql�ͻ��������Ե�ʹ�ã���������

shell> mysql database

Ȼ����Ҳ���԰�����SQL��������һ���ļ��в��Ҹ���mysql�Ӹ��ļ���ȡ�����롣Ҫ��������������һ���ı��ļ���text_file��������������Ҫִ�е����Ȼ��������������mysql��

shell> mysql database < text_file

��Ҳ��������һ��USE db_name�������ı��ļ��������������£�����������ָ�����ݿ����Dz���Ҫ�ģ�

shell> mysql < text_file
��12.1 ��ͬ��MySQL���������� 

18.5 MySQL���Ķ��洢��ʱ�ļ�

MySQLʹ��TMPDIR����������ֵ��Ϊ�洢��ʱ�ļ���Ŀ¼��·������������û������TMPDIR��MySQLʹ��ϵͳȱʡֵ����ͨ������/tmp������/usr/tmp������������������ʱ�ļ�Ŀ¼���ļ�ϵͳ̫С����Ӧ�ñ༭safe_mysqld�趨TMPDIRָ�������㹻�ռ���һ���ļ�ϵͳ����Ҳ����ʹ��mysqld��--tmpdirѡ��Ŀ������ʱĿ¼��

MySQL�ԡ������ļ�������������ʱ�ļ����Ᵽ֤������mysqld����ֹ����ʱ�ļ�Ҳ����ɾ����ʹ�������ļ���ȱ�����㽫������һ��������ʱ�ļ���������ʱ�ļ�Ŀ¼���ڵ��ļ�ϵͳ��

������(ORDER BY��GROUP BY)ʱ��MySQLͨ��ʹ��һ����������ʱ�ļ����������̿ռ������ǣ�

(�洢�����ij��� + sizeof (���ݿ�ָ��))
* ƥ��������
* 2

sizeof(���ݿ�ָ��)ͨ����4��������δ����ȷʵ�ܴ��ı��������ӡ�

��һЩSELECT��ѯ��MySQLҲ������ʱSQL������Щû������������SQL_*����ʽ�����֡�

ALTER TABLE��OPTIMIZE TABLE��ԭ���ݿ�����ͬһ��Ŀ¼�д���һ����ʱ����

18.6 ����������/tmp/mysql.sock ������ɾ��

���������������⣬��ʵ���κ��˿���ɾ��MySQLͨѶ�׽�����/tmp/mysql.sock������Unix�Ĵ������汾�ϣ�����ͨ��Ϊ������sticky��t��λ������������/tmp���ļ�ϵͳ����Ϊroot��¼�������������飺

shell> chmod +t /tmp

�⽫����������/tmp���ļ�ϵͳʹ���ļ����������ǵ������߻򳬼��û�(root)ɾ����

����ִ��ls -ld /tmp����stickyλ�Ƿ������ã���������һλ����λ��t����λ�������ˡ�

18.7 Access denied����

��6.6 Ȩ��ϵͳ���ι����������ر�Ҫ��6.13 ����Access denied������ԭ����

18.8 ������Ϊһ��һ���û�����MySQL

MySQL������mysqld�ܱ��κ��û����������С�Ϊ�˽�mysqld����Unix�û�user_name�����У����������������飺

  1. �������������У�ֹͣ������(ʹ��mysqladmin shutdown)��
  2. �ı����ݿ�Ŀ¼���ļ��Ա�user_name��Ȩ�޶���д�ļ�(��������Ҫ��ΪUnix��root�û���������)��
    shell> chown -R user_name /path/to/mysql/datadir
    

    ������MySQL����Ŀ¼�е�Ŀ¼���ļ��Ƿ������ӣ���Ҳ����Ҫ˳����Щ���Ӳ��ı�����ָ����Ŀ¼���ļ���chown -R���ܸ����������ӡ�

  3. ��user_name�û�������������������������ʹ��MySQL 3.22���Ժ��汾����Unix root�û�����mysqld��ʹ��--user=user_nameѡ�mysqld���ڽ����κ�����֮ǰ�л�����Unix user_name�û����С�
  4. ������ϵͳ����������ʱ����ʹ��mysql.server�ű�����mysqld����Ӧ�ñ༭mysql.server��su���û�user_name����mysqld����ʹ��--userѡ������mysqld�������ı�safe_mysqld�DZ�Ҫ�ġ���

���ڣ�����mysqld����Ӧ��������ΪUnix�û�user_name���У����������á�������һ������û�б仯��Ȩ�ޱ������ݡ�ȱʡ ��(���������˽ű�mysql_install_db��װ��Ȩ�ޱ���)��MySQL�û�root��Ψһ�д�ȡmysql���ݿ��򴴽����������ݿ�Ȩ�޵��û����������ı�����ЩȨ�ޣ�����������Ȼ���֡�������Ϊһ��Unix�û�������root��¼ʱ���ⲻӦ����ֹ����ΪMySQL root�û�����ȡMySQL��ֻҪΪ�ͻ�����ָ��-u root��ѡ�

ע��ͨ�������������ṩ-u root����Ϊroot��ȡMySQL������ΪUnix root�û�������Unix�û�����MySQLû�й�ϵ��MySQL�Ĵ�ȡȨ�޺��û�����Unix�û���������ȫ�ֿ��ġ�Ψһ��Unix�û����йص��ǣ�������������һ���ͻ�����ʱ���㲻�ṩһ��-uѡ��ͻ�����ͼʹ������Unix��¼����Ϊ����MySQL�û����������ӡ�

��������Unix������������ȫ��������Ӧ�������ڴ�ȡ����ΪMySQL root�û�����һ���������������̨��������һ���ʺŵ��κ��û�������mysql -u root db_name��������ϲ�������κ����顣

18.9 ������������һ�����ǵĿ���

������������MySQL��root�û��Ŀ�������������й��ָ̻�����

  1. ͨ������һ��kill������kill -9)��mysqld���������ر�mysqld��������pid ��������һ��.pid�ļ��У�ͨ����MySQL���ݿ�Ŀ¼�У�
    kill `cat /mysql-data-directory/hostname.pid`
    

    ��������һ��UNIX root�û������з���������ͬ�û���������

  2. ʹ��--skip-grant-tablesѡ������mysqld��
  3. ��mysql -h hostname mysql����mysqld������������һ��GRANT�����ı������7.26 GRANT��REVOKE�䷨����Ҳ������mysqladmin -h hostname -u user password 'new password' ���С�
  4. ��mysqladmin -h hostname flush-privileges����SQL����FLUSH PRIVILEGES��װ��Ȩ�ޱ���

18.10 �ļ�����Ȩ������

�����������ļ������йص����⣬���磬�������㴴��һ�ű�ʱ��mysql�������д�����Ϣ��

ERROR: Can't find file: 'path/with/filename.frm' (Errcode: 13)

��ô��������mysqld����ʱ����������UMASK�������ò���ȷ��ȱʡ��umaskֵ��0660����������������safe_mysqld�ı�����Ϊ��

shell> UMASK=384  # = 600 in octal
shell> export UMASK
shell> /path/to/safe_mysqld &

18.11 �ļ�û�ҵ�

��������MySQL�õ�ERROR '...' not found (errno: 23), Can't open file: ... (errno: 24)���κ�������errno 23��errno 24�Ĵ���������ζ�ţ���û��ΪMySQL�����㹻���ļ�������������ʹ��perrorʵ�ó����õ������ź�����ʲô��������

shell> perror 23
File table overflow
shell> perror 24
Too many open files

������������mysqld������ͼͬʱ���ִ���̫�����ļ�����Ҳ���Ը���mysqldһ�β�������ô�����ļ���������mysqld�ɵõ����ļ�������������

Ϊ�˸���mysqldһ�α��ִ򿪸��ٵ��ļ���������ͨ��ʹ��safe_mysqld��-O table_cache=32ѡ�ȱʡֵ��64)ʹ��������С����Сmax_connectionsֵҲ�����ٴ����ļ�������(ȱʡֵ��90)��

Ҫ���ı�mysqld���õ��ļ��������������޸�safe_mysqld�ű����ű�����һ��ע���˵���ulimit -n 256��������ɾ��'#'�ַ���ȥ�����е�ע�ͣ����Ҹı�����256�ı�Ϊmysqld���õ��ļ���������������

ulimit�������ļ�������������������ֻ�ܵ�����ϵͳǿ�ӵ����ơ���������Ҫ����ÿ�����̿��õ��ļ�������������OS���ƣ��μ����IJ���ϵͳ�ĵ���

ע�⣬����������tcsh���ǣ�ulimit��������������������ǰ����ʱ��tcshҲ�����治��ȷ��ֵ�������������£���Ӧ����sh����safe_mysqld��

18.12 ʹ��DATE�е�����

һ��DATEֵ�ĸ�ʽ��'YYYY-MM-DD'������ANSI SQL��������������ʽ����Ӧ����UPDATE����ʽ��SELECT������WHERE�Ӿ���ʹ��������ʽ�����磺

mysql> SELECT * FROM tbl_name WHERE date >= '1997-05-05';

Ϊ�˷��㣬���������������������ģ�MySQL�Զ��任һ�����ڵ�һ������(���ҷ�����Ҳ����)��������ʱ�ͽ�һ��������TIMESTAMP��DATE��DATETIME�бȽϵ�һ��WHERE�Ӿ��У�Ҳ���㹻����������һ�֡����ɡ����ַ�����ʽ�������ɸ�ʽ��ζ���κα����ַ������ڲ���֮���ķָ��������磬'1998-08-15'��'1998#08#15'�ǵȼ۵ġ���MySQLҲ�ܱ任�������ָ�����һ���ַ���(���� '19980815')����������Ϊһ������˵��ͨ��

��������'0000-00-00'������Ϊ'0000-00-00'���洢�ͼ�������ͨ��MyODBCʹ��һ��'0000-00-00'����ʱ����MyODBC 2.50.12�����ϰ汾�������Զ���ת��ΪNULL����ΪODBC���ܴ����������ڡ�

��ΪMySQLʵ���������ı任�������������Թ�����

mysql> INSERT INTO tbl_name (idate) VALUES (19970505);
mysql> INSERT INTO tbl_name (idate) VALUES ('19970505');
mysql> INSERT INTO tbl_name (idate) VALUES ('97-05-05');
mysql> INSERT INTO tbl_name (idate) VALUES ('1997.05.05');
mysql> INSERT INTO tbl_name (idate) VALUES ('1997 05 05');
mysql> INSERT INTO tbl_name (idate) VALUES ('0000-00-00');

mysql> SELECT idate FROM tbl_name WHERE idate >= '1997-05-05';
mysql> SELECT idate FROM tbl_name WHERE idate >= 19970505;
mysql> SELECT mod(idate,100) FROM tbl_name WHERE idate >= 19970505;
mysql> SELECT idate FROM tbl_name WHERE idate >= '19970505';

Ȼ�������н���������

mysql> SELECT idate FROM tbl_name WHERE STRCMP(idate,'19970505')=0;

STRCMP()���ַ�����������������idateת��Ϊһ���ַ�������ʵʩ�ַ����Ƚϡ�������'19970505'ת��Ϊһ�����ڲ�ʵʩ���ڱȽϡ�

ע�⣬MySQL�����������Ƿ���ȷ���������洢һ������ȷ�����ڣ�����'1998-2-31'�����������ڽ����洢���������ڲ��ܱ��任���κκ�����ֵ����DATE�ֶ��д洢һ��0������Ҫ��һ���ٶ����Ⲣ��������Ϊ����������Ӧ�ó��������Σ�������������

18.13 ʱ������

��������һ�����⣬SELECT NOW()��GMTʱ�䷵��ֵ���������ı���ʱ�䣬�������趨TZ��������Ϊ���ĵ�ǰʱ������Ӧ���ڷ��������еĻ������У�������safe_mysqld��mysql.server�С�

18.14 �������еĴ�Сд������

ȱʡ�أ�MySQL�����Ǵ�Сд�����е�(������һЩ�ַ����������Ǻ��Դ�Сд�ģ������ݿ���)������ζ�ţ���������col_name LIKE 'a%'��Ѱ���㽫�õ�������A��a��ʼ����ֵ����������Ҫʹ����������Сд���У�ʹ����INDEX(col_name, "A")=0����һ��ǰ׺����������ֵ����ȷ����"A"��ʹ��STRCMP(col_name, "A") = 0��

�򵥵ıȽϲ���(>=��>��= ��< ��<=�������;ۺ�)�ǻ���ÿ���ַ��ġ�����ֵ������ͬ������ֵ���ַ�(��E��e��'e)����Ϊ��ͬ���ַ���

LIKE�Ƚ���ÿ���ַ��Ĵ�дֵ�Ͻ���(E==e ����E<>'e����

��������Ҫһ�������DZ�������Сд���еķ�ʽ��������ΪBINARY����7.7 CREATE TABLE�䷨��

������ʹ������ν��big5�������������ݣ���Ҫʹ���е��ַ�����BINARY�������У�����Ϊbig5�����ַ�������˳������ ASCII������˳����

18.15 NULLֵ����

NULLֵ�ĸ���������SQL�����ֵĻ������ձ�ԭ�������Ǿ�����ΪNULL�Ǻ�һ�����ַ���''��һ���Ķ��������������ģ����磬������������ȫ��ͬ�ģ�

mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES ("");

����������ֵ���뵽phone�У����ǵ�һ������һ��NULLֵ���ڶ�������һ�����ַ�������һ���ĺ���������Ϊ�ǡ��绰���벻֪���������ڶ���������ζ�š���û�е绰����

��SQL�У�NULLֵ�����κ�����ֵ����NULLֵ�Ƚ�ʱ���Ǽٵģ�FALSE��������NULL��һ������ʽ���Dz���һ��NULLֵ�������ڰ����ڱ���ʽ�е��������ͺ������ĵ���ָ�������������ӣ����е��з���NULL��

mysql> SELECT NULL,1+NULL,CONCAT('Invisible',NULL);

��������ҪѰ��ֵ��NULL���У��㲻��ʹ��=NULL���ԡ��������䲻�����κ��У���Ϊ���κα���ʽ��expr = NULL�Ǽٵģ�

mysql> SELECT * FROM my_table WHERE phone = NULL;

Ҫ��Ѱ��NULLֵ��������ʹ��IS NULL���ԡ�������ʾ�����ҳ�NULL�绰�����Ϳյĵ绰���룺

mysql> SELECT * FROM my_table WHERE phone IS NULL;
mysql> SELECT * FROM my_table WHERE phone = "";

��MySQL�У������ܶ�������SQL������һ�����㲻������������NULLֵ���С�������������������ΪNOT NULL�����ң��㲻�ܲ���NULL�����������С�

����LOAD DATA INFILE��ȡ����ʱ��������''���¡���������Ҫ��һ��������NULLֵ����Ӧ�����ı��ļ���ʹ��\N�������ϵĴ�'NULL'Ҳ������ijЩ������ʹ�á���7.16 LOAD DATA INFILE�䷨��

��ʹ��ORDER BYʱ�����ȳ���NULLֵ����������DESC�Խ���������NULLֵ������ʾ����ʹ��GROUP BYʱ�����е�NULLֵ����Ϊ�����ȵġ�

Ϊ��������NULL�Ĵ���������ʹ��IS NULL��IS NOT NULL��������IFNULL()������

��ijЩ�����ͣ�NULLֵ�������ش����������㽫NULL�������ĵ�һ��TIMESTAMP�У������뵱ǰ�����ں�ʱ�䡣�����㽫NULL����һ��AUTO_INCREMENT�У�������˳���е���һ�����֡�

��

18.16 alias����

��������GROUP BY��ORDER BY����HAVING������ʹ�ñ��������С�����Ҳ��������Ϊ��ȡһ�����õ������֣�

SELECT SQRT(a*b) as rt FROM table_name GROUP BY rt HAVING rt > 0;
SELECT id,COUNT(*) AS cnt FROM table_name GROUP BY id HAVING cnt > 0;
SELECT id AS "Customer identity" FROM table_name;

ע�⣬���� ANSI SQL ����������һ��WHERE�Ӿ�������һ��������������Ϊ��WHERE���뱻ִ��ʱ����ֵ������û���սᡣ�������в�ѯ�����Ϸ���

SELECT id,COUNT(*) AS cnt FROM table_name WHERE cnt > 0 GROUP BY id;

WHERE���䱻ִ����ȷ����Щ��Ӧ�ð���GROUP BY�����У���HAVING��������Ӧ��ֻ�ý��������е���Щ�С�

18.17 �ӹ����ı���ɾ����

��ΪMySQL��֧����ѡ������DELETE������ʹ�ö���������Ӧ��ʹ�����з�����2�������ı���ɾ���У�

  1. ���������ij��WHERE����SELECT��
  2. �������л�����ͬ������DELETE�С�
  3. DELETE FROM related_table WHERE related_column IN (selected_rows)

������related_column��ѯ�е��ַ���ȫ����������1,048,576(ȱʡֵmax_allowed_packet������Ӧ�÷ֳɸ�С�IJ��ֲ���ִ�ж���DELETE���䡣����related_column��һ����������ÿ��ֻɾ��100-1000��related_column id������ʹ��DELETE���졣����related_column����һ���������ٶ���IN�Ӿ��в����������޹ء�

18.18 ����û��ƥ���е�����

��������һ�����ӵIJ�ѯ���漰����������û�з����κ��У���Ӧ��ʹ�����й��̲�������ѯ����ʲô���ԣ�

  1. EXPLAIN���Բ�ѯ���Ҽ������Ƿ����ҳ���Ȼ�Ǵ�����һЩ��������7.22 EXPLAIN�䷨(�õ�����һ��SELECT����Ϣ)��
  2. ��ѡ����Щ��WHERE�Ӿ���ʹ�õ��ֶΡ�
  3. һ�δӲ�ѯ��ɾ��һ������ֱ��������һЩ�С��������ܴ󣬶Բ�ѯʹ��LIMIT 10��һ�������⡣
  4. ��Ӧ���Ѿ�ƥ��һ�е�����һ��SELECT�����Դ�ѯ����������ɾ���ı���
  5. �����㽫FLOAT��DOUBLE������С�������ֽ��бȽϣ��㲻��ʹ��=!�����������ڴ����������������dz����ģ���Ϊ����ֵ����׼ȷ��ֵ��
    mysql> SELECT * FROM table_name WHERE float_column=3.5;
       ->
    mysql> SELECT * FROM table_name WHERE float_column between 3.45 and 3.55;
    

    �ڴ����������£���FLOAT�ij�һ��DOUBLE����������

  6. ��������Ȼ���ܷ��ִ�����ʲô������һ����С�Ŀ�����mysql test < query.sql�IJ�������ʾ�������⡣��������mysqldump --quick database tables > query.sql����һ�������ļ�����һ���༭���༭�ļ���ɾ��һЩ������(������̫����Щ����)�������ļ�ĩβ��������ѡ�����䡣��������Ȼ�����⣬������������
    shell> mysqladmin create test2
    shell> mysql test2 < query.sql
    

    ʹ��mysqlbug���ʼIJ����ļ���[email protected]��

18.19 ��ALTER TABLE�йص�����

����ALTER TABLE��������һ��������

Error on rename of './database/name.frm' to './database/B-a.frm' (Errcode: 17)

����������MySQL��ǰһ��ALTER TABLE���Ѿ���������������һ����Ϊ��A-xxx������B-xxx�����ϵ����ݿ����������������£���MySQL����Ŀ¼�в�ɾ������������A-��B-��ʼ���ļ����������԰������Ƶ����ĵط�������ɾ������)��

ALTER TABLE������ʽ�ǣ�

����ijЩ��������������MySQL��ͼ��ԭ�ı䡣������������(��Ȼ���ⲻӦ�÷�����)��MySQL�����������ϱ�Ϊ��B-xxx������һ���򵥸�����Ӧ�ûָ��������ݡ�

18.20 �����ı�һ�ű����е�˳��

SQL��Ҫ�����г���Ӧ�ó����Ա������ݴ洢��ʽ����Ӧ������������Ҫ�������ݵ���Ըָ��˳�������磺

SELECT col_name1, col_name2, col_name3 FROM tbl_name;

����col_name1��col_name2��col_name3��˳�򷵻��У�����

SELECT col_name1, col_name3, col_name2 FROM tbl_name;

����col_name1��col_name3��col_name2��˳�򷵻��С�

��һ��Ӧ�ó����У���Ӧ�������������ǵ�λ��ʹ��SELECT * �����У���Ϊ�����ص��е�˳����Զ������֤�����������ݿ���һ���򵥸ı����ܵ�������Ӧ�ó����൱��Ϸ���Ե�ʧ�ܡ�

������������������Ҫ�ı��е�˳������������������

  1. ����ȷ����˳�򴴽�һ���±���
  2. ִ��INSERT INTO new_table SELECT fields-in-new_table-order FROM old_table.
  3. ɾ��������old_table��
  4. ALTER TABLE new_table RENAME old_table��

ȥ����, ��ǰ, ��һ��, ��������