���ߣ����� ([email protected]�� ��ҳ��http://nrdoc.com
��һ��, ǰһ��, ��һ��, ���һ����Ŀ¼.
MySQL������һЩ����������SQL���ݿ��Ҳ��������䡣Ҫע�������ʹ�����ǣ���Ĵ��뽫��������SQL���������ݡ���һЩ����£�����Ա�д����MySQL��չ�Ĵ��룬������Ȼ�ǿ���ֲ�ģ�ͨ��ʹ��/*!
... */
��ʽ��ע�͡�����������£�MySQL�����дʷ���������ִ����ע���ڵĴ��룬���������κ�����MySQL��䣬��������SQL��������������չ�����磺
SELECT /*! STRAIGHT_JOIN */ col_name FROM table1,table2 WHERE ...
�������'!'������һ���汾���֣����������MySQL�汾�ǵ��ڻ��ʹ�õİ汾������ʱ��ִ�У�
CREATE /*!32302 TEMPORARY */ TABLE (a int);
�������˼���������3.23.02����£���ôMySQL��ʹ��TEMPORARY
�ؼ��ʡ�
MySQL��չ���������棺
MEDIUMINT
��SET
��ENUM
�Ͳ�ͬ��BLOB
��TEXT
���͡�
AUTO_INCREMENT
��BINARY
��UNSIGNED
��ZEROFILL
��
BINARY
���Ի�ʹ��BINARY
ǿ�Ʒ������У������¸���MySQL������������ASCII˳���������
db_name.tbl_name
����ʲ�ͬ���ݿ��еı���һЩSQL�������ṩͬ���Ĺ��ܵ��dz�����Ϊ��User
space
���û��ռ䣩��MySQL��֧��������create
table ralph.my_table...IN my_tablespace
�еı��ռ䡣 LIKE
���������ϱ������� SELECT
�������ʹ��INTO OUTFILE
��STRAIGHT_JOIN
����7.12 SELECT
�䷨. SELECT
�����SQL_SMALL_RESULT
ѡ� EXPLAIN SELECT
�õ����������������� CREATE TABLE
�������ʹ�����������ֶ�ǰ�ϵ�������ʹ��INDEX
��KEY
����7.7 CREATE TABLE
�䷨�� CREATE TABLE
ʹ��TEMPORARY
��IF NOT EXISTS
�� COUNT(DISTINCT list)
�����list������һ��Ԫ�ء� ALTER TABLE
�������ʹ��CHANGE col_name
��DROP
col_name
��DROP INDEX
����7.8
ALTER TABLE
�䷨�� ALTER TABLE
�������ʹ��IGNORE
�� ALTER TABLE
�����ʹ�ö���ADD
��ALTER
��DROP
��CHANGE
�Ӿ䡣
IF EXISTS
��DROP TABLE
��DROP TABLE
�������������� DELETE
����LIMIT
�Ӿ䡣 INSERT
��REPLACE
����DELAYED
�Ӿ䡣 INSERT
, REPLACE
, DELETE
��UPDATE
����LOW_PRIORITY
�Ӿ䡣
LOAD DATA INFILE
���ڶ�������£���䷨��Oracle��LOAD
DATA INFILE
���ݡ���7.16 LOAD
DATA INFILE
�䷨�� OPTIMIZE TABLE
��䡣��7.9
OPTIMIZE TABLE
�䷨�� SHOW
��䡣��7.21 SHOW
�䷨(�õ������еȵ���Ϣ)��
SET OPTION
��䡣��7.25
SET OPTION
�䷨�� GROUP BY
���ֵı�ѡ����С���ΪһЩ���ض�������������õ����ܣ�������һ��IJ�ѯ����7.4.13 ����GROUP BY
�Ӿ�ĺ�����
||
��&&
��ζ������OR��AND��������C���������С���MySQL�У�||
��OR
��ͬ��ʣ�&&
��AND
��ͬ��ʡ�����Ϊ����õľ䷨��MySQL���ַ������õIJ�֧��ANSI
SQL ||
���������෴ʹ��CONCAT()
����ΪCONCAT()
�����κ������IJ����������װ�||
������ʹ�ñ任��MySQL��CREATE DATABASE
��DROP DATABASE
����7.5 CREATE DATABASE
�䷨��
%
��������MOD()
һ��ͬ��ʣ�����N % M
�ȼ���MOD(N,M)
��%
֧��C����Ա����PostgreSQL���ݡ�
=
, <>
, <=
,<
, >=
,>
,
<<
, >>
, <=>
, AND
, OR
��LIKE
���������Է���SELECT
����FROM
������ڱȽ��С����磺
mysql> SELECT col1=1 AND col2=2 FROM tbl_name;
LAST_INSERT_ID()
��������20.4.29
mysql_insert_id()
�� REGEXP
��NOT REGEXP
�� CONCAT()
��CHAR()
��һ��������2������������MySQL�У���Щ������ȡ�κ������IJ�������BIT_COUNT()
, CASE
, ELT()
, FROM_DAYS()
,
FORMAT()
, IF()
, PASSWORD()
, ENCRYPT()
,
md5()
, ENCODE()
, DECODE()
, PERIOD_ADD()
,
PERIOD_DIFF()
, TO_DAYS()
,��WEEKDAY()
������ TRIM()
�����Ӵ���ANSI SQL ֻ֧�ֵ����ַ���ɾ���� GROUP BY
����STD()
, BIT_OR()
��BIT_AND()
��
REPLACE
������DELETE
+INSERT
����7.15 REPLACE
�䷨�� FLUSH flush_option
��䡣 :=
���ñ����Ŀ����ԣ� SELECT @a:=SUM(total),@b=COUNT(*),@a/@b AS avg FROM test_table; SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
�������--ansi
ѡ������mysqld��MySQL��������Ϊ�ı䡣
||
���ַ������ö�����OR
��"
����һ����ʶ�������ַ�(��MySQL `
�����ַ�һ��)������һ���ַ��������ַ���
REAL
����FLOAT
һ��ͬ��ʣ�����DOUBLE
һ��ͬ��ʡ�
���dz���ʹ��MySQL����ANSI SQL����ODBC SQL����������һЩ����£�MySQL��һЩ��ͬ�����飺
--
ֻ��һ��ע�ͣ���������һ�����ַ�����5.4.7 `--'��Ϊһ��ע�͵Ŀ�ʼ��
VARCHAR
�У���ֵ���洢ʱ���Ϻ�Ŀո�ɾ������E MySQL��֪�Ĵ�������ȱ���� CHAR
��͵͵�ر��ı�ΪVARCHAR
�С���7.7.1 ƽ������ָ���仯�� REVOKE
���ϳ���һ������Ȩ�ޡ���7.26 GRANT
��REVOKE
�䷨��
���й����ڵ�ǰ��MySQL�汾��û�еġ�����һ�����ȼ���ָ����ʱ����չ���Լ���MySQL, ��Ӧ����ѯ����MySQL TODO �������DZ��ֲ����µ�TODO���汾����F ������Ҫ��δ�����뵽MySQL�������б�(TODO)��
��MySQL��������仹���ܹ�����
SELECT * FROM table1 WHERE id IN (SELECT id FROM table2); SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);
Ȼ�����ںܶ�����£��������д��ѯ����������ѡ��
SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id; SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id where table2.id IS NULL
���ڸ����ӵ��Ӳ�ѯ��ͨ������Դ�����ʱ�ı������Ӳ�ѯ��Ȼ����һЩ����£�����ѡ���в�ͨ�����������������DELETE
��䣬��������SQL��֧������(join)(��������ѡ��)�����������������2������ѡ��ֱ����ѡ��MySQL֧�֡�
��һ��ѡ����ʹ��һ�ֹ��̻��ij�������(����Perl��PHP)���ύһ��SELECT
��ѯ���Ҫ��ɾ����¼��������Ȼ��ʹ����Щֵ����DELETE
���(DELETE
FROM ... WHERE ... IN (key1, key2, ...)
)��
�ڶ���ѡ����ʹ�ý���ʽSQL�Զ�����һ��DELETE
��䣬ʹ��MySQL��չCONCAT()
�������||
������)�����磺
SELECT CONCAT('DELETE FROM tab1 WHERE pkid = ', tab1.pkid, ';') FROM tab1, tab2 WHERE tab1.col1 = tab2.col2;
����������ѯ����һ���ű��ļ����Ҵ����ض������뵽mysql
�����н����������������Ϊ�ܵ����ظ��������ĵ�2��ʵ����
prompt> mysql --skip-column-names mydb < myscript.sql | mysql mydb
MySQL��֧��INSERT ... SELECT ...
��REPLACE ...
SELECT ...
����������ѡ������3.24.0�õ���Ȼ���������������£������ڿ���ʹ�ú���IN()
��
SELECT INTO TABLE
MySQL����֧��Oracle SQL����չ��SELECT ... INTO TABLE ...
.���෴MySQL֧��ANSI
SQL�䷨INSERT INTO ... SELECT ...
��������������һ���ġ�
���⣬���ʹ��SELECT INTO OUTFILE...
��CREATE TABLE ...
SELECT
���������⡣
��֧����������MySQL���ڶ�ʱ����֧��ԭ��(atomic)����������û�лؾ���������ԭ�Ӳ���������ִ��һ��INSERT
/SELECT
/whatever
����ұ�֤û�������߳̽��롣�ڱ����У���ͨ��������Ҫ�ؾ���Ŀǰ�����ͨ��ʹ��LOCK
TABLES
��UNLOCK TABLES
������ֹ�����̵߳ĸ��š���7.24 LOCK TABLES/UNLOCK TABLES
�䷨��
һ���洢���������ڷ������б��벢�洢��һ��SQL���һ���������ˣ��˿Ͳ���Ҫһֱ���·���ȫ����ѯ�������Բο��洢���̡���Ϊ��ѯ����һ�δʷ��������ҽ��ٵ���Ϣ��Ҫ�ڷ������Ϳͻ�֮�䴫�ͣ�������ṩ�˸��õ����ܡ��������ͨ��ӵ���ڷ������еĺ��������������ϵIJ�Ρ�
һ���������ǵ�һ���ر���¼�����ʱ�������õ�һ���洢���̡����磬�����װһ���洢���̣�����ÿ�δ�һ�����ױ�ɾ��һ����¼ʱ���������ҵ������н��ױ�ɾ��ʱ���Զ��ش�һ���ͻ�����ɾ����Ӧ�Ŀͻ���
�ƻ��ĵ����Խ��ܴ����洢���̣�����û�д�������������ͨ��ʹÿ�������������ʹ�����Dz���Ҫ�IJ�ѯ��
Ϊ������ʲôʱ��MySQL���ܵõ��洢���̣���F ��������δ�����뵽MySQL�������б�(TODO)��
ע�⣬��SQL����������������������Ҫ���ڼ��ο�������(RI)���������Ҫ�õ���һ��SELECT
���Ӷ�����õ������
��ͨ�����������
SELECT * from table1,table2 where table1.id = table2.id;
��7.13 JOIN
�䷨����8.3.5 ʹ�������
��MySQL�����FOREIGN KEY
�䷨����Ϊ��������SQL��Ӧ�̵�CREATE
TABLE
��������ݣ��������κ����顣û��ON DELETE ...
��FOREIGN
KEY
�䷨��Ҫ�����ĵ�Ŀ�ġ�һЩODBCӦ�ó������ʹ�����Զ�����WHERE
�Ӿ䣬������ͨ�������ĸ��ǡ�
FOREIGN KEY
��ʱ����һ��Լ����飬�������������ȷ��˳��������ü��ʵ�����Dz���Ҫ�ġ�MySQL����֧����Щ�Ӿ�(�������Ƿ����ǹ���!)����ΪһЩӦ�ó���Ҫ�����Ǵ��ڡ�
��MySQL�У�����Խ��ON DELETE ...
û��ʵ�ֵ����⣬�������һ��������ı�ɾ����¼ʱ��ͨ��Ϊһ��Ӧ�ó��������ʵ���DELETE
��伴�ɡ�ʵ���ϣ���ܿ�(��һЩ����¸���)���ұ�ʹ��������ȱ�����ֲ��
�ڲ��õĽ������ǽ�����FOREIGN KEY
ʵ�֣��Ա�������Ϣ���ڱ�˵���ļ��б��沢�ҿ�����mysqldump
��ODBC������
�кܶ���FOREIGN KEY
�йص��������Dz�֪�����Ķ���ʼ��
INSERT
��UPDATE
����ǿ��µģ���������������¼������е�FOREIGN
KEY
��鶼�����õģ���Ϊ����������ͨ������ȷ��˳������ȷ�ı��в����¼��
FOREIGN KEY
Ψһ�õķ���������ODBC��һЩ�����ͻ�������һ�ű���α����ӵ�����������ʹ��������ʾ������ͼ������������Ӧ�á�
MySQL���ý��洢FOREIGN KEY
�����Ա�һ���ͻ���ѯ�ʲ��յ�ԭ����������ν��е�һ���𰸡���ǰ����.frm
�ļ���ʽû����Ӧ�еĵ�λ��
MySQL��֧����ͼ����������TODO�ϡ�
��Щ����SQL���ݿ�ʹ��'--'��ʼע�͡�MySQL����#����Ϊ��ʼ��ע�͵��ַ�����ʹmysql
�����й���ɾ����'--'��ʼ�������С���Ҳ������MySQL��ʹ��Cע�ͷ��/*
this is a comment */
����7.29
ע�;䷨��
MySQL3.23.3�����ϰ汾֧��'--'ע�ͷ��ֻҪע����һ���ո�֮��������Ϊ�����˻���ע�ͷ���Ѿ������������д����������Զ����ɵ�SQL��ѯ���������⣬���������Զ���Ϊ!payment!����֧��ֵ��
UPDATE tbl_name SET credit=credit-!payment!
�������payment
��ֵ�Ǹ���ʱ������ʲô��
��Ϊ1--1
��SQL���ǺϷ��ģ�������Ϊ'--'��ʼע���ǿ��µġ�
Ȼ����MySQL 3.23�У����ʹ�ã�1-- This is a comment
�������������һ����3.23���MySQL�İ汾�����е����۲��漰�㣺
�������һ���ı��ļ�����һ��SQL����������'--'ע�ͣ���Ӧ��ʹ�ã�
shell> replace " --" " #" < text-file-with-funny-comments.sql \ | mysql database ������ͨ����
shell> mysql database < text-file-with-funny-comments.sql
��Ҳ���ԡ��ֳ����༭�����ļ���'--'ע��Ϊ'#'ע����
shell> replace " --" " #" -- text-file-with-funny-comments.sql
���������Ļ����ǣ�
shell> replace " #" " --" -- text-file-with-funny-comments.sql
Entry level SQL92��ODBC level 0-2��
COMMIT
/ROLLBACK
MySQL��֧��COMMIT
-ROLLBACK��
��������Ч�ش���COMMIT
-ROLLBACK
����Ҫ��ȫ��ͬ��MySQL����ʹ�õı����֡�MySQLҲ����Ҫ������߳��ڱ������Զ�������������Ҵ������������ߡ��⽫ʹMySQL���ֽ����ϴ�Լ2-4����MySQL�ȼ�����������SQL���ݿⶼ��(һ�����ٿ�2-3��)��ԭ��֮һ����ȱ��COMMIT
-ROLLBACK
��
Ŀǰ�������Ǹ����ʵ��SQL����������(��洢����)�����������㽫ȷʵ������ҪCOMMIT
-ROLLBACK��
��Ҳ���õ����õ����ܡ�
ͨ����Ҫ�����ѭ�����Խ���LOCK TABLES
���б��룬���ҵ����ܼ�ʱ�ظ��¼�¼ʱ���㲻��Ҫ���(cursor)��
������TODO���������꣬Ȼ�������൱���ȡ��������ʵ����Щ������ΪCREATE
TABLE
��ѡ�����ζ��COMMIT
-ROLLBACK
������������Щ���ϣ��Ա��ٶ���ʧ����ǿ������Щ���ϡ�
������TcX��һ�����������һ����100%ͨ�����ݿ���������ٵ����ݿ⡣���ۺ�ʱ���Ƿ���һ��������ʵ����Щ������û���κ��ٶ���ʧ�����ǽ�������������ʱ�����������Ҫ������Ҫ�������TODO�������Ǵ�ʱ��ν������������С����еĽϸ���֧�ֵĿͻ����Ըı�������������ǿ����������Ȼ��ġ���
��ǰ������ʵ������ROLLBACK
��û��ROLLBACK
��������LOCK
TABLES
���κ�COMMIT
������Ϊ��֧��ROLLBACK
��MySQL�����뱻�ı��Դ洢���еľɼ�¼���������ROLLBACK
�����DZ����µIJ��ҽ��κζ����ָ�����㡣���ڼ����Σ��ⲻ��������
(��ǰisamlog
�������ڴ�Ŀ��)������ΪALTER/DROP/CREATE TABLE
ʵ��ROLLBACK
���Ǹ����ѵġ�
����ʹ��ROLLBACK
�������ʹ�����в��ԣ�
LOCK TABLES ...
��ס��������Ҫ��ȡ�����ݿ���� UNLOCK TABLES
�ͷ�������� ��ͨ����ʹ�ÿ��ܴ�ROLLBACK
�Ľ�����һ������ķ��������ܲ������������������������ܴ�����Ψһ״���ǵ�ij���ڸ��µ���ɱ���߳�ʱ������������£����е��������ͷţ�����һЩ���IJ��ܱ�ִ�С�
��Ҳ��ʹ�����Ե����������¼�¼������ͨ��ʹ�����м����õ�һ������Ч�ʵ�Ӧ�ó���
���磬���������ڸ���һЩ�ͻ���Ϣʱ�����ǽ���������Щ�ı��˵Ŀͻ����ݲ�ֻ����û���κ����ݵĸı䣬������ȡ���ڸı�����ݣ���ԭ��������ȱ仯�ˡ����ڸı��˵����ݵIJ�����WHERE
�Ӿ���UPDATE
�������ɡ������¼û�����£����Ǹ��ͻ�һ����Ϣ������ı��˵�һЩ�����ѱ������û��ı��ˡ���Ȼ��������һ����������ʾ���ж��վ��У�����û��ܾ�������ʹ���ĸ��汾�Ŀͻ���¼��
��������������ڡ����������Ķ���������ʵ�����������ã���Ϊ���ǽ�������ijЩ�У�ʹ����������ǵĵ�ǰֵ��ֵ������ζ�ŵ�����UPDATE
��俴��ȥ����Щһ��������
UPDATE tablename SET pay_back=pay_back+'relative change'; UPDATE customer SET customer_date='current_date', address='new address', phone='new phone', money_he_owes_us=money_he_owes_us+'new_money' WHERE customer_id=id AND address='old address' AND phone='old phone';
�������ܿ����ģ����Ǻ���Ч�IJ��Ҿ��������ͻ��Ѿ��ı���pay_back
��money_he_owes_us
�е�Ҳ�ܹ�����
����������£�Ϊ����һЩ�����Ψһ��ʶ��Ŀ�ģ��û��Ѿ���ҪROLLBACK
��LOCK
TABLES
�������һ��AUTO_INCREMENT
�к�һ��SQL����LAST_INSERT_ID()
��C
API����mysql_insert_id()
����Ч�ش�������20.4.29 mysql_insert_id()
��
��TcX�����Ǵ���û���κζ��м�������������Ϊ����������ͨ������������һЩ�������Ҫȷʵ�����������������Ǻ��ټ��ġ��������Ҫ�м�������������ڱ���ʹ�ñ�־�в�����������
UPDATE tbl_name SET row_flag=1 WHERE id=ID;
����б��ҵ����ֲ���row_flag
��ԭ�������Ѿ�����1������Ӱ�������MySQL����1��
������뵽������ΪMySQL������IJ�ѯ��Ϊ��
UPDATE tbl_name SET row_flag=1 WHERE id=ID and row_flag <> 1;