MySQL网络数据库指南
MySQL网络数据库指南
1 MySQL SQL
MySQL RDBMS SQL
MySQL
MySQL SQL
MySQL
1.2
1.1 MySQL
MySQL MySQL
MySQL 1.2
2 MySQL
MySQL
MySQL
6
1 MySQL SQL 3
MySQL
Web
Web
Web
Web
Web
Web
MySQL MySQL Web
4 MySQL
MySQL
MySQL
1.2
MySQL
Web
1.2.1
1 MySQL SQL 5
Web
Web
MySQL
Web
Email Email
Web
Web
Web
Web
Apache Web
MySQL
MySQL
$200
MySQL Perl DBI
PHP Apache
UNIX
Windows UNIX MySQL
UNIX Windows Windows
1.2.2
MySQL
A
B C D F
MySQL
1.2.3
MySQL
1 MySQL SQL 7
1.3
1.3.1
MySQL RDBMS
RDBMS DB
MS
R DBMS
Web
1-1 company
ad
hit
company
hit
Pickles.
7 14
1) company Pickles, Inc 14
2) ad
48 101
8 MySQL
3) ad hit
48
101
C.J.Date E.F.Codd
company
ad
hit
1-1
1 MySQL SQL 9
1.3.2
SQL
MySQL
MySQL MySQL
SQL
SQL SQL
C R E ATE TABLE
1.3.3 MySQL
MySQL MySQL /
MySQL
mysql
mysqldump mysqlimport
mysqladmin
MySQL
C C
MySQL /
MySQL
10 MySQL
MySQL
Sally Phil
1.4 MySQL
MySQL
MySQL
mysql MySQL
SQL RDBMS SQL
SQL MySQL
MySQL /
mysql mysql
SQL mysql MySQL
samp_db
samp_db
samp_db
MySQL
MySQL
1.4.1
MySQL MySQL
MySQL mysql
mysqlimport
MySQL A
MySQL
ISP MySQL ISP MySQL
J
MySQL
MySQL mysql :
1 MySQL SQL 11
MySQL mysql
MySQL MySQL RDBMS mysql
paul localhost
samp_db secret
paul % % paul
localhost
GRANT GRANT
MySQL 11 MySQL
1.4.2
A
samp_db
1.4.3
% UNIX $
Windows c:\>
mysql options
mysql MySQL
MySQL
MySQL
-h host_name --host=host_name
12 MySQL
mysql
-u user_name --user=user_name
MySQL UNIX MySQL
mysql MySQL
Windows ODBC
USER set
paul
-p --password
mysql MySQL -pyour_password
--password=your_password
-p mysql
Enter password:
MySQL UNIX Windows
-p mysql
-h -u
-p -p
MySQL paul secret
mysql
-h pit -
viper.snake.net
mysql -h -u -p
mysql
1.5 mysql
1 MySQL SQL 13
Control-D UNIX
1.4.4
mysql
mysql ;
Enter mysql
\g
mysql
mysql mysql
NOW()
mysql
mysql
mysql
mysql
SQL
14 MySQL
\c
mysql> mysql
mysql
my_file.sql
.sql SQL
mysql samp_db
mysql INSERT
mysql>
mysql> SQL
mysql Perl PHP
mysql
1.4.5
samp_db
1)
2)
3)
1 MySQL SQL 15
samp_db
samp_db USE
USE HELP
HELP
USE samp_db
mysql
p i t - v i p e r.snake.net samp_db
mysql samp_db
USE samp_db
1.4.6
samp_db
16 MySQL
1.
(president)
(member)
(1) president
president
member
Bush, George W.
George W.Bush
Jimmy Carter
J r. James
E . C a r t e r, J r. C a r t e r, James E., Jr. J r.
MySQL NULL
(2) member
member
president member member
president
1 MySQL SQL 17
ID ID
ID MySQL
member
NULL
Zip
(3)
C R E ATE TABLE
tbl_name column_specs
4
mysql samp_db
18 MySQL
CREATE TABLE
mysql
president
mysql
CREATE TABLE
DATE
YYYY-MM-DD
1999-07-18 ANSI SQL
president NULL NOT NULL
NOT NULL NULL s u ff i x
death
member CREATE TABLE
mysql
member
expiration DATE 0000-00-
00 NULL expiration
NULL NULL
0000-00-00
0000-00-00
1 MySQL SQL 19
ID ALTER TABLE
MySQL mysql
MySQL 3.23
state
CHAR(2) VARCHAR(2)
MySQL VARCHAR CHAR
3 ALTER
TABLE
DESCRIBE member mysql member
DESCRIBE
MySQL I N S E RT
LOAD DATA
DESCRIBE DESC DESCRIBE
tbl_name SHOW COLUMNS FROM tbl_name
SHOW TABLES samp_db
mysql
SHOW DATABASES
20 MySQL
samp_db mysql
MySQL
DESCRIBE SHOW
% mysqlshow SHOW DATABASES
% mysqlshow db_name SHOW TABLES
% mysqlshow db_name tbl_name DESCRIBE tbl_name
2.
1-2
ID
9 3 6 16 23 9 9 10 1
1-3
MySQL YYYY-MM-DD
score
1-2 1-3
1-3
T Q
1-4
9 23 Q 10 1 score
T
score
1-4 score
1 MySQL SQL 21
score
event 1-5
score 9 23 score event
score event
1999-09-23
1999-09-23
score
1-2
score
T Q
event
1-5 event
score event
score event
score event
1) event
22 MySQL
ID event_id
1-2 ID
ID
2) score ID
1-6 score event ID
event event
ID
1-6 score
1-4
score score 1-6
ID score
score event
MySQL
MySQL
1 MySQL SQL 23
score ID
ID event
ID
MySQL
MySQL ID
MySQL
1999 9 23
score event
1-4 ID
MySQL
SQL
1.5 mysql
ID score ID
Name student name student_id
1-7
ID ID
1-7 student
adsence
ID 1-8
MySQL 1-8 absence
mysql
sex ENUM
F M
ENUM CHAR(1) ENUM
ENUM DESCRIBE tbl_name MySQL
ENUM ENUM
( female , male )
1 MySQL SQL 25
student_id ID
ID student_id
INT
UNSIGNED
NOT NULL ID
AUTO_INCREMENT MySQL
student student_id NULL MySQL
ID
name sex MySQL student_id
P R I M A RY KEY
ID ID
MySQL AUTO_INCREMENT
AUTO_INCREMENT PRIMARY KEY
ID
ID
student_id AUTO_INCREMENT
event
mysql
NOT NULL
date MySQL DATE YYYY-MM-DD
type student sex type
T Q
event_id A U TO_INCREMENT student student_id
AUTO_INCREMENT ID student student_id
score
mysql
26 MySQL
score INT
58.5 FLOAT DECIMAL
student_id event_id
student event
P R I M A RY KEY
MySQL REPLACE
DELETE INSERT MySQL
absence
mysql
1.4.7
I N S E RT
LOAD
D ATA mysqlimport mysql
INSERT
INSERT SQL
INSERT
INSERT
SET
INSERT
LOAD DATA
mysqlimport
LOAD DATA mysql
m e m b e r.txt
member
MySQL 3.22.15 LOAD DATA LOCAL
LOAD DATA LOCAL
MySQL
LOAD DATA tab
D LOAD DATA
mysqlimport LOAD DATA
28 MySQL
mysqlimport
member.txt member president.txt president
mysqlimport
member1.txt member2.txt mysqlimport
member1 member2 m e m b e r.1.txt m e m b e r.2.txt m e m b e r.txt1
member.txt2
DELETE
INSERT
1.4.8
SELECT
SELECT
SELECT
SELECT
SELECT
FROM
WHERE
SQL SELECT
1 MySQL SQL 29
SELECT
FROM WHERE GROUP BY ORDER
BY LIMIT
FROM
FROM
FROM SELECT
* student
MySQL
UNIX
UNIX
Windows Windows
MySQL
1.
SELECT WHERE
1 MySQL SQL 31
MySQL MySQL
C MySQL
1-1
+ *
/
1-2
< != <>
<= >=
= >
1-3
AND
Vi rginia Maryland OR
NOT
Virginia Maryland
and
SQL OR
32 MySQL
SQL
Virginia Maryland
2. NULL
NULL
NULL
NULL
NULL = != NULL
NULL IS NULL IS NOT NULL
NULL
IS NOT NULL
1 MySQL SQL 33
MySQL3.23 MySQL <=>
NULL NULL
3.
SELECT * FROM tbl_name
MySQL
ORDER BY
NULL NULL
NULL
34 MySQL
president
4.
LIMIT
ORDER BY MySQL n
5
5.
MySQL
AS name
36 MySQL
6.
MySQL 1999 7 27
1999-07-27 , 07-27-1999 27-07-1999
MySQL
D ATE
MONTH( ) DAYOFMONTH( )
CURRENT_DATE
TO_DAYS( ) 365
FLOOR( )
60
70
DATE_ADD( )
7.
MySQL
LIKE NOT LIKE
_ % LIKE
NOT LIKE
W w
W% w%
W w
1 MySQL SQL 39
MySQL C REGEXP
8.
MySQL
MySQL
DISTINCT
WHERE COUNT(*)
40 MySQL
41
MySQL 3.23.2 COUNT( ) DISTINCT
MySQL
1 MySQL SQL 41
GROUP BY MySQL
COUNT(*) GROUP BY
GROUP BY
ORDER BY
ORDER BY
42 MySQL
ORDER BY
COUNT(*) count
ORDER
BY
GROUP BY ORDER BY
H AVING WHERE
event
44 MySQL
9.
DBMS
join
1 MySQL SQL 45
ID ID
ID
FROM
tbl_name.col_name MySQL
event_id
date score type
student
student_id score student
student_id
ID
ID ID MySQL ID
46 MySQL
ID
absence ID student_id
absence student ID
GROUP BY
GROUP BY
student_id MySQL ORDER BY
score
ID score
event
ID
1 MySQL SQL 47
COUNT( ) AVG( )
48 MySQL
p1 p2
WHERE
MONTH( ) D AYOFMONTH( )
MySQL
event president
MySQL
1 MySQL SQL 49
1.4.9
DELETE UPDATE
DELETE
DELETE FROM tbl_name WHERE
WHERE
DELETE
WHERE SELECT
WHERE president Ohio
DELETE WHERE
DELETE SELECT WHERE
Te d d y
Roosevelt
WHERE DELETE
mysql
50 MySQL
UPDATE
UPDATE tbl_name SET
WHERE
WHERE DELETE
G e o rg e
Jerome
NULL NULL
Jerome
NULL
samp_db
1.4.7
1.4.10
member ALTER
TABLE ALTER TABLE
A LTER TABLE
3
member
AUTO_INCREMENT MySQL
CREATE TABLE
1 MySQL SQL 51
ALTER TABLE
member
MySQL MySQL
AUTO_INCREMENT
1.5 mysql
mysql
1.5.1
mysql
mysql
1.
3.22 MySQL mysql
MySQL mysqlimport
~/.my.cnf
.my.cnf
[client] MySQL
[client]
MySQL UNIX user
.my.cnf
52 MySQL
Windows c : \ m y. c n f
chmod
3.22 MySQL
Windows MySQL
MySQL 3.21 MySQL Windows
MySQL Web
E MySQL
2.
csh tcsh bash
mysql
% !my
my
Ctrl-P Ctrl-N
Enter tcsh bash
3.
bash
DOS samp_db
Windows
1 MySQL SQL 53
mysql
1.5.2
mysql
mysql
mysql
mysql
INSERT
1. mysql
mysql GNU Readline
Enter
1-4
Readline
Readline http://www.gnu. org/ GNU Web
1-4 mysql
Up Ctrl-P
Down Ctrl-N
Left Ctrl-B
Right Ctrl-F
Escape Ctrl-B
Escape Ctrl-F
Ctrl-A
Ctrl-E
Ctrl-D
Delete
Escape D
Escape Backspace
Ctrl-K
Ctrl-_
mysql
Ctrl-P
mysql Windows MySQL Web
cygwin_32 mysqlc mysql
2.
ORDER BY
Telnet mysql
.mysql_history
mysql .mysql_history .mysql_history
3. mysql
mysql mysql
mysql
member interests
mysql
interests.sql mysql
mysql
mysql -t
1 MySQL SQL 55
Thomas Jefferson
depression Je fferson mysql
interests.sh
4.
INSERT INSERT
MySQL
UNIX
Telnet
1) UNIX Telnet Mac OS Better Telnet NCSA
Telnet Windows Telnet
2)
3) Telnet data.txt
cat
4) Telnet cat
data.txt
5)
Enter Ctrl-D cat data.txt
56 MySQL
data.txt LOAD
DATA mysqlimport
UNIX
FTP UNIX
UNIX UNIX
Mac OS Windows /
LOAD DATA mysqlimport UNIX
1.6
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL mysql
2 MySQL
SELECT 1
INSERT
14 int_col
a b C O N C AT( ) C O N C AT( ) ab
str_col
1 9 9 9 0 115 date_col MySQL
MySQL MySQL
NULL
CHAR
AUTO_INCREMENT TIMESTAMP
MySQL
13 13 abc 0
abc
B C MySQL
58 MySQL
2.1 MySQL
MySQL
1.
48 193.62 MySQL
0x
0 9 a f 0x0a 10 0 x ffff
65535 0x 0X 0x0a 0x0A
0X0a 0X0A
MySQL e E +
- 1.34E+12 43.27e-1
1.34E12 e
-
2.
Madison, Wisconsin patient shows improvement
2-1
\ NUL NULL NUL
NULL
2-1
\0 NUL (ASCII 0) \n
\ \r
\ \t
\b \\
2 MySQL 59
ASCII 0x616263
abc
3.
1999-06-17 12:30:43 MySQL /
1999-06-17 12:30:43 MySQL - -
MySQL ANSI SQL
DATE_FORMAT( )
4. NULL
NULL
NULL
NULL NULL NULL
NULL
2.2 MySQL
C R E ATE TABLE
SMALLINT
VARCHAR(32)
MySQL
MySQL
MySQL
NULL
MySQL
2.2.1
MySQL NULL
NULL NULL
MySQL 2-2
60 MySQL
2-2
TINYINT BIGINT
SMALLINT FLOAT
MEDIUMINT DOUBLE
INT DECIMAL
MySQL 2-3
MySQL
2-3
CHAR
VARCHAR
TINYBLOB BLOB
BLOB BLOB
MEDIUMBLOB BLOB
LONGBLOB BLOB
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM
SET
2-4 MySQL
2-4
DATE YYYY-MM-DD
TIME hh:mm:ss
DATETIME YYYY-MM-DD hh:mm:ss
TIMESTAMP YYYYMMDDhhmmss
YEAR YYYY
CREATE TABLE
f c i
my_table
2 MySQL 61
col_name 64
UNSIGNED B I N A RY
CHAR VARCHAR
NULL NOT NULL
NULL DEFAULT def_value
def_value def_value
BLOB TEXT
MySQL
C R E ATE TABLE
[] MEDIUMINT[(M)] M
CHAR(M) (M)
2.2.2
MySQL
1 43 -3 0 -798432
2-5 2-6
62 MySQL
CREATE TABLE
C R E ATE TABLE
1 CREATE TABLE D
2-5
2-6
TINYINT[ (M) ] 1
SMALLINT[ (M) ] 2
MEDIUMINT[ (M) ] 3
INT[ ( M) ] 4
BIGINT[ (M) ] 8
FLOAT[ (M, D)], FLOAT(4) 4
DOUBLE[ (M, D) ], FLOAT(8) 8
DECIMAL (M,D) M MySQL < 3.23 M+2 MySQL ≥ 3.23
TINYINT MEDIUMINT
BIGINT INT
DOUBLE FLOAT
FLOAT
M M 1 255
MEDIUMINT(4) 4
MEDIUMINT
M M
M D M 1 255
D 0 30 M-2 ODBC M D
ODBC M D FLOAT DOUBLE
DECIMAL
M D
M D DECIMAL M D
MySQL
SMALLINT(3)
3 -32768 32767 12345
12345 99999
32767 32767
F L O AT(8, 1)
1.23456 1.2 F L O AT(8, 4)
1.2346
2-7 M D DECIMAL(M, D)
SELECT
AUTO_INCREMENT
UNSIGNED UNSIGNED
UNSIGNED
UNSIGNED
NULL NOT
66 MySQL
2.
ID
A U TO_INCREMENT
AUTO_INCREMENT
AUTO_INCREMENT
(1) MySQL 3.23 AUTO_INCREMENT
MySQL 3.23 AUTO_INCREMENT
NULL A U TO_INCREMENT MySQL
AUTO_INCREMENT 1
1 2 3
1
0 AUTO_INCREMENT NULL
AUTO_INCREMENT NULL
AUTO_INCREMENT
AUTO_INCREMENT
AUTO_INCREMENT
A U TO _
INCREMENT 1000 1
1000
NULL A U TO_INCREMENT
AUTO_INCREMENT 999
1000
AUTO_INCREMENT
AUTO_INCREMENT
1
REPLACE
2 MySQL 67
U P D ATE A U TO _ I N C R E M E N T
NULL 0
LAST_INSERT_ID( )
AUTO_INCREMENT LAST_INSERT_ID( )
A U TO_INCREMENT
AUTO_INCREMENT AUTO_INCREMENT
LAST_INSERT_ID( ) 0
AUTO_INCREMENT
AUTO_INCREMENT = 1000000
AUTO_INCREMENT
(3) AUTO_INCREMENT
AUTO_INCREMENT
A U TO_INCREMENT A U TO _
INCREMENT MySQL 3.23
CHAR A U TO_INCREMENT
AUTO_INCREMENT
A U TO_INCREMENT
A U TO_INCREMENT A U TO_INCREMENT
UNSIGNED
AUTO_INCREMENT
MySQL
AUTO_INCREMENT
AUTO_INCREMENT
68 MySQL
1 CREATE
TABLE
MySQL DELETE
MySQL
3.23
AUTO_INCREMENT
NULL
LAST_INSERT_ID( )
AUTO_INCREMENT 100 1
MySQL
MySQL 3.23 C R E ATE TABLE
WHERE SELECT
COUNT(*)
100 NULL MySQL
100 101 MySQL
1
ID 1 000 000
ID
ZEROFILL
Perl PHP
Perl
2 MySQL 69
Perl s ++ +=
+= $s
1
1
(4) AUTO_INCREMENT
AUTO_INCREMENT
LAST_INSERT_ID( ) MySQL 3.22.9.
L A S T _ I N S E RT_ID(expr)
LAST_INSERT_ID( ) expr AUTO_INCREMENT
expr
seq_table seq 0
seq 1 L A S T _ I N S E RT _
ID(seq + 1) A U TO_INCREMENT
LAST_INSERT_ID( )
LAST_INSERT_ID( )
1
100
seq
3
2.2.3
MySQL
70 MySQL
gzip
4GB
/
24MB
2-8 MySQL
L
2-8
CHAR(M) M M
VARCHAR(M) M L +1
TINYBLOB, TINYTEXT 28 -1 L +1
BLOB, TEXT 21 6 - 1 L +2
MEDIUMBLOB, MEDIUMTEXT 2 2 4-1 L +3
LONGBLOB, LONGTEXT 2 3 2-1 L +4
ENUM( value1 , value2 , ...) 65535 1 2
SET( value1 , value2 , ...) 64 1 2 3 4 8
L MySQL
MEDIUMBLOB 2 24 - 1 3 3
MEDIUMINT 2 24 - 1
1. CHAR VARCHAR
CHAR VARCHAR CHAR
VARCHAR CHAR(M) M M
VARCHAR(M)
ANSI SQL VARCHAR
CHAR VARCHAR
VARCHAR
MySQL 3.23 CHAR VARCHAR 1 255 M
MySQL 3.23 CHAR(0)
CHAR(0) A LT E R
TABLE NULL CHAR(0) on/off
2 MySQL 71
NULL CHAR(0)
CHAR VA R C H A R MySQL
2.3
DESCRIBE my_table
4 VARCHAR
MySQL
VARCHAR CHAR MySQL
VARCHAR CHAR
72 MySQL
DESCRIBE my_table
2. BLOB TEXT
BLOB
MySQL BLOB TINYBLOB BLOB MEDIUMBLOB
LONGBLOB 2-8
MySQL TEXT TINYTEXT TEXT MEDIUMTEXT LONGTEXT
BLOB BLOB
TEXT BLOB TEXT
BLOB TEXT
BLOB TEXT
BLOB TEXT
BLOB TEXT
OPTIMIZE TABLE
4
max_allowed_packet
11 MySQL
E MySQL mysql
mysqldump
3. ENUM SET
ENUM SET
ENUM SET
ENUM SET
ENUM ENUM
65 536 MySQL
ENUM( N , Y ) N Y ENUM
2 MySQL 73
Web ENUM
ENUM
ENUM
SET SET ENUM
SET ENUM
64 SET
SET
SET
SET
SET
SET
SET Web
Web
ENUM SET
ENUM SET
ENUM( Y , N )
y n Y N
ENUM SET
ENUM SET
SET SET
ENUM SET
ENUM SET
ENUM SET
74 MySQL
ENUM 1 0 MySQL
ENUM 256
65 536 TINYINT
UNSIGNED SMALLINT UNSIGNED 65 536
256 ENUM
65 535 65 536 MySQL
ENUM MySQL
mysql
NULL
ENUM
0
x ENUM
2 MySQL 75
SET ENUM
SET 0 1
SET 0 SET 8
SET 64 1 8
9 16 17 24 25 32 33 64 SET 1 2 3 4 8
SET SET
SET
SET
SET
SET
SET
NULL
ENUM
ENUM
ENUM CONCAT( )
ENUM
4.
CHAR VARCHAR BINARY
2.2.4
MySQL D AT E D AT E T I M E TIME
TIMESTAMP YEAR 2-9 MySQL
YEAR MySQL 3.22
MySQL 2-10
2-10
MySQL
1. DATE TIME DATETIME
DATE TIME D ATETIME
YYYY - MM - DD hh:mm:ss YYYY - MM - DD hh:mm:ss DATETIME
DATE DATETIME MySQL
00:00:00
MySQL DATETIME TIME DATETIME
TIME
TIME
12:30 TIME 00:12:30 12 30
TIME
12 30 12:30:00
2. TIMESTAMP
TIMESTAMP YYYYMMDDhhmmss 19700101000000
2037 UNIX UNIX 1970
1970 T I M E S TAMP
UNIX 2037
78 MySQL
T I M E S TAMP UNIX
MySQL
TIMESTAMP
TIMESTAMP NULL
TIMESTAMP
TIMESTAMP TIMESTAMP
NULL
T I M E S TAMP 2-12 TIMESTAMP
M 2-12
M TIMESTAMP
TIMESTAMP(14) YYYYMMDDhhmmss
M 0 14 TIMESTAMP(12) YYYYMMDDhhmm
TIMESTAMP(14) 1 13 TIMESTAMP(10) YYMMDDhhmm
M TIMESTAMP(8) YYYYMMDD
TIMESTAMP(6) YYMMDD
T I M E S TAMP
TIMESTAMP(4) YYMM
T I M E S TAMP TIMESTAMP(2) YY
4 14
SELECT
MySQL T I M E S TAMP
14
MySQL
TIMESTAMP NULL
2 MySQL 79
DATETIME NOW( )
T I M E S TAMP
TIMESTAMP TIMESTAMP
T I M E S TA M P
TIMESTAMP NOW( )
TIMESTAMP
3. YEAR
YEAR 1 1901 2155
YEAR
YEAR
YEAR M 4 2 YEAR
M 4
TINYINT YEAR
YEAR SMALLINT
YEAR YEAR
SMALLINT YEAR MySQL MySQL
2 4 97 14 1997 2014
00 0000 2-13
2000 2000
00
DATETIME YYYY - MM - DD hh:mm:ss
4. TIMESTAMP YY - MM - DD hh:mm:ss
YYYYMMDDhhmmss
NULL NOT YYMMDDhhmmss
YYYYMMDDhhmmss
NULL
YYMMDDhhmmss
NULL NOT NULL DATE YYYY - MM - DD
NULL YY - MM - DD
D E FA U LT YYYYMMDD
YYMMDD
YYYYMMDD
NULL YYMMDD
NULL TIME hh:mm:ss
hhmmss
hhmmss
5. YEAR YYYY
MySQL YY
D ATE YYYY
YY
80 MySQL
2-13
- :
: MySQL :
10
001231
DATE 2000-12-31 DATETIME 2000-12-31 00:00:00
001231 1231
DATE 20001231 DATETIME 200012310000
DATE DATETIME TIMESTAMP
00 69 2000 2069
70 99 1970 1999
YEAR
2 MySQL 81
00 0000 2000 0 YEAR
2000 0 00
CONCAT( ) YEAR MySQL CONCAT( )
MySQL MySQL
MySQL
MySQL 2000
MySQL
MySQL
president 1700
MySQL
2.3
MySQL
2 11 2 11
MySQL
82 MySQL
UNSIGNED ENUM
SET
10 CHAR(255)
ALTER TABLE
SMALLINT MEDIUMINT
CHAR ENUM MySQL 3.23
PROCEDURE ANALYSE( )
2.3.1
0.25 (trace)
2 MySQL 83
NULL
0.01
FLOAT DOUBLE
DECIMAL(M, 2) M
DECIMAL
100
height
6 2 6-2
74
MySQL
MySQL
DATE DATETIME
D ATE TIME
TIME NULL
-
ID
D ATETIME
DATE TIME
TIME
D ATE
2.3.2
BIGINT
BIGINT
2 MySQL 85
ALTER TABLE
1 score
score INT 0
100 TINYINT UNSIGNED
UNSIGNED
ENUM SET
1000
0 100
TINYINT UNSIGNED
1
NULL 1 1 UNSIGNED
ALTER TABLE
2.3.3
MySQL
1.
ENUM SET
86 MySQL
dotted-quad IP 192.168.0.4
UNSIGNED IP
IP INT
2.
I/O
MEDIUMINT
BIGINT F L O AT DOUBLE
BLOB 2 LONGBLOB
4 64KB BLOB
2 TEXT
3.
OPTIMIZE TABLE
CHAR(n)
n
VARCHAR(N)
CHAR VARCHAR
CHAR VARCHAR
A LT E R
TABLE
255
4.
2.3.4
2-14
BINARY CHAR VARCHAR
BLOB TEXT
2-14
TEXT
TEXT
B I N A RY my_col
CHAR
my_col = ABC
BINARY my_col = ABC
my_col = BINARY ABC
ENUM ENUM
2.3.5
4
WHERE
NULL
DATE 0000 - 00 - 00
-1
BLOB TEXT 255
VARCHAR VARCHAR(255) BINARY BLOB
VARCHAR(255) TEXT
2.3.6
A U TO _
INCREMENT
NULL
A U TO_INCREMENT
TINYINT BIGINT
A U TO_INCREMENT
AUTO_INCREMENT
AUTO_INCREMENT UNSIGNED
2.4
MySQL
SELECT WHERE
WHERE
2 MySQL 89
DELETE UPDATE WHERE INSERT VALUES( )
MySQL (4 * 3)/(4 - 2) 6
MySQL 960821
1996-08-21
MySQL MySQL
MySQL MySQL
C
2.4.1
0
abc
NOW( )
STRCMP( abc , def )
STRCMP( abc , def )
STRCMP ( abc , def )
MySQL
SELECT
1.
MySQL 2-15
+ - *
BIGINT 64 / %
90 MySQL
BIGINT 64
64
2-15
+ a+b
- a-b
- -a
* a*b
/ a/b
% a%b
2-16 MySQL
C && || ! AND OR NOT ||
ANSI SQL || MySQL
0
2-17
AND OR BIGINT 64
2-17
2-18
NULL <=> MySQL MySQL 3.23
2-18
= a=b
!=, <> a != b, a <> b
< a<b a b
<= a <= b a b
2 MySQL 91
>= a >= b a b
> a>b a b
IN a IN (b1, b2, ...) a b1, b2, ...
BETWEEN a BETWEEN b AND c a b c b c
LIKE a LIKE b SQL a b
NOT LIKE a NOT LIKE b SQL a b
REGEXP a REGEXP b a b
NOT REGEXP a NOT REGEXP b a b
<=> a <=> b NULL
IS NULL a IS NULL NULL
IS NOT NULL a IS NOT NULL NULL
MySQL 3.23 B I N A RY
NOT BINARY
BINARY
CHAR BINARY VARCHAR BINARY BLOB
UPPER( ) LOWER( )
e
ASCII
MySQL LIKE %
_ SQL MySQL
grep sed vi UNIX REGEXP
=
NOT LIKE NOT REGEXP
LIKE REGEXP
MySQL 3.23.4
REGEXP
SQL
LIKE % _ Frank%
Frank
92 MySQL
% Frank% Frank
% % NULL
NULL
MySQL LIKE
Frank% Frankly frankly
LIKE _ __
c_t cat cut c_t _
% _
\% \_
[...] -
^
* x* x
0 ^pat
pat$ pat ^pat$
2 MySQL 93
pat
REGEXP
MySQL C
2.
*
/ + -
3. NULL
NULL
NULL NULL
NULL NULL
2.4.2
MySQL
+ 1 2
MySQL
+
MySQL 2 2 3
C O N C AT( )
CONCAT( )
C O N C AT( )
abc 0
abc
0000-00-00
MySQL
2 MySQL 95
MySQL
0
MySQL 3.23
3.23
.3
.3 0 1
IF( )
1
MySQL
MySQL
< <= =
96 MySQL
MySQL
MySQL
<=> NULL NULL NULL <=> NULL
<=> =
T I M E S TAMP D ATETIME
TIMESTAMP ODBC
0 14.3
14.3 L4.3 0
1.
MySQL
TO_DAYS( )
2.
mysql
SELECT
DELETE UPDATE
2 MySQL 97
DELETE U P D ATE WHERE
my_table CHAR char_col
00
MySQL char_col 00
MySQL
DELETE char_col 0 00 0
0 WHERE
DELETE DELETE SELECT
WHERE
MySQL
+0 + 0.0
CONCAT( )
ASCII( ) ASCII
DATE_ADD( )
98 MySQL
3.
MySQL
TIME
ENUM SET
ENUM SET ENUM
SET
2 - 11
TIME NULL
MySQL SQL
MySQL SQL
3-1 3-1
MySQL
SQL
mysqlshow SHOW COLUMNS
GRANT
REVOKE 11 MySQL
D SQL
MySQL MySQL Reference
Manual
MySQL
MySQL
MySQL
MySQL
LOCK
TABLES UNLOCK TABLES MySQL
/ Postgres
MySQL 3.24
3.2 MySQL
SQL
3.2.1
_ $
MySQL
E e
23e + 14 23e 14 23e+14
64
256
db_name
tbl_name
samp_db
member samp_db
db_name.tbl_name.col_name
tbl_name.col_name col_name
FROM
3 MySQL SQL 101
USE
SELECT
MySQL
3.2.2 SQL
SQL
SQL
MySQL
UNIX UNIX
Windows Windows
UNIX Windows
abc ABC Windows
MySQL
SQL
3.3
2. DROP DATABASE
DROP DATABASE
DROP DATABASE
3. USE
USE
db_name.tbl_name
USE
MySQL
3.4
C R E ATE TABLE
3 MySQL SQL 103
1 C R E AT E
TABLE
MySQL
D C R E ATE TABLE
REFERENCES CONSTRAINT CHECK
MySQL
CREATE TABLE
1 C R E ATE TABLE 2
1.
MySQL 3.23 ISAM MySQL 3.23
CREATE TABLE TYPE = type
type MYISAM ISAM HEAP
ALTER TABLE
HEAP
HEAP
ISAM
AUTO_INCREMENT ISAM 2
NULL BLOB
TEXT
myisamchk
myisamchk - fast
IF NOT EXISTS
3.
C R E ATE TEMPORARY TABLE
DROP TABLE
mysql
MySQL
3 MySQL SQL 105
samp_db member
member member
DROP TABLE member member
member
4. SELECT
SELECT
SELECT
MySQL 3.23 SELECT
WHERE
WHERE
LOAD DATA
LOAD DATA
my_tbl
C R E ATE TEMPORARY TA B L E
mysql
t1 t2
c
DROP TA B L E
IF EXISTS
3.4.3
4
4
1.
MySQL
ENUM SET n n
3 MySQL SQL 107
MySQL
ISAM MyISAM
ISAM MyISAM
NULL
BLOB TEXT
16 32
16 16
256 500
ISAM NOT NULL
BLOB TEXT MyISAM
MySQL
3.23 NULL
2.
C R E ATE TABLE C R E ATE INDEX
ALTER TABLE CREATE INDEX MySQL 3.23
3.23 A LTER TABLE MySQL
CREATE INDEX ALTER TABLE
P R I M A RY KEY
UNIQUE
tbl_name column_list
index_name
MySQL ALTER TABLE
3.
DROP INDEX ALTER TABLE CREATE INDEX
DROP INDEX A LTER TABLE DROP INDEX
MySQL 3.22
P R I M A RY KEY
ALTER TABLE D
ALTER TABLE
CREATE TABLE
ALTER TABLE
Web
AUTO_INCREMENT
50 000 UNSIGNED
SMALLINT 65 535
50 000
CHAR(255)
100
ALTER TABLE
VARCHAR CHAR
ALTER TABLE
110 MySQL
MySQL 3.23
3.23 MySQL
3.23
chartbl VARCHAR
CHAR
A LTER TABLE
DESCRIBE chartbl
VARCHAR MySQL
VARCHAR
VARCHAR
DESCRIBE CHAR
ALTER TABLE
BLOB TEXT
3 MySQL SQL 111
chartbl
3.5
MySQL
A LTER TABLE
SHOW
SHOW DATABASES
SHOW TABLES
SHOW TABLES FROM db_name
SHOW COLUMNS FROM tbl_name
SHOW INDEX FROM tbl_name
SHOW TABLE STATUS
SHOW TABLE STATUS FROM db_name
mysqlshow SHOW
% mysqlshow
% mysqlshow db_name
% mysqlshow db_name tbl_name
% mysqlshow -- keys db_name tbl_name
% mysqlshow --status db_name
3.6
SELECT
SELECT selection_list
FROM table_list
WHERE primary_constraint
GROUP BY grouping_columns
ORDER BY sorting_columns
HAVING secondary_constraint
LIMIT count
SELECT column_list
FROM MySQL
1 SELECT
WHERE GROUP BY ORDER BY HAVING LIMIT
SELECT join MySQL
MySQL
3.8 SQL
SELECT
SELECT
SELECT
SELECT
LEFT JOIN
MySQL
t1 t2
3 MySQL SQL 113
3.6.1
trivial join
SELECT
SELECT
3.6.2
WHERE
equi-join
114 MySQL
SELECT FROM
FROM
tbl_name.col_name
my_tbl1 a b my_tbl2 b c a c
b my_tbl1.b my_tbl2.b
alias_name.col_name
3.6.3
NULL
ON USING( )
ON
3 MySQL SQL 115
USING( ) ON
my_tbl1.b my_tbl2.b
LEFT JOIN
NULL WHERE
NULL
3.7
MySQL SQL
# C
/* */ C
MySQL 3.23.3
--
MySQL
5--7 5-- 7
3.8
3.8.1
MySQL
1.
score
2.
LEFT JOIN
3 MySQL SQL 117
LEFT JOIN
3.8.2
3.6
LEFT JOIN NULL
t1 t2
1
student event
score
score
LEFT JOIN
/ student event
ON score
LEFT JOIN student event
score
score NULL WHERE score
score
ORDER BY
ID ID student_id
student score student.student_id
score.student_id
NULL score.student_id NULL
event_id event score
3.8.3 UNION
3 MySQL SQL 119
UNION MySQL UNION 3.24
SELECT
MySQL 3.23
HEAP
3.23 hold_tbl
DROP TABLE
3.8.4
3.8.5
AUTO_INCREMENT
ALTER TABLE
3.8.6
ENUM
3.8.7
2 LAST_INSERT_ID(expr)
Web nnn
LAST_INSERT_ID( )
P R I M A RY
KEY
Web
index.html
LAST_INSERT_ID( )
3 MySQL SQL 121
LAST_INSERT_ID( )
UPDATE SELECT
LOCK TABLES UNLOCK
TA B L E S L A S T _ I N S E RT_ID( )
3.8.8
mysql
3.9 MySQL
MySQL
MySQL
SELECT SELECT
MySQL 3.24
3.8.1
/ SQL
/
MySQL SQL
LOCK TABLES UNLOCK TABLES
MySQL
122 MySQL
47
t1 1 3
t2 47
t3 2 2
t4 2 47
t5 1 47 - 3 = 44 44
t6 2 47 - 2 = 45 45
5 45 42
2
1 MySQL
1 LOCK TABLES UNLOCK
TABLES
t1 1 3
t2 1 47
t3 2 2
t4 2 1
t5 1 47 - 3 = 44 44
t6 2 2 44
t7 2 44 - 2 = 42 42
WRITE inventory
READ
2
3 MySQL SQL 123
inventory customer
inventory customer
t1 1 3
t2 1 3
t3 2 2
t4 2 2
MySQL
samp_db
score student_id student
score.student_id
124 MySQL
student
student
score
MySQL
MySQL
MySQL
DELETE
C R E ATE TABLE FOREIGN KEY
MySQL MySQL
MySQL
score
student
ID score
score
DELETE
13
student score
MySQL DELETE
SQL
MySQL
MySQL
MySQL
GET_LOCK( ) RELEASE_
LOCK( ) C
-- MySQL
MySQL 3.23
3.7
4
SELECT
MySQL
4.1
MySQL
MySQL
4.1.1
4-2 company_num
company_num
13
3 14
14
ad
ID
4-1 ad
4-2 ad
t1 t2 t3 c1 c2 c3 1
4 127
1000 1000
1000 3
1) t1
2) t2 t2 t1 t3
t3 t1
3) t1 t1
t1 t2 t3
MySQL WHERE
MIN( ) MAX( )
MySQL ORDER BY
MySQL
4.1.2
MySQL
4.4
4.1.3
128 MySQL
WHERE SELECT
SELECT
col_a
FROM
Tbl1 LEFT JOIN tbl2
ON tbl1.col_b = tbl2.col_c
WHERE
col_d = expr
WHERE
col1 = col2
col_b col_c MySQL
M F
CHAR(200) 10 20
10 20
I/O
MySQL
n MySQL n
MySQL
MySQL
4.2 MySQL
MySQL
MySQL
Getting Maximum Performance from MySQL MySQL
MySQL
h t t p : / / w w w.mysql.com/
MySQL
MySQL
MySQL
MySQL WHERE
EXPLAIN EXPLAIN MySQL
SELECT EXPLAIN
SELECT EXPLAIN
EXPLAIN
EXPLAIN
4.2.1
MySQL
SELECT
130 MySQL
MySQL
WHERE
4/2 2 my_col 2
MySQL my_col 2 4
date_col
1990
date_col
date_col
date_col
4 131
date_col
LIKE WHERE
string
%
% Mac
WHERE
last_name
REGEXP
4.2.2
MySQL
MySQL WHERE
DELETE
MySQL DELETE
DELETE MySQL
MySQL
132 MySQL
AUTO_INCREMENT 1
MySQL 3.23 AUTO_INCREMENT
2
WHERE 1 > 0 DELETE
MySQL
A U TO_INCREMENT MyISAM
MySQL 3.23 ISAM
WHERE
my_tbl key_col
MySQL 3.23.2
MySQL
ORDER BY
age
STRIGHT_JOIN
STRAIGHT_JOIN
4.3
BLOB
BLOB TEXT
CHAR VARCHAR
4 133
CHAR
40
CHAR(255) CHAR(40) MEDIUMINT
BIGINT I/O
NOT NULL
NULL
ENUM
ENUM ENUM
PROCEDURE ANALYSE( ) MySQL 3.23
PROCEDURE ANALYSE( )
PROCEDURE
ANALYSE( ) 16 256 ENUM
ENUM
PROCEDURE ANALYSE( )
ALTER TABLE
BLOB BLOB
3 ALTER TABLE
Web
ALTER TABLE
Web
BLOB
BLOB DELETE
UPDATE BLOB
OPTIMIZE TABLE
BLOB
OPTIMIZE TABLE
< >=
MySQL 3.23 MD5( )
BLOB MySQL 3.23.2
134 MySQL
BLOB 3.23.2
BLOB BLOB
BLOB TEXT WHERE
SELECT *
BLOB
BLOB
BLOB
BLOB BLOB
BLOB
4.4
SELECT
SQL SQL
mysqldump --extended-insert
INSERT --opt --extended-insert
mysqldump --complete-insert INSERT
--complete-insert
/ MySQL
--compress
4 135
MySQL I N S E RT
LOAD DATA I N S E RT
n --description
13
SELECT SELECT
I N S E RT
SELECT
--delayed-key-write
mysqld
flush-tables
4.5
MySQL
MySQL
SELECT
DELETE I N S E RT REPLACE UPDATE
MySQL
LOCK TABLES
UNLOCK
TABLES
MySQL DELETE
INSERT LOAD DATA REPLACE UPDATE LOW_PRIORITY
SELECT HIGH_PRIORITY I N S E RT REPLACE
DELAYED
LOW_PRIORITY
LOW_PRIORITY
LOW_PRIORITY
4 137
LOW_PRIORITY
SELECT HIGH_PRIORITY SELECT
I N S E RT D E L AYED I N S E RT DELAYED
MySQL
MySQL MySQL
INSERT DELAYED
SELECT
INSERT DELAYED INSERT DELAYED
I N S E RT I N S E RT DELAYED
INSERT DELAYED
AUTO_INCREMENT
I N S E RT DELAYED
kill -9 TERM
4.6
MySQL
MySQL
MySQL MySQL
138 MySQL
4.6.1
11
delayed_queue_size
INSERT DELAYED INSERT
D E L AYED
key_buffer_size
MySQL
4.6.2
RAM
RAM
I/O
10
Web Web
MySQL
UDF
MySQL
5 MySQL
MySQL
MySQL mysqldump mysqlimport
mysqladmin mysql
MySQL
mysql mysql
SQL
MySQL
MySQL
MySQL
MySQL
mysql
MySQL
mysql SQL
SQL
SELECT
mysql
140 MySQL
Missing NULL
State
94384.24 $94,384.24
SQL SQL
SQL
SQL mysql
LAST_INSERT_
ID() AUTO_INCREMENT
mysql
mysql
mysql -
MySQL
5 MySQL 141
Web
MySQL
Web
MySQL Web
MySQL Web MySQL
Web Web
MySQL Web
Web
Web Web
MySQL MySQL
Web
MySQL
MySQL
MySQL Web
Web
Historical League
Web Web
League Web
MySQL
Web
MySQL Web MySQL
142 MySQL
Web MySQL
Web MySQL
Web
5.2 API
MySQL C
C MySQL API API
C MySQL C
C MySQL MySQL
C API MySQL
API Perl PHP Java Python C++ Tcl
MySQL MySQL Web
API
MySQL
MySQL API
C API MySQL
Perl DBI API DBI DBD
Perl
DBD MySQL
DBI MySQL
Web Web MySQL
PHP API PHP Web
PHP
MySQL PHP Personal Home Page
PHP PHP Web
PHP Hypertext Preprocessor GNU( GUN
UNIX)
MySQL
I
5 MySQL 143
API API
API
API API API
API
API A
5.1.1 C API
C API C MySQL
DBI PHP
DBI Perl Mysqlperl Mysql.pm
MySQL Mysqlperl MySQL DBI
MySQL Perl
DBI Mysqlperl
MySQL Perl Mysqlperl DBI
DBI DBI Mysqlperl
PHP 3 PHP/FI 2.0 FI form interpreter
Mysqlperl PHP/FI
MySQL C API
mSQL RDBMS , MySQL C API
mSQL C API MySQL SQL
mSQL mSQL MySQL
MySQL API mSQL API MySQL
mSQL API MySQL msql2mysql
MySQL mSQL
MySQL C API C MySQL
Java API MySQL C
A DBI PHP MySQL Perl DBI
MySQL PHP
DBD(
Perl
Perl
mSQL/MySQL Postgres
DBD
Other
RDBMS
servers
5-1 DBI
DBI
MySQL
Postgres mSQL
DBI
DBI
5 MySQL 145
RDBMS SQL SQL
SQL
SQL MySQL SHOW TABLES
DBD
MySQL DBD
DBD
MySQL
7 MySQL DBD
MySQL
DBI
Web PHP
IP
DBI DBD
DBI DBD DBI
DBD
PHP < php > HTML
HTML
PHP DBI
API C
PHP MySQL PHP MySQL C
5.2 API
C MySQL C
API
API
API
MySQL
5.2.1
cron job
cron
Web
API
C C
Web C Perl PHP
Web
5 MySQL 147
Perl C Web Perl
CGI.pm Perl MySQL Web
CGI.pm Web
DBI MySQL
PHP Web
PHP MySQL Web
PHP
C Perl Web
Perl PHP
Perl
5.2.2
Web
API
API API
Web Web
1.
C
Perl PHP C Perl PHP
C MySQL mysql
C
C
MySQL
2.
148 MySQL
Web
Apache Web Apache Web
Apache Apache Perl
PHP Apache
CGI Common Gateway
Interface CGI
Apache
Apache Perl PHP mod_perl mod_php3
Perl PHP
CGI
Apache
Web
Web
4 5
Apache
Apache
Apache Apache
Perl PHP
Perl
mod_perl
Perl PHP
Apache
Perl PHP PHP 4 PHP 4
5 MySQL 149
PHP 3 Zend Zend
Perl PHP
ID
Web ID
mod_perl
mod_perl Apache Perl
Apache Web mod_perl
http://perl.apache.org/guide/
Perl PHP Apache
Apache suEXEC
ID
5.2.3
MySQL API
Perl C
Perl DBI API C API
Perl /
ID/ C C
C
Perl PHP
( Perl PHP) C
PHP Perl
150 MySQL
C malloc()
free() Perl PHP
Perl PHP C
Perl PHP
C
C API
PHP
PHP PHP Base Library PHPLIB
Web Web
5 MySQL 151
PHPLIB
PHPLIB
5.2.4
MySQL
MySQL
API
DBI API DBI
PHP DBI
PHP C API
C API MySQL
RDBMS RDBMS
DBI PHP
DBI PHP
DBI
MySQL mSQL Postgres
DBI DBI-
>connect() PHP
MySQL crash-me
DBI
6 MySQL C API
MySQL C MySQL
C API
MySQL
C
MySQL
1. 1
2. 2
3. 3
4. 4
SQL
5 mysql
F C API
MySQL C
MySQL
mysql mysqladmin mysqldump
C MySQL
6 MySQL C API 153
MySQL
MySQL
6.1
MySQL
6.1.1
C MySQL C
gcc
MySQL
MySQL
MySQL
MySQL
MySQL RPM
RPM MySQL
A
6.1.2
MySQL
/usr/local/include/mysql /usr/local/lib/mysql
MySQL
-I/usr/local/include/mysql
-L/usr/local/lib/mysql -lmysqlclient
floor() -lm
make
myclient main.c aux.c
myclient.h Makefile
LIBS -lm
LIBS = -L/usr/local/lib/mysql -lmysqlclient -lm
-lsocket -lnsl LIBS
Makefile make
gcc
6.2 1
MySQL
MySQL
1 client.c
6 MySQL C API 155
main()
1) mysql_init() MYSQL
NULL mysql_init()
MYSQL
2) mysql_real_connect() mysql_real_connect()
NULL mysql_init()
NULL localhost
UNIX IP
TCP/IP
Windows TCP/IP UNIX
Windows NT NULL TCP/IP
NULL
NULL
0 NULL
F mysql_real_connect()
0
F mysql_real_connect()
mysql_close()
mysql_close() mysql_init()
% client1
156 MySQL
6.3 2
MySQL
1
Connect Quit
Access denied
MySQL
NULL NULL NULL
C NULL MySQL NULL
mysql_init() mysql_real_connect()
NULL
0 0 0 -1
MySQL API 0
0
MySQL
6 MySQL C API 157
API mysql_close()
API
mysql_error() mysql_errno()
API mysql_error()
mysql_errno()
2
1 client2.c
mysql_init() mysql_real_connect()
NULL mysql_init()
mysql_init()
158 MySQL
mysql_real_connect()
1 1
1 2
API
MySQL
strings
6.4 3
3 do_connect()
do_disconnect()
main()
1) common.c
6 MySQL C API 159
2) common.h
3) common.h
4)
5)
do_connect() do_disconnect()
do_connect() mysql_init() mysql_real_connect()
mysql_real_connect() do_connect()
do_ connect()
NULL do_connect() NULL
do_ disconnect ()
mysql_close () common.c
common.h common.c
common.h common.c
common.h common.c
common.c common.h
160 MySQL
common.c
do_disconnect() do_disconnect()
mysql_close()
mysql_close()
1 MySQL3.22 mysql_real_connect()
MySQL do_connect()
do_connect() 3.22
do_connect()
do_connect() mysql_real_connect()
MySQL MySQL_VERSION_ID do_connect()
MySQL_VERSION_ID mysql_real_connect()
6 MySQL C API 161
do_connect()
db_name mysql_real_connect()
stderr print_error()
print_error()
162 MySQL
do_connect() print_error()
client3.c client2.c
6 MySQL C API 163
6.5 4
MySQL
6-1
6-1 MySQL
-h host_name --host=host_name
-u user_name --user=user_name
-p -pyour_password --password --password=your_password
-P port_num --port=port_num
-S socket_name --socket=socket_name
MySQL
/. my.cnf . m y.cnf
MySQL
E MySQL
164 MySQL
6.5.1
load_default() load_default()
a rgv[]
a rgv[]
a rgv[]
load_defaults()
show_argv load_defaults()
groups[]
client [client] NULL
my_init() load_defaults()
load_defaults() my
load_defaults() a rgv
&argv
show_argv load_defaults()
load_defaults()
[client] .my.cnf .my.cnf
6 MySQL C API 165
show_argv
~ /.my.cnf show_argv
.my.cnf
load_defaults() MySQL /etc/my.cnf my.cnf Windows
load_defaults() Windows C : my. c n f C : \ m y s q l \ d a t a \ m y.cnf
my.ini
load_defaults() client
[show_argv] ~/.my.cnf
show_argv
166 MySQL
group[] [client]
MySQL
load_default()
6.5.2
getopt_long()
getopt_long() MySQL
getopt.h MySQL include
load_defaults()
ps load_defaults()
ps
a rgv[] load_defaults()
ps
ps 6.5.2
do_connect() show_param
show_param.c
168 MySQL
show_argv() getopt_long()
getopt_long()
long_options
long_options[]
r e q u i r e d _ a rg u m e n t o p t i o n a l _ a rgument n o _ a rg u m e n t
getopt_long()
NULL getopt_long() optarg
long_options[]
6 MySQL C API 169
NULL getopt_long() switch
long_options[]
getopt_long()
long_options[] 0
getopt_long() int getopt_long()
long_options[] show_param
--password -p
--password --password = your_pass
-p -pyour_pass p long_options[]
o p t i o n a l _ a rgument MySQL
4
show_param ~ /.my.cnf show_argv
getopt_long() -h host_name
--user = paul --password = secret
client4.c
170 MySQL
6 MySQL C API 171
1 2 3 4
getopt_long()
MySQL
ps
get_tty_password()
MySQL getpass()
Windows get_tty_password()
172 MySQL
4
4 localhost UNIX
4 -p
some_host some_user
4 some_db do_connect()
MySQL
client4.c
do_connect()
do_disconnect()
1) client4.c
2) client4.c
3)
6.6
1)
2)
3) SELECT
INSERT
mysql_real_query()
mysql_real_query()
mysql_query()
6 MySQL C API 173
mysql_query()
mysql_query()
C strcpy()
sprintf()
6.8.2
mysql_query() mysql_real_query()
SELECT DELETE
I N S E RT DELETE
U P D AT E
SELECT SHOW
MySQL
MYSQL_RES
6.6.1
mysql_query() mysql_real_query()
mysql_affected_rows()
174 MySQL
mysql_rows_affected()
I N S E RT DELETE U P D AT E
MySQL MySQL
U P D ATE WHERE
UPDATE
6.6.2
mysql_query() mysql_real_query()
MySQL SELECT SHOW
DESCRIBE EXPLAIN
mysql_store_result() mysql_use_result()
MYSQL_RES NULL mysql_store_result()
mysql_use_result()
mysql_store_result()
mysql_fetch_rows() MYSQL_ROW
mysql_fetch_rows() NULL
mysql_free_result()
6 MySQL C API 175
process_result_set()
mysql_fetch_row() MYSQL_ROW
row[i] i 0 1
MYSQL_ROW
MYSQL_ROW MYSQL_ROW row
MYSQL_ROW *row
MYSQL_ROW
mysql_num_fields() ,
process_result_set()
176 MySQL
6.6.6
%s printf()
printf()
fwrite() putc()
6.6.3
6 MySQL C API 177
INSERT SHOW TABLES
MySQL C API
mysql_store_result()
mysql_store_result()
mysql_field_count()
mysql_field_count()
MySQL 3.22.24
mysql_field_count() mysql_num_fields() MySQL
mysql_field_count()
6.6.4
process_query()
mysql_query()
mysql_store_query()
mysql_field_count()
mysql_real_query()
mysql_query()
mysql_use_result() mysql_store_result()
mysql_error() mysql_field_count()
process_query() process_real_query()
process_query()
6 MySQL C API 179
mysql_store_result() mysql_use_result()
mysql_store_result() mysql_use_result()
mysql_store_result() mysql_fetch_row()
mysql_store_result()
mysql_fetch_row()
mysql_fetch_row() NULL
mysql_use_result()
180 MySQL
mysql_fetch_row() mysql_fetch_row()
NULL
mysql_errno() mysql_error()
mysql_use_result() mysql_store_result()
mysql_use_result()
mysql_use_result()
mysql_use_result()
mysql_use_result()
mysql_store_result()
mysql_data_seek() mysql_rowseek()
mysql_row_tell() mysql_use_result()
mysql_fetch_row()
mysql_store_result()
mysql_store_result()
mysql_store_result() mysql_use_result()
mysql_num_rows()
MYSQL_FIELD max_width mysql_use_result()
mysql_num_rows() max_width
mysql_store_result() mysql_num_rows()
mysql_fetch_row() mysql_free_result()
mysql
6 MySQL C API 181
mysqldump mysql_store_result()
--quick mysql_use_result()
6.6.6
mysql_num_rows() mysql_num_fields()
mysql_fetch_lengths()
MYSQL_FIELD mysql_fetch_fields() F
MYSQL_FIELD
mysql_store_result() mysql_use_result()
6.6.1
process_result_set()
process_result_set()
process_result_set()
182 MySQL
1)
2)
3)
NULL NULL
4)
mysql mysql
process_result_set()
MYSQL_FIELD mysql_fetch_seek()
mysql_fetch_field()
field->name
field->max_length
NULL NULL field->flag
NULL
max_length max_length
MYSQL_FIELD
MySQL
max_length max_length
unsigned int
mysql_use_result()
max_length max_length
mysql_store_result() (MYSQL_FIELD length
mysql_store_result() mysql_use_result()
)
6 MySQL C API 183
field name
NULL
row[i] field
print_dashes() :
184 MySQL
MySQL
6.7 5
process_query
process_result_set()
5 mysql 5
\g
quit Control-D
5 10
client4.c
6 MySQL C API 185
5 client4.c client5.c
process_query() process_result_set() print_dashes() client5.c main()
6.8
client1 client5
MySQL
6.8.1
summary_stats(),
NULL
summary_stats()
summary_stats()
186 MySQL
mysql_fetch_row() mysql_data_seek()
summary_stats() summary_stats()
mysql_store_result()
mysql_use_result()
summary_stats()
t-
6 MySQL C API 187
6.8.2
SELECT name
name 0 Malley,Brian
name
ANSI SQL SQL
mysql_escape_string()
mysql_escape_string()
Control-Z Windows
mysql_escape_string()
mysql_escape_string()
mysql_escape_string() 2
\0 , 0 ASCII 0
\\ \ \
mysql_escape_string()
mysql_escape_string() to_str
188 MySQL
from_str \0
SELECT
6.8.3
mysql_escape_string()
BLOB
images load_image()
load_image() 100K
6 MySQL C API 189
MYSQL_ROW mysql_fetch_
length()
6.8.4
MySQL
SELECT
mysql DESCRIBE
images
6.8.5
MySQL C API
MySQL
1. 1
NULL mysql_init()
MYSQL
MYSQL mysql_init()
mysql_init()
mysql_init() conn
main()
mysql_init() conn
190 MySQL
conn
conn 0 NULL
mysql_init() NULL conn
NULL MySQL C API
conn MYSQL
NULL mysql_init()
MYSQL conn
mysql_init() NULL
2. 2
3. 3 NULL
mysql_fetch_row() MYSQL_ROW NULL
row[i] NULL
6 MySQL C API 191
printf() NULL (null)
printf()
NULL IS_NOT_NULL()
4. 4
to_str
mysql_escape_string to_str
7 Perl DBI API
Perl DBI MySQL DBI
DBI C PHP API 5
samp_db
Perl
Perl
Programming Perl Wa l l
Christiansen Schwartz Potter O’ Reilly 1996 1999
Perl 5
DBI 1.13 1.xx
Perl DBI
G DBI
7.1 Perl
Perl Perl
UNIX #
UNIX Perl
7 Perl DBI API 193
Windows ActiveState Perl
DBI
DBI 7.3 DBI
7.2.1 DBI
$dbh
$sth
$fh
$h
$rc
$rv
$rows
@ary
7.2.2 DBI
dump_members DBI
MySQL
DBI
dump_members
194 MySQL
DBI
MySQL
7.2.8
Perl
use
$mv_var
n Perl $mv_var
undef
localhost
7.2.8 DBI mysql
DBI
RaiseError DBI
dump_members
DBI 7.2.3
SELECT
prepare( ) SQL
196 MySQL
execute( ) dump_members
fetchrow_array( )
SELECT
NULL undef Perl NULL
\t \n Perl
\t \n
finish( ) DBI
finish( ) finish( )
finish( )
dump_members DBI
DBI
prepare( ) SELECT
7.3 DBI
League DBI
Perl SELECT
7.2.3
connect( )
RaiseError PrintError
dump_members
RaiseError
$SIG{_DIE_}
RaiseError DBI
$SIG{_DIE_} RaiseError
DBI _DIE_
DBI
198 MySQL
connect( )
dump_members2
dump_member2 dump_members PrintError
RaiseError DBI
bail_out( ) $DBI::err $DBI::errstr
7 Perl DBI API 199
bail_out( ) bail_out( ) 6
C print_error( ) bail_out( )
$DBI::err $DBI::errstr
dump_member2 dump_members
fetchrow_array( ) dump_members2
7.2.4
do( ) undef
undef
do( ) 0
0E0 0 Perl 0E0 0
undef do( ) 0 undef
200 MySQL
printf( ) %d $row
7.2.5
SELECT (
SELECT , DESCRIBE EXPLAIN SHOW)
1.
dump_members DBI prepare( )
execute( ) fetchrow_array( ) finish( )
7-3 DBI
fetchrow_array( )
fetchrow_arrayref( )
fetch( ) fetchrow_arrayref( )
fetchrow_hashref( )
7 Perl DBI API 201
fetchrow_array( )
fetchrow_array( )
$ary[0]
$ary[1]
fetchrow_array( )
DBI
SELECT
fetchrow_arrayref( ) fetchrow_array( )
undef
$ary_ref $ary_ref->[$i]
$ary[$i] @{$ary_ref}
fetchow_arrayef( )
fetchrow_arrayref( )
202 MySQL
fetchrow_hashref( )
undef Perl
$hashref
SELECT
SELECT
fetchrow_hashref( ) fetchrow_hashref( )
fetchrow_hashref( )
fetchrow_hashref( )
fetchrow_array( ) fetchrow_arrayref( )
SELECT MySQL
Perl
NAME_lc NAME_uc
fetchrow_hashref( )
fetchrow_hashref( )
2.
7 Perl DBI API 203
SELECT SELECT
SELECT
MySQL execute( ) rows( )
MySQL mysql_use_result
rows( ) G
3.
count_members
SELECT fetchrow_array( )
fetchrow_array( )
undef
LIMIT 1
MAX( ) MIN( )
selectrow_array( )
prepare( ) execute( )
selectrow_array( )
204 MySQL
4.
DBI
president
president
fetchrow_array( )
dump_members
7 Perl DBI API 205
$rows 0 $cols 0
@{$matrix[$i]} $i
fetchrow_arrayref( )
fetchrow_arrayref( )
fetchrow_array( ) fetchrow_arrayref( )
DBI
fetchall_arrayref( )
fetchall_arrayref( ) prepare( )
execute( )
fetchall_arrayref( )
undef RaiseError
$i
@{$matrix_ref->[$i]}
fetchall_arrayref( )
fetchall_arrayref( )
selectall_arrayref( ) prepare( ) execute( )
finish( ) selectall_arrayref( )
206 MySQL
5. NULL
NULL 0
DBI NULL undef
false!
false!
$col_val
0
7.2.6
Perl
SQL Perl
7 Perl DBI API 207
Perl MySQL
Perl
$var 14
MySQL
qq{}
qq{}
INSERT
{ } qq qq( ) qq//
qq{} { ) /
)
INSERT qq( )
qq{} Perl
dump_members SELECT
qq{}
208 MySQL
qq{}
qq{} Perl
Perl SQL member
do( ) MySQL
SQL 6
mysql_escape_string( ) DBI
quote( )
do( ) MySQL
DBI
student
I N S E RT
do( ) prepare( ) execute( ) prepare( )
INSERT execute( )
prepare( ) DBI
INSERT ? execute( )
do( )
prepare( ) execute( )
quote( )
execute( )
210 MySQL
NULL undef
quote( )
SELECT
MySQL
DBI
DBI
bind_col( )
1 bind_col( ) execute( )
bind_col( ) bind_columns( )
7.2.8
connect( )
DBI
7 Perl DBI API 211
DBI_DSN
DBI_USER DBI_PASS
Windows user
localhost
undef UNIX Windows
ODBC
undef
mysql_read_default_file
/u/paul/.my.cnf
$ENV{HOME}
mysql_read_default_group
.my.cnf [client]
DBI [dbi]
MySQL DBI
212 MySQL
DBI
- / . m y.cnf MySQL
. m y.cnf
E
DBI
DBI
DBI
1.
MySQL mysql
DBI DBI
mysql
DBI
VALUES( )
do( )
214 MySQL
do(
)
2.
DBI
0 9 1 2 2
quote( )
trace( ) DBI_TRACE
DBI
trace( )
STDERR
DBI->trace( ) DBI
SELECT
trace( ) DBI
DBI DBI_TRACE
value n n STDERR
2 n=file_name n
csh
1 STDERR
1 trace.out
2 trace.out
sh ksh bash
Windows
7.2.10
DBI
DBI NUM_OF_FIELDS
MySQL DBD::mysql DBI MySQL
mysql_max_length
MySQL
prepare( ) execute( )
SELECT finish( )
MySQL mysql_max_length
DBI NAME
box_out mysql SELECT
box_out SELECT
216 MySQL
6 5
print_dashes( ) print_row( ) 5
box_out
show_member
7 Perl DBI API 217
show_members
23 C
show_member NAME
NUM_OF_FIELDS
218 MySQL
show_member
SELECT * NAME member
DBI DBD::mysql G
MySQL
7.3 DBI
DBI
1 DBI
League
7.4
Web DBI Web
8 PHP API
7.3.1
7 Perl DBI API 219
RTF Rich Text Format
Microsoft Word
WordPerfect A p p l e Work
RTF RT F
RTF
RTF
gen_dir
1)
RTF
2)
3) RTF
banquet rtf
1)
2)
3) gen_dir
%switchbox
220 MySQL
$func_hashref
fetchrow_hashref( )
$sth->{NAME}
$entry_ref->{col_name}
1.
7 Perl DBI API 221
format_banquet_entry( )
Jr. Sr.
II III
I V X 1 39
format_banquet_entry( ) RTF
format_rtf_entry( )
format_name( ) format_banquet_entry( )
2.
RTF
RTF
RTF
222 MySQL
{ } RTF
\rtfn n RTF
0
\fonttbl
0 Times
\plain \f0 0
Times \fs24 12 \fs
Email: Address:
RTF
Name: \b \b0
\par
RTF
7 Perl DBI API 223
format_rtf_entry( )
gen_dir
FTP
7.3.2
224 MySQL
cutoff
0
1 need_renewal
2
2 renewal_notify
need_renewal
need_renewal
7 Perl DBI API 225
renewal_notify
renewal_notify ID
ID @
ID
need_renewal renewal_notify
member
renewal_notify
renewal_notify sendmail
Windows Windows sendmail
sendmail
sendmail
interpret_argument( ) ID
read_file( )
need_renewal renewal_notify
interpret_argument( ) ID
226 MySQL
ID notify_member(
)
ID
ID
ID
notify_member( )
notify_member( )
ID
show_member
7 Perl DBI API 227
member
7.3.3
Web
edit_member
edit_member
228 MySQL
ID edit_member
Enter
ID show_member last_name
edit_member member
member I N S E RT
7 Perl DBI API 229
new_member( )
col_prompt( ) $show_current
$show_current 0
230 MySQL
Enter
edit_member member
expiration
col_prompt( )
expiration
7 Perl DBI API 231
1999-14-22
UPDATE
WHERE AND
col_name = col_val UPDATE
7.3.4
Find
MySQL
mysql
DBI interests
member interests
% interests
232 MySQL
7.3.5
7.4 MySQL We b
Web
HTML Web
HTML DBI HTML HTML
HTML
gen_dir
HTML
HTML 1
</BODY> </HTML>
7 Perl DBI API 233
format_rtf_entry( ) HTML
RTF
HTML gen_dir
HTML Web
234 MySQL
cron crontab
4 gen_dir
cron samp_db
Web
DBI DBI
Web Web DBI
Web
Web
samp_db
Web
member interests
Web
Apache /usr/local/apache
htdocs HTML cgi-bin Web
conf
cgi-bin Apache
Web URL
URL
http://your.host.name/cgi-bin/script_name
Web Web We b
mod_perl CGI
1) Perl 5.004 CGI.pm 2.36 mod_perl 1.07
2) mod_perl Apache
3) /usr/local/apache/cgi-perl cgi-bin
Apache cgi-perl
4) Apache cgi-perl mod_perl
Apache
httpd.conf Apache Alias
srm.conf Location access.conf cgi-perl mod_perl
PerlSendHeader PerlSetupEnv CGI.pm
236 MySQL
7.4.2 CGI.pm
CGI.pm $cgi->
$cgi-> DBI
CGI.pm
1.
CGI.pm We b
param( )
CGI.pm HTML
$cgi
7 Perl DBI API 237
CGI.pm HTML
HTML
CGI.pm
CGI.pm HTML < >
CGI.pm HTML
CGI.pm
2. HTML URL
CGI.pm start_html( ) h1( )
& CGI.pm
&
CGI.pm
escapeHTML( )
URL escape( )
Perl
HTML
URL
3.
Web HTML HTML
CGI
1)
2)
Web
238 MySQL
Web
param( ) CGI
We b
URL samp_db
URL
my_script
URL Web
param ( )
URL ? /
&
CGI
flip_flop A
page B B page
B
A B
7 Perl DBI API 239
flip_flop
$url URL
escape( )
URL
DBI MySQL
CGI
use CGI
/usr/local/apache/conf/samp_db.cnf
240 MySQL
Web Web
Web
Web www nobody 400
600 Web
Web Web
11 MySQL MySQL
Apache suEXEC
MySQL
Web
http://www.w3.org./Security/Faq/
7.4.4 samp_db
Web samp_db
samp_db Web
samp_db
samp_db MySQL samp_db
Web
samp_browse
samp_browse Web
Web
Web
samp_db
samp_db
LIMIT
7 Perl DBI API 241
samp_browse CGI Web
tbl_name
CGI.pm Web
param( ) samp_browse
tbl_name
tbl_name sort_column
end_html( ) HTML
display_table_list( ) display_table_list( )
HTML
242 MySQL
display_table_list( )
samp_browse tbl_name
display_table( )
ORDER BY 1
7 Perl DBI API 243
sort_column
event
display_cell( )
display_cell( ) URL
samp_browse
7.4.5
score_browse samp_browse
score_browse event_id
score_browse event
244 MySQL
display_events( ) event
event_id
URL score_browse
display_events( )
ID score_browse
7 Perl DBI API 245
score_browse event_id display_scores( )
Show Event List
URL score_browse event_id
display_scores( )
display_scores( ) 1 1.4.8
ID score_browse ID
ID
246 MySQL
ID ID
7.4.6
samp_browse score_browse
7.3 DBI
Web
interests member
%
interests
PHP
MySQL H PHP API PHP
PHP MySQL MySQL PHP
DBI PHP Web h t t p : / / w w w. p h p . n e t /
Web PHP 3 PHP 4
8.1 PHP
8.2 PHP
PHP Web
HTML PHP
8 PHP API 249
PHP HTML
PHP HTML PHP
PHP
HTML HTML
PHP
PHP
PHP
PHP
HTML PHP
PHP
PHP <?php
?> PHP <?php
HTML PHP PHP ?>
PHP
hello, world
Web Web
HTML
PHP Web
HTML PHP
PHP HTML
PHP PHP
HTML PHP PHP
HTML PHP
250 MySQL
PHP
PHP
PHP PHP
PHP
<SCRIPT> HTML
PHP
ASP H
PHP
Perl PHP
hello.php chmod +x
Web
Web
PHP
MySQL Web 5
Web
8 PHP API 251
HTML
samp_db
member
MySQL
samp_db
member
mysql_pconnect()
mysql_pconnect()
FA L S E exit()
mysql_pconnect() @
PHP mysql_pconnect()
Web
@
mysql_pconnect()
PHP @ mysql_pconnect()
Web
Web PHP
8.2.1 include
mysql_select_db()
252 MySQL
mysql_pconnect() mysql_connect()
mysql_pconnect() mysql_connect()
FALSE
mysql_pconnect() mysql_connect()
PHP
Apache mysql_pconnect()
MySQL PHP
MySQL
C DBI API MySQL
$link mysql_pconnect()
$link
mysql_select_db
mysql_query() \g
mysql_query() FALSE
mysql_fetch_row()
$row $row[0]
mysql_free_result()
PHP
mysql_free_result()
Apache
ushl ushl/index.php
8 PHP API 253
gp Web pit-
viper.snake.net URL
index.php
8.2.1 include
PHP
PHP
$link $result $row
$
$x
$x $x
$x[0] $x[1] $x yellow
large $x[ yellow ] $x[ large ]
PHP $x[1]
$x[ l a rg e ] $x $x-
>property_name $x->yellow $x->large $x
$x->1 PHP
MySQL
PHP include
samp_db_connect() include
samp_db_
connect() PHP
include Apache
Web
include Web
Web include
254 MySQL
PHP
C C
PHP C
C PHP
PHP C
PHP C Java Perl
Perl . .=
include
include_path
3) include include
samp_db.inc
MySQL samp_db
samp_db_connect() samp_db
FALSE
8 PHP API 255
PHP
include( ) require( )
PHP require() include() include()
include() require()
require()
require()
include()
include()
256 MySQL
samp_db.inc
HTML
html_begin() html_end() html_begin()
HTML
Copyright USHL
html_end()
8 PHP API 257
8.2.2
member 7
dump_members DBI PHP dump_members.php DBI
Web
HTML
HTML
dump_membes.php
ushl http://pit-viper.snake.net/ushl/dump_members.php
258 MySQL
8.2.3
MySQL PHP
mysql_query()
mysql_query()
mysql_query() FA L S E
MySQL
mysql_query() FA L S E
mysql_error() mysql_errno()
8.2.4
mysql_query()
8 PHP API 259
1.
DELETE
mysql_affected_rows()
2.
SELECT
mysql_query()
PHP PHP
mysql_query() FALSE
mysql_query()
mysql_query()
FA L S E
mysql_query()
mysql_num_rows()
mysql_num_fields()
mysql_fetch_
260 MySQL
row()
mysql_free_result() PHP
FALSE
8-1 PHP
mysql_fetch_row()
mysql_fetch_array()
mysql_fetch_object()
mysql_fetch_row()
0 mysql_num_fields() 1
mysql_fetch_row()
mysql_fetch_array() mysql_fetch_row()
mysql_fetch_array()
mysql_fetch_object()
8 PHP API 261
$row->col_name President last_name
first_name $row->last_name $row->first_name
NULL
isset() SELECT NULL
$row $row[$i] NULL isset($row[$i]) FALSE
$row[$i] NULL isset($row[$i]) TRUE empty()
NULL empty() NULL
mysql_fetch_object()
8.2.4
PHP
@ @
mysql_pconnect()
error_reporting()
1
2
4
8
error_reporting()
1 2 MySQL
4
8
16 32 PHP
mysql_errno()
0 MySQL
MySQL
mysql_query()
H PHP API
mysql_error()
8.2.5
PHP C Perl
O Malley MySQL
C mysql_escape_string() Perl DBI
quote( ) PHP addslashes( )
addslashes O’ Malley O’ Malley
Web HTML
URL HTML URL
PHP htmlspecialchars( ) urlencode( ) CGI.pm
escapeHTML( ) escape( )
8 PHP API 263
8.3 PHP
Web
Web
8.3.1
Web URL
h t t p : / / p i t - v i p e r. s n a k e . n e t / g p / index.php
7 score_browser
s c o r e _ e n t r y. p h p
1)
2)
3) ID
score
PHP
PHP URL
URL action
264 MySQL
$action switch()
PHP define() PHP switch() C
score_entry.php
display_events() MySQL
event ID
ID
$PHP_SELF URL
global :
266 MySQL
PHP global
$PHP_SELF
global URL
display_cell() 7 DBI PHP
solocit_event_info()
Submit ADD_EVENT s c o r e _ e n t r y. p h p
add_new_event() event
display_scores()
s c o r e [n] n student_id
Web PHP $score
ENTER_SCORES score_entry.php
enter_scores()
is_long() is_int()
FA L S E
TRUE
score_entry.php Web
Web
PHPLIB
8.3.2
Web
president
pres_quiz.php
president
name
270 MySQL
Submit
Web
explode()
8 PHP API 271
response Web
$name $place $choice name place choice
check_response()
place response
$place $response
pres_quiz.php
8.3.3
edit_member.php
MySQL
272 MySQL
edit_script.php ID
ID
member
edit_member.php
ID
8 PHP API 273
member_pass MD5
mysql
7 samp_browse
samp_db member_pass
ID edit_member.php
274 MySQL
display_entry() ID
member_pass 0
e d i t _ m e m b e r.php check_pass()
member_pass
ID
member display_column()
8 PHP API 275
NULL
expiration NULL
0000-00-00
NULL NOT NULL
mysql_fetch_field()
member nullable()
mysql_fetch_field()
SELECT
member nullability
MySQL
9 MySQL
MySQL MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
9.1
MySQL
MySQL
MySQL mysql safe_mysqld
MySQL MySQL
mysql SQL
mysqladmin
mysqladmin
isamchk myisamchk
278 MySQL
mysqldump
SQL mysqladmin
mysql
SQL MySQL GRANT
mysql
SQL SQL SQL
SQL
SQL SQL mysql
1 MySQL SQL
MySQL
9.2
mysqld MySQL
UNIX dump
mysqldump
9 MySQL 279
ISP
MySQL
MySQL MySQL
9.3
MySQL MySQL
UNIX
MySQL
MySQL UNIX
MySQL
9.4
MySQL
isamchk myisamchk
MySQL 10
MySQL
MySQL
10 MySQL
MySQL
MySQL mysql MySQL
MySQL
MySQL
10.1
MySQL
/usr/local/var MySQL /usr/local/mysql/
data RPM /var/lib/mysql
--datadir = / path / to / dir
MySQL
mysqladmin UNIX
10 MySQL 281
/usr/local/var
Windows
TCP/IP
--port --socket
mysqladmin
--host = host_name
ps mysql
ps --datadir
ps
ps --datadir mysqld
MySQL
Makefile Makefile
localstatedir datadir NFS
MySQL
find .frm
MySQL
MySQL DATADIR
10.2
MySQL
UNIX Windows
282 MySQL
10.2.1 MySQL
MySQL mysqld
10-1
1 2 3
UNIX TCP/IP ( )
UNIX UNIX, NT NT
MySQL
1 2 n
1 2 3 1 2 3 1 2 3
10-1 MySQL
SQL
10 MySQL 283
isamchk myisamchk isamchk myisamchk
13
10.2.2
MySQL
my_db DATADIR/my_db
C R E ATE DATA B A S E
db_name MySQL UNIX
db_name
% mkdir DATADIR/db_name
% chmod 700 DATADIR/db_name MySQL
SHOW DATABASE
MySQL
10.2.3
10-
1 ISAM MyISAM
10-1 MySQL
.frm
.ISD(ISAM)
.MYD(MyISAM)
ISD(ISAM)
.MYI(MyISAM)
284 MySQL
C R E ATE TABLE
MySQL
ALTER TABLE tbl_name.frm
CREATE DROP INDEX
ALTER TABLE DROP TABLE
10.2.4
MySQL
_ $
64
MySQL
$
UNIX Windows
$my_db
MySQL 64
UNIX 14
System V-ish 14
10
10.2.5
per-process 11 MySQL
directory-
lookup routine
10 000 30 000
Linux ext2 Solaris
MySQL
MySQL MySQL
MySQL
286 MySQL
10-2 MySQL
MySQL AIX
10.2.6 MySQL
MySQL 10-3
HOSTNAME
10-3 MySQL
ID HOSTNAME.pid ID
HOSTNAME.err
HOSTNAME.log /
HOSTNAME.nnn
safe_mysqld
stderr safe_mysqld
safe_mysqld
--log --log-update
SQL mysql
test
10 MySQL 287
ID
root
12
UNIX
SHOW
D ATABASE
stat()
ls -l
288 MySQL
- d
11
10.3
10.2
MySQL
PID /var/run
MySQL PID
10.3.1
[mysqld]
symlink
symbolic link
10-4
/etc/my.cnf Windows
c:\my.cnf Windows c:\windows c:\NT
my.cnf
/etc/my.cnf
10 MySQL 289
10-4
symlink PID
symlink
symlink
10.3.2
du df ls -l
/usr du -s
/usr/local/var df var
ls -l
10.3.3
10-5
symlink
--datadir=/path/to/dir
10-5 [mysqld]
datadir=/path/to/dir
290 MySQL
10.3.4
symlink
symlink
bigdb
FLUSH TABLE
bigdb.orig
10.3.5
symlink
symlink
10.3.6
PID safe_mysqld
safe_mysqld
10-6
10 MySQL 291
DROP DATABASE MySQL
symlink
MySQL symlink MySQL 3.23
10-6
MySQL
MySQL 12 13
MySQL
mysqladmin
safe_mysqld mysql.server MySQL mysqld
mysqldump
myisamchk isamchk
E MySQL
11.1 MySQL
A MySQL
MySQL root MySQL
MySQL mysql
root root
MySQL UNIX
root
test
test_
localhost
pit - viper.snake.net
test
root MySQL
MySQL root
11 MySQL 293
root
MySQL 3.22 mysqladmin flush.privileges FLUSH
PRIVILEGES SQL
root root
11.2 MySQL
MySQL
UNIX Windows
A
mysqladmin mysqldump
-h -u -p
11.2.1 MySQL
UNIX
paul paul su
root root
root
MySQL
root root
mysql
1) mysqld
MySQL MySQL
mysqladm mysqlgrp
mysqladm mysqlgrp
MySQL
ID mysqladm
mysqlgrp
RPM RedHat Linux MySQL mysql
mysqladm
2) account-creation
root
3)
4) mysqladm
/usr/local/var mysqladm
# cd /usr/local/var
# chown -R mysqladm.mysqlgrp
5) mysqladm
/usr/local/var
mysqladm root
# cd /usr/local/var
# chmod -R go -rwx mysqladm
root
mysqladm root
--user = mysqladm ID
mysqladm
--user MySQL 3.22 mysql MySQL 3.22
root su
su
11 MySQL 295
11.2.2
safe_mysqld safe_mysqld
safe_mysqld
safe_mysqld
safe_mysqld UNIX BSD
root safe_mysqld root
safe_mysqld
mysql.server safe_mysqld.mysql.server
System V /
start stop
BSD /etc
rc rc.local
rc.local
safe_mysqld
System V /etc
mysql.server Linux RPM MySQL
root
S99mysql start
chkconfig Linux mysql.server
1.
safe_mysqld mysql.server
TZ US Central Solaris
TZ
MySQL
2.
mysamchk
isamchk
13
11.2.3
mysqladmin
BSD
TERM mysqld
mysql.server System V-
stop
mysql.server
11 MySQL 297
11.2.4
MySQL root
localhost UNIX
/tmp/mysql.sock
/tmp cron
cron cron
/usr/local/var /etc/my.cnf
root
root kill
ps PID
ID
kill TERM
kill -9
mysqladmin flush-privileges
mysqladmin flush-privileges
11.3
MySQL
MySQL MySQL 3.22.11
GRANT MySQL REVOKE
mysql
GRANT REVOKE
user
db
tables_priv
columns_priv
11.3.1
GRANT
privileges GRANT
CREATE
DELETE
DROP
INDEX
INSERT
11 MySQL 299
REFERENCES
SELECT
UPDATE
FILE
PROCESS
RELOAD
SHUTDOWN
ALL ALL PRIVILEGES
USAGE
SHUTDOWN
ALL USAGE
columns
what
COLUMNS
user MySQL
MySQL
MySQL UNIX
Windows MySQL
root
MySQL
nobody nobody
password IDENTIFIED BY
IDENTIFIED
BY GRANT SET PASSWORD
PASSWORD()
WITH GRANT OPTION GRANT
GRANT
GRANT MySQL
1.
300 MySQL
samp_db.* samp_db
max
% LIKE
% max
max@%
mary
snake.net %.snake.net
IP
IP MySQL 3.23
IP
129.168.128 Class C
IP 192.168.128.0/17 17
IP 17 192.168.128.0/17
MySQL
2.
ethel
ON *.*
ethel
flush FLUSH
11 MySQL 301
ON db_name.*
bill samp_db
ro_user menagerie
SELECT
localhost
name reslover routine
pit-
viper pit-viper.snake.net
-h
GRANT
fine-grained
member
expiration UPDATE
MySQL
member UPDATE
expiration
tmp mars.net
tmp GRANT
tmp.tbl_name tmp
3.
WITH GRANT OPTION
alicia big.corp.com
sales GRANT
11.3.2
REVOKE FROM TO
IDENTIFIED BY WITH GRANT OPTION REVOKE GRANT
DELETE user
DELETE FLUSH
GRANT REVOKE
11.4 user
MySQL MySQL
fred snake.net
11 MySQL 303
samp_db fred
fred
mysql_install_db
fred anonymous-user entry
fred
12
user REVOKE
fred
11.4
MySQL
UPDATE DELETE
INSERT REPLACE CREATE TABLE DROP TABLE GRANT REVOKE
SQL mysql
mysql
--log --log-update
mysqld.safe_mysqld mysql.server [mysqld]
MySQL MySQL
log log
log.0 log log.0 log.1 log
log.0 log log.0 log.1
304 MySQL
LOAD DATA
LOAD DATE
10 MySQL
log.0 log.6
log.5 log.6 log.6 log.6
mysqlad-
min flush-logs
mysqladm .my.cnf
mysqladmin
RELOAD
flush flushpass GRANT
flush-log
mysqldump
--flush-logs
find -name
update
--log-update=update.log update.log
flush-logs
cron
rotate-logs rotate-update-logs /usr/user/mysql/bin mysqlladm
mysqladm crontab
crontab
cron 4
crontab
11.5
mysqldump cp
306 MySQL
tar cpio
mysqldump MySQL
mysqldump
mysqldump
MyISAM
ISAM S PARC
Solaris Intel Solaris MySQL 3.23
MyISAM
full dump
backup1 backup2
MySQL
11 MySQL 307
11.5.1 mysqldump
mysqldump C R E AT E
TABLE INSERT
mysqldump mysql
mysqldump
samp_db
mysql mysqldump
308 MySQL
samp_db p i t _ v i p e r.snake.net
boa.snake.net
boa.snake.net mysqladmin
--add-drop-table mysqldump
mysqldump
--flush-log --lock-tables --lock-table
--flush-log
--flush-logs
p e r- d a t a b a s e
mysqldump
--quick
mysqldump --opt
--quick -- opt
--opt --opt
--opt
--opt
--compress
mysqldump E
11.5.2
mysqldump cp
tar cpio cp
11 MySQL 309
direct-copy backup
13
samp_db DATADIR
MyISAM
11.5.3
live updating
MySQL 3.23
11.6
myisamchk isamchk
13
310 MySQL
mysql
11.6.1
mysql --skip-grant-tables
mysqladmin
flush-privileges
post-mortem examination
mysqldump
mysql tar
cp
ls
update.392
update.393
11.6.2
mysqldump
mysql
mysql_find_rows
11 MySQL 311
11.7
MySQL
E mysql
MySQL MySQL
back_log
Windows --flush
key_buffer_size
MySQL
max_allowed_packet
BLOB TEXT
24MB
mysql 24MB
max_connections
312 MySQL
table_cache mysqld
max_connections table_cache
ulimit
r e c o r d _ b u ffer s o r t _ b u ff e r
mysqladmin variables
11.8
MySQL
MySQL
MySQL
TCP/IP UNIX
UNIX
11 MySQL 313
11.8.1
RPM
MySQL
configure --with-prefix
MySQL
version MySQL
-- with-prefix
TCP/IP --with-tcp-port --with-unix-socket
11.8.2
safe_mysqld mysql.server
safe_mysqld
/ e t c / m y. c n f
my.cnf
/ e t c / m y. c n f
DATADIR/my.cnf DATADIR
--defaults-file=path_name
path_name
/etc/my.cnf
11.9 MySQL
MySQL
314 MySQL
MySQL
MySQL MySQL C
MySQL PHP Apache Perl
DBD::mysql MySQL DBI
PHP MySQL
MySQL
MySQL R
MySQL
12
MySQL MySQL
11 MySQL root
MySQL
MySQL
MySQL
MySQL
12.1
MySQL mysql
MySQL
MySQL
316 MySQL
MySQL
1) MySQL
ls -l
menager tmp
MySQL
UNIX
1)
2) root
mysqladm mysqlgrp
12 317
3) mysqladm
root
mysqladm root
4) mysqladm
mysqladm root
11
12.2
MySQL
GRANT REVOKE
MySQL MySQL 3.22.11
MySQL
11 GRANT REVOKE
GRANT REVOKE MySQL
MySQL
12.2.1 MySQL
MySQL
mysql MySQL A
12-1 12-2 user db host tables_priv columns_priv
user db host
Host Host Host
318 MySQL
( )
User Db Db
Password User
/
Alter_priv Alter_priv Alter_priv
Create_priv Create_priv Create_priv
Delete_priv Delete_priv Delete_priv
Drop_priv Drop_priv Drop_priv
Index_priv Index_priv Index_priv
Insert_priv Insert_priv Insert_priv
References_priv References_priv References_priv
Select_priv Select_priv Select_priv
Update_priv Update_priv Update_priv
user db host
File_priv Grant_priv Grant_priv
Grant_priv
Process_priv
Reload_priv
Shutdown_priv
tables_priv columns_priv
user Host Host
Db Db
DELETE User User
Table_name Table_name
Column_name
root
db db
host host db
GRANT REVOKE
tables_priv tables_priv
columns_priv columns_priv
1.
User Host
host
db Db
tables_priv columns_priv
2.
MySQL GRANT
user db host 11 GRANT
Select_priv SELECT
3.
CREATE
DELETE
DROP
INDEX
INSERT
REFERENCES
SELECT SELECT SELECT
SELECT NOW() SELECT 4/2
UPDATE
4.
FILE
12.2.3
320 MySQL
/etc/passwd
mysql
FILE UNIX root root
GRANT GRANT
PROCESS SHOW PROCESSLIST mysqladmin processlist
KILL mysqladmin
kill PROCESS
columns_priv Column_priv
user File_priv
Process_priv Reload_priv Shutdown_priv
12.2.2
MySQL
user
MySQL
12 321
1.
Host IP localhost
localhost
pit-viper.snake.net user Host localhost
pit-viper.snake.net localhost localhost
p i t - v i p e r.snake.net
user Host SQL
% _ LIKE
SQL REGEX IP %.wise.edu
wise.edu 192.168.% 192.168 B
192.168.3.% 192.168.3 C
% Host
% db Host host
MySQL 3.23 IP
192.168.128.0/17 17 IP 17 192.168.128
User
User % %
user User
Password
Password
GRANT mysqladmin password
I N S E RT REPLACE U P D ATE SET PASSWORD
PASSWORD( NEW_PASSWORD ) new_password
Db columns_priv tables_priv Db
dn host Db
SQL % _ %
Ta b l e _ n a m e Column_name
12-3
Table_name
UNIX
Windows
322 MySQL
12-3
Host No Db Yes
User Yes Table_name Yes
Password Yes Column_name No
2.
1) user
2) db
3) tables_priv
columns_priv
4)
user
user
PASSWORD UNIX
MySQL UNIX
UNIX MySQL
UNIX CRYPT()
PASSWORD()
db Host
host
db Db host host
Host
db host
AND
12 323
db host
in-memory
INSERT user
12.2.3
user
user
mysql
mysql
GRANT GRANT
FILE FILE
324 MySQL
FILE
FILE
FILE
LONGBLOB
y other_db.x
12.2.4 GRANT
GRANT user
12 325
User Host Password
GRANT INSERT PASSWORD() INSERT
db User Host
Db
tables_priv columns_priv
GRANT GRANT
grant
user ethel@localhost
INSERT
I N S E RT MySQL
user 14 SHOW
COLUMNS INSERT
GRANT
11 flush INSERT
ON db_name.* ON *.*
user user
db
MySQL mysqlaccess
mysql_setpermissions
11
MySQL
fred
mysql_install_db
user mysql_install_db
Host User user
localhost root
fred user
12 327
( )
localhost root
pit-viper.snake.net
Host fred fred
fred
fred
Host %.snake.net
fred
user
User db
tables_priv columns_priv
Host Host
13
MySQL
MySQL kill -9
myisamchk isamchk E
MySQL MySQL
13.1
1)
2)
3)
4)
11 mysqlaump
myisamchk isamchk
MySQL
mysql
tbl_name
MyISAM
% myisamchk *.MYI
% myisamchk *.ISM
myisamchk isamchk
13.1.2
myisamchk isamchk
--extend-check
myisamchk --medium-check
--extend-check
MySQL
myisamchk isamchk
13.1.3
330 MySQL
11
1.
1) --recover --quick
2) --quick myisamchk
isamchk
3) --safe-recover
-recover
2.
1)
2)
3) mysql
tbl_name.frm
4) mysql
5)
CREATE TABLE
1)
2)
3) mysql CREATE TABLE
4) mysql
2
13 331
5)
13.1.4 MySQL
/ MySQL
myisamchk isamchk
myisamchk isamchk
SELECT UPDATE
myisamchk isamchk
myisamchk isamchk
--skip-locking
Linux mysqladmin variables
skip_locking
skip_locking off
mysqladmin flush-tables
myisamchk
isamchk mysql LOCK
TABLE mysql
myisamchk isamchk myisamchk isamchk mysql
myisamchk isamchk
mysql myisamchk isamchk
1.
1 mysql
FLUSH
mysql 2
myisamchk isamchk
2.
mysql 2 myisamchk
isamchk
--recover
myisamchk isamchk 1 mysql
myisamchk isamchk
13 333
key_buffer_size
read_buffer_size
sort_buffer_size
w r i t e_buffer_size
--help
--set-variable variable=value -O variable=value
key read sort write myisamchk 16MB
1MB
myisamchk
myisamchk MySQL 3.23
myisamchk
ISAM
ISAM MyISAM MySQL
ALTER TABLE
13.2
1)
2) cron
crontab
mysqladm mysqladm crontab
cron UNIX
334 MySQL
3)
myisamchk isamchk
MyISAM ISAM
myisamchk isamchk
crontab
cron
--silent
myisamchk --fast
DATADIR
*/*.MYI */*.ISM
too many arg u m e n t s
DATADIR
check_mysql_tables
cron
/usr/users/mysaladm/bin
check_mysql_tables
13.2.1 cron
cron 3
crontab
13.2.2
BSD /etc/rc.local
check_mysql_tables
System V /etc/rc.d mysql.server
start stop
start
check_mysql_tables stop
mysql.check
mysql.check 11
mysql.server mysql.check
mysql.server S99mysql.server mysql.server
S98mysql.check mysql.check
A
MySQL Perl
DBI CGI.pm PHP Apache
samp_db
MySQL
A.1
MySQL
MySQL MySQL
DBI Web DBI
CGI.pm Web Apache
A.2
338
MySQL http://www.mysql.com/ ftp://ftp.mysql.com/pub/mysql/
DBI http://www.symbolstone.org/ technology/perl/DBI/
http://www.mysql. com/Contrib/
PHP http://www.php.net/
ftp://ftp.php.net/
Apache http://www.apache.org/ ftp://ftp.apache.org/
CGI.pm http://stein.cshl.org/WWW/software/CGI/
FTP
MySQL www.mysql.com Scandinavia
http://www.mysql.com/mirrors.html
Perl http://cpan.perl.org/
β
β
β
β
MySQL RPM
MySQL MySQL
Web β
RPM
root
root
Web
configure
configure
configure
A 339
configure
MySQL 3.22
3.23
MySQL RPM RPM
mysqld
mysql mysqladmin
RPM
RPM
A.3.1 MySQL
UNIX MySQL
1) UNIX
2)
3) mysql_install_db
4)
5) 11
A.3.2 MySQL
MySQL MySQL
MySQL UNIX
340
root MySQL
A.3.3 MySQL
MySQL
m y s q l -v e r s i o n - p l a t f o r m
MySQL A.3.4
A.3.5
2. RPM
RPM Linux MySQL
MySQL-version-platform.rpm
MySQL-client.version-platform.rpm
A 341
M y S Q L - d e v e l .v e r s i o n - p l a t f o r m.rpm
MySQL Perl DBI
MySQL-bench.version-platform.rpm Perl Msql-Mysql-modules
www.mysql.com Mysql-Mysql-modules RPM
MySQL-version.src.rpm
RPM RPM
RPM rpm_file
RPM
RPM
MySQL
MySQL A.3.4
A.3.5
RPM
3.
mysql-version.tar.gz version MySQL
tar z
mysql-version
MySQL
MySQL
configure
configure
--without-server
342
--prefix = path_name /usr/local
var bin libexec lib include
--prefix
--localstatedir = path_name
/usr/local/var
--with-low-memory sql/sql_yacc.cc
fatal signal 11 --with-low-
memory
configure
--prefix root
MySQL
MySQL A.3.4 A.3.5
A.3.4
MySQL
mysql
bin
D ATA D I R root
mysqladm MySQL root
chown chmod
mysql_install_db RMP
mysql_install_db
root mysqladm
MySQL root
--user
--user mysqladm
MySQL root
11
DBI RPM
Data-Dumper Perl
DBI DBI
Msql-Mysql-modules MySQL DBI MySQL
tar z
tar root
MySQL
On which host is the database running? localhost
make test
MySQL
User name for connecting to the database?
Password for connecting to the database?
MySQL
undef
Perl README DBI
PHP I N S TA L L
VERBOSE INSTALL
Apache Apache
PHP Apache 1.3.9 PHP 3.0.12
apache_1.3.9 php-3.0.12
PHP Apache
Apache httpd
httpd root
Apache Apache
apachectl start apachectl stop
mysqlwin.version.zip
winclients-version.zip mysql mysqladmin mysqldump
Windows
myodbc-version-win95.zip
myodbc-version-nt.zip
Windows 95 Windows 98 Windows NT MyODBC
mysqlclient-version-cygwin-b20.tar.gz Cygnus MySQL
mysqlc mysql
c:\mysql\lib cygwinb19.dll Windows
A.4.1 /
winclients.version.zip mysql
c:\
mysqlwin-version.zip
Setup c:\mysql MySQL
mysqld
mysqld-opt
mysqld-nt Windows NT
NT NT
mysqld mysqld-opt
mysqladmin
Windows NT mysqld-nt
mysqld-nt C : \ m y.cnf
mysqld-nt
mysqld-nt
A 347
--standalone
mysqladmin
MySQL MySQL
MySQL root
11
A.4.2 MyODBC
Windows 95 98 Windows NT
Setup MySQL ODBC ODBC
ODBC MySQL
CGI.pm
DBI
A.5 samp_db
samp_db
samp_db.tar.gz
samp_db
samp_db 1
6 C
7 Perl DBI samp_db.cnf
8 PHP samp_db.inc
samp_db README
B
MySQL 2
MySQL 3.21.0
[]
M M 1 255
D D 0 30 D M
2 M D+2
ODBC M D
DEFAULT
B.1
MySQL
AUTO_INCREMENT PRIMARY KEY
UNIQUE NULL AUTO_INCREMENT
350
UNSIGNED
ZEROFILL
1. TINYINT[(M)]
7. DOUBLE[(M, D )]
FLOAT
ZEROFILL
2.2250738585072014E 308; 1 79769313-
48623157E+308
NULL NULL NOT NULL 0
8
DOUBLE PRECISION[(M, D)] REAL[(M, D )] DOUBLE[(M, D)]
MySQL 3.23 FLOAT(8) M D FLOAT
MySQL 3.23 FLOAT(8)
8. DECIMAL(M, D )
1
ZEROFILL
DOUBLE DECIMAL M
D D
NULL NULL NOT NULL 0
MySQL 3.23 M MySQL 3.23 M
+2
NUMERIC(M, D )
MySQL 3.23 M ANSI SQL
B.2
MySQL
1.CHAR(M)
0 M MySQL 3.23 M 1 255
MySQL 3.23 M 0 255 M
M M
352
BINARY
0 M
NULL NULL NOT NULL
M
BINARY
2. VARCHAR(M)
0 M M 1 255
MySQL 3.23 0 255 M
M
BINARY
0 M
NULL NULL NOT NULL
1
BINARY
3. TINYBLOB
BLOB
0 255 0 28 1
NULL NULL NOT NULL
1
4. BLOB
BLOB
0 65535 0 2 16 1
NULL NULL NOT NULL
2
5. MEDIUMBLOB
BLOB
0 16777215 0 224 1
NULL NULL NOT NULL
3
6. LONGBLOB
BLOB
0 4294967295 0 2 32 1
B 353
NULL NULL NOT NULL
4
7. TINYTEXT
TEXT
0 255 0 28 1
NULL NULL NOT NULL
2
8. TEXT
TEXT
0 65535 0 2 16 1
NULL NULL NOT NULL
2
9. MEDIUMTEXT
TEXT
0 16777215 0 2 24 1
NULL NULL NOT NULL
3
10. LONGTEXT
TEXT
0 4294967295 0 2 32 1
NULL NULL NOT NULL
4
B.3
MySQL
1. DATE
YYYY-MM-DD
1000-01-01 9999-12-31
0000-00-00
NULL NULL NOT NULL 0000-00-00
3 MySQL 3.22 4
2. TIME
HH:MM:SS - HH:MM:SS
-838:59:59 838:59:59
00:00:00
NULL NULL NOT NULL 00:00:00
3
TIME 00:00:00
3. DATETIME
YYYY-MM-DD hh:mm:ss
19700101000000 2037
B 355
DESCRIBE SHOW COLLUMNS NULL
4
NULL TIMESTAMP
TIMESTAMP
14 NOT NULL
5. YEAR
YYYY
1900 2155
0000
NULL NULL NOT NULL 0000
1
YEAR MySQL 3.22
C
SQL MySQL
MySQL
2
MySQL MySQL
3.21.0 MySQL
MySQL
expression result
BETWEEN
expr
str
n n
x x
[]
C.1
C 357
C.1.1
NOT BINARY
C.1.2
( )
C.1.3
NULL NULL
+
+
0 CONCAT( )
*
358
/ NULL
% m n m%n MOD(m, n )
NULL
+ - * BIGINT 64
64
/ % BIGINT
C.1.4
1 0
T I M E S TAMP D ATETIME
TIMESTAMP ODBC
0 14.3
14.3 L4.3 0
B I N A RY
CHAR BINARY VARCHAR BINARY BLOB
= 1 0
C 359
= <=> NULL
!= <> 1 0
< 1 0
<= 1 0
>= 1 0
> 1 0
BETWEEN
360
expr
expr
expr
expr
expr IN 1 0 NOT IN
MySQL IN
expr IS NULL
NOT IS
C.1.5
BIGINT 64
C 361
NULL NULL
| OR
& AND
<<
>>
.1.6
1
0 0 NULL
NOT ! 1 0 NOT
NULL NULL
OR || OR NULL 1 0
MySQL ! || && C
|| SQL CONCAT( )
C.1.7
BINARY
BINARY
BINARY MySQL 3.23.0
C.1.8
SQL
NULL NULL
SQL
% NULL
LIKE SQL
C 363
MySQL LIKE
\ ESCAPE
C-1
^
$
.
[...]
[^...]
e* e
e+ e 1
e? e
e1|e2 e1 e2
e{m} e m
e{m,} e m
e{,n} e 0 n
e{m,n} e m n
(...)
other
[...] [^...]
[a-z] [0-9]
] -
^ [
MySQL
^
$
C.2
NOW( )
NOW ( )
C.2.1
expr
1.3 1 0.3 0
1 0
IFNULL(expr1, expr2)
expr1 NULL expr2 expr1 IFNULL()
NULL
NULL
ABS(x) x
ACOS(x) x x 1 1 NULL
GEILING(x) x
COS(x) x x
FLOOR(x) x x
LOG(x) x e
LOG( ) b x LOG(x)/LOG(b)
LOG10(x) 10 x
MOD(m, n) m%n
PI( ) π
ROUND(x)
x R O U N D (x, d) x d
d 0
SIGN(x) x 1 0 1
SIN(x) x x
TAN(x) x
C.2.3
LENGTH( )
1 0
ASCII(str) str ASCII str 0 str
NULL NULL
C 369
ASCII( ) MySQL 3.21.2
BIN(n) n
CONV( )
CHAR(n1, n2, ...) ASCII
NULL
255
FIND_IN_SET(str, str_list)
str_list SET FIND_IN_SET( )
str str_list str str_list 0 NULL
NULL 1
HEX(n)
n
CONV( )
HEX( ) MySQL 3.22.4
INSERT(str, pos, len, new_str) str new_str pos len
pos NULL NULL
LENGTH(str) str
LOCATE(substr, str )
LOCATE ( substr, str, pos)
LOCATE() substr str substr str
0 NULL NULL pos L O C ATE( )
pos substr
LOWER(str) LCASE( )
LPAD(str, len, pad_str) str pad_str
len str len str
OCT(n) n
CON( )
OCT( ) MySQL 3.22.4
OCTET_LENGTH(str) LENGTH( )
POSITION(substr IN str) LOCATE( )
SPACE(n) n n n NULL
NULL
S U B S T R I N G _ I N D E X ( s t r, delim, n ) str n
SUBSTRING_INDEX( ) delim n
n str delim n
str delim
NULL NULL
. .
UPPER(str) UCASE( )
C.2.4
D AT E
DATETIME TIMESTAMP
ADDATE(date, INTERVAL expr interval) DATE_ADD( )
CURDATE( ) YYYY-MM-DD
YYYYMMDD
CURRENT_DATE CURDATE( )
CURRENT_TIME CURTIME( )
CURRENT_TIMESTAMP NOW( )
C U RTIME() hh:mm:ss
hhmmss
C-2 DATE_ADD( )
SECOND ss
MINUTE mm
HOUR hh
DAY DD
MONTH MM
YEAR YY
MINUTE_SECOND mm:ss
HOUR_MINUTE hh:mm
HOUR_SECOND hh:mm:ss
DAY_HOUR DD hh
DAY_MINUTE DD hh:mm
DAY_SECOND DD hh:mm:ss
YEAR_MONTH YY-MM
C-3
MySQL 3.23.0 % %
DATE 00:00:00
%S, %s 00,01, . . ., 59
%i 00,01, . . ., 59
%H 24 00,01, . . ., 23
%h, %I 12 01,02, . . ., 12
%k 24 0,1, . . ., 23
%l 12 1, 2, . . ., 12
%T 24 hh:mm:ss
%r 12 hh:mm:ss AM hh:mm:ss PM
%p AM PM
%W Sunday, Monday, . . ., Saturday
%a Sun, Mon, . . ., Sat
%d 00, 01, . . ., 31
%e 1, 2 . . ., 31
%D 1st, 2nd, 3rd, . . .
%w 0=Sunday, 1=Monday, . . ., 6=Saturday
%j 001, 002, . . ., 366
%U 0, 1, 52 Sunday
%u 0, 1, 52 Monday
%M January, February, . . ., December
%b January, February, . . ., December
%m 01, 02, . . ., 12
%c 1, 2, . . ., 12
%Y
%y
%% %
DAYNAME(date) date
FROM_DAYS( ) 1582
FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp, format)
UNIX unix_timestamp UNIX_TIMESTAMP( )
Y Y Y Y-MM-DD hh:mm:ss
YYYYMMDDhhmmss format
DATE_FORMAT( )
PERIOD_ADD(period, n) period n
YYYYMM period YYYYMM YYMM
P E R I O D _ D I F F (period1, period2)
YYYYMM YYMM
QUARTER(date) date 1 4
TODAYS( ) 1582
UNIX_TIMESTAMP( )
UNIX_TIMESTAMP(date)
UNIX 1970-01-01 00:00:00 GMT
date UNIX date
D ATE D ATETIME T I M E S TAMP
YYYYMMDD YYMMDD
WEEK(date)
WEEK(date, first)
date 0 52
first
first 0 first 1
C.2.5
1
my_table my_col
1 3 5 7 9 NULL
AVG(expr) NULL expr
380
BIT_AND(expr) NULL expr AND
STDDEV(expr) STD( )
SUM(expr) NULL expr
C.2.6
CPU
C 381
BENCHMARK( ) MySQL 3.22.15
BIT_COUNT(n) 1 BIGINT 64
DATABASE()
Nellie 10
GET_LOCK( Nellie , 10)
GET_LOCK( )
382
1
Nellie 2 1
2
RELEASE_LOCK( )
RELEASE_LOCK( Nellie )
RELEASE_LOCK( ) 1
0 NULL
GET_LOCK( )
G E T _ L O C K ( s t r, 0) str
str RELEASE_LOCK( )
2 LAST_INSERT_ID( )
file
LOAD_FILE( ) NULL
LOAD_FILE( ) MySQL 3.23.0
MD5(str) RSA DATA Security, Inc. MD5 Message_Digest str
32
VERSION( ) 3.22.25.log
-log -debug -demo
[]
{}
|
...
MySQL 3.22.0
D.1 SQL
MySQL SQL
db_name USE db_name
CREATE TABLE
IF NOT EXISTS
T E M P O R A RY tbl_name
DROP TABLE
create_definition SELECT
table_options se l e c t _
statement SELECT SELECT
ENUM ENUM
A U TO_INCREMENT A U TO_INCREMENT
388
NULL A U TO _
INCREMENT 1 UTO_INCREMENT
UNIQUE PRIMARY KEY NOT NULL
AUTO_INCREMENT
PRIMARY KEY PRIMARY KEY
UNIQUE UNIQUE MySQL 3.23
P R I M A RY KEY UNIQUE INDEX KEY P R I M A RY KEY
UNIQUE INDEX KEY
index_columns tbl_name
CHAR VARCHAR
index_name
MySQL 3.23 NOT NULL MySQL 3.23
PRIMARY KEY NOT NULL
MySQL 3.23 table_options
A U T O_INCREMENT = n A U TO_INCREMENT
MyISAM
AVG_ROW_LENGTH = n MySQL
BLOB TEXT
4GB
CHECKSUM = {0 | 1} 1 MySQL
MyISAM
COMMENT = string 60
DELAY_KEY_WRITE = {0 | 1} 1
MyISAM
MAX_ROWS = n
MIN_ROWS = n
PACK_KEYS = {0 | 1} 1
0
8 CHAR VARCHAR
MyISAM ISAM
PASSWORD = string
id PRIMARY KEY
HEAP
SELECT
PRIMARY KEY
D.1.6 DELETE
tbl_name where_expr
WHERE
WHERE DELETE WHERE
MySQL
0
WHERE
LOW_PRIORITY LOW_PRIORITY
MySQL 3.22.5
LIMIT n LIMIT MySQL 3.22.7
390
D.1.7 DESCRIBE
IF EXISTS
IF EXISTS IF
EXISTS MySQL 3.22.2
DROP DATABASE
CREATE FUNCTION
IF EXISTS IF
EXISTS MySQL 3.22.2
D.1.12 EXPLAIN
EXPLAIN
table
D SQL 391
type MySQL system const
eq_ref ref range ALL MySQL
rows MySQL
D.1.13 FLUSH
D.1.14 GRANT
ALTER
CREATE
DELETE
DROP
INDEX
INSERT
REFERENCES
392
SELECT
UPDATE
FILE
PROCESS
RELOAD
SHUTDOWN
ALL ALL PRIVILEGES
USAGE
PROCESS
ON
*.*
*
db_name.*
db_name.tbl_name
tbl_name
ON column_list
TO IDENTIFIED
BY user_name@host_name user_name
host_name localhost IP
% - LIKE
user_name user_name@% MySQL 3.23 host_name
n.n.n.n./m IP / n.n.n.n IP m
IDENTIFIED BY
PASSWORD SET PASSWORD
IDENTIFIED BY
GRANT MySQL 3.22.11
GRANT 11
paul samp_db
user %
menagerie xyz.com
samp_db member
D SQL 393
menagerie
D.1.15 INSERT
I N S E RT SELECT tbl_name
SELECT tbl_name column_list
thread_id
PROCESS
mysqladmin kill ID
KILL ID
MySQL 3.22.9
FILE
LOCAL
FILE LOCAL MySQL 3.22.15
LOCAL
file_name
file_name
LOCAL
file_name
file_name
IGNORE REPLACE
string char
D SQL 395
\0 ASCII 0
\b
\n
\r
\s
\t Tab
\
\
\\
\"
NULL \N \0 ESCAPED BY
ENCLOSED BY
ESCAPED BY ESCAPED BY ' ' \
ESCAPED BY '\\'
LINES TERMINATED BY
FIELDS LINES
IGNORE n LINES n
IGNORE 1 LINES
column_list
Windows
/ \r
\n
Windows
MS-DOS Ctrl-Z
CSV
LOAD DATA
lock_list LOCK
TABLE LOCK TABLES
lock_list
READ
WRITE
LOW_PRIORITY WRITE
LOCK TABLES
D SQL 397
LOCK TABLES
LOCK TABLES
D.1.20 REPLACE
D.1.21 REVOKE
menagerie
398
D.1.22 SELECT
SELECT select_list
select_options
ALL
DISTINCT
DISTINCTROW
ALL DISTINCT
DISTINCTROW
HIGH_PRIORITY HIGH_PRIORITY
I N S E RT U P D ATE
SELECT HIGH_PRIORITY SELECT
SELECT
HIGH_PRIORITY
MySQL 3.22.9
SQL_BIG_RESULT
SQL_SMALL_RESULT
S Q L _ S M A L L _ R E S U LT MySQL 3.22.12 S Q L _ B I G _ R E S U LT
MySQL 3.23
STRAIGHT_JOIN FROM
select_list
AS alias_name
GROUP BY ORDER BY HAVING WHERE
* FROM tbl_name.*
LEFT JOIN
ON
conditional_expr USING column_list
conditional_expr WHERE column_list
LEFT OUTER JOIN
LEFT JOIN oj ODBC
NATURAL LEFT JOIN LEFT JOIN USING (column_list) column_list
ORDER BY GROUP BY
400
ASC DESC MySQL 3.23.2
ORDER BY RAND( )
LIMIT SELECT LIMIT n n LIMIT
m, n m n LIMIT 0 1
PROCEDURE MySQL 3.23
PROCEDURE ANALYSE( )
SELECT 1
1900-01-01
1900-01-01
member
member
D.1.23 SET
option_setting
CHARACTER SET {charset_name | DEFAULT}
cp1251_koi8
DEFAULT
LAST_INSERT_ID = n LAST_INSERT_ID( )
D SQL 401
PASSWORD [FOR user] = PASSWORD(" password " ) FOR
password FOR
mysql user user_name@
host_name GRANT user_name host_name
S Q L _ A U TO _ I S _ N U L L = { 0 | 1 } 1
AUTO_INCREMENT WHERE auto_inc_col IS NULL WHERE
Access ODBC 1
MySQL 3.23.5
SQL_BIG_SELECTS = {0 | 1} 1 max_join_size
SELECT 1
SQL_BIG_TABLES = {0 | 1} 1
SELECT table
full 0
MySQL 3.23
SQL_LOG_OFF = {0 | 1} 1
0
PROCESS
SQL_LOG_UPDATE = {0 | 1}
SQL_LOG_OFF PROCESS
SQL_LOG_UPDATE MySQL 3.22.5
SQL_LOW_PRIORITY_UPDATES = {0 | 1} 1
DELETE INSERT REPLACE UPDATE SELECT
SELECT
SQL_WARNINGS = {1 | 0} 1 MySQL
I N S E RT 0
SQL_WARNINGS MySQL 3.22.11
D.1.24 SHOW
SHOW
FROM db_name
LIKE pattern
% _ SQL
1. SHOW COLUMNS
SHOW COLUMNS SHOW FIELDS SHOW COLUMNS
SHOW COLUMN
Field
Type
Null NULL YES
Key
Default
Extra
Privileges MYSL 3.23
2. SHOW DATABASES
SHOW DATABASES
D SQL 403
3. SHOW GRANTS
SHOW GRANTS user_name$host_name
GRANT user_name host_name SHOW GRANTS
MySQL 3.23.4
4. SHOW INDEX
SHOW INDEX SHOW KEYS SHOW INDEX
SHOW INDEX
Table
Non_unique 1 0
Key_name
Seq_in_index 1
Column_name
Collation A D NULL
Info
6. SHOW STATUS
404
SHOW STATUS
Aborted_clients
Aborted_connects
Connections
Created_tmp_tables
Delayed_errors INSERT DELAYED
Delayed_insert_threads INSERT DELAYED
Delayed_writes INSERT DELAYED
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_delayed_rows INSERT DELATED
Not_flushed_key_blocks
Open_files
Open_streams
Open_tables
Opened_tables
Questions
Slow_queries long_query_time
Threads_connected
Threads_running
Uptime
7. SHOW TABLE STATUS
SHOW TABLE STATUS SHOW TABLE STATUS
MySQL 3.23
D SQL 405
Comment
8. SHOW TABLES
SHOW TABLES
9. SHOW VARIABLES
SHOW VARIABLES E
mysqld
UNLOCK TABLES
UNLOCK TABLE UNLOCK TABLES
D.1.26 UPDATE
406
tbl_name WHERE
SET
WHERE
U P D ATE
WHERE UPDATE
CLIENT_FOUND_ROWS F
mysql_real_connect( )
LOW_PRIORITY LOW_PRIORITY
MySQL 3.22.5
LIMIT n LIMIT MySQL 3.23.3
D.1.27 USE
db_name
USE
D.2
SQL mysql
mysql
MySQL
#
Perl
/* */
C
MySQL 3.23.3 --
MySQL
value1 - value2 value2
/* C
SQL MySQL
D SQL 407
MySQL MySQL
SQL MySQL
/*! MySQL 3.22.7
MySQL 3.22.26 /*! MySQL
UPDATE
3.23.3
mysql MySQL C
C
mysql mysql>
mysql
'>
\c mysql
E
E MySQL
MySQL
isamchk myisamchk
myisampack pack_isam
mysql MySQL
mysql.server MySQL
mysqlacess
mysqladmin
mysqlbug
mysqld MySQL
mysqldump
mysqlimport
mysqlshow
safe_mysqld MySQL
[]
E.1
MySQL
MySQL
mysqlbug mysql.server safe_mysqld MySQL --help
mysqlimport
? help
-? --help
E MySQL 409
-upaul -u paul -p
-p
E.1.1 MySQL
MySQL
-C, --compress
MySQL 3.22.3
-# debug_options, --debug=debug_options MySQL
debug_options
d:t:o,file_name
file_name
MySQL dbug/dbug.c
--defaults-file=path_name
--defaults-file
MySQL 3.22.23
-?, --
-h host_name, --host=host_name
--on-defaults
-p port_num, --port=port_num
TCP/IP localhost mysqld
TCP/IP
- -p r i n t - d e f a u l t s
--print-defaults
MySQL
--print-defaults
410
-O var-value, --set-variable var=value --set-
variable var
K M
k m K
M --help
-S path_name, --socket=path_name
localhost
-u user_name, --user=user_name
UNIX Windows
ODBC mysqld UNIX
root
- v, --verbose
-V, --version
E.1.2
MySQL
UNIX
/etc/my.cnf
DATADIR/my.cnf
-/.my.cnf
Windows
SYSTEMDIR \my.ini
c:\my.cnf
DATADIR \my.cnf
DATADIR --
E MySQL 411
datadir Windows DATADIR c:\mysql\data SYSTEMDIR Windows
C:\Windows C:\WinNT Windows
\ /
\ \\ \
[mysql] mysql
[mysqlshow] mysqlshow [client]
MySQL [client]
mysql [client] [mysql] mysqlshow [client ]
[mysqlshow]
-c --compress
compress
=
[mysql]
= set-variable
=
#
\b
\n
\r
412
\s
\t Tab
\\
[client]
mysql skip-line-numbers [client]
mysqlimport skip-line-
nembers [mysql]
[client ] MySQL compress debug help host
password pipe port select user version help version
600
400 MySQL
E.1.3
MySQL
MySQL
MYSQL_DEBUG MySQL
MYSQL_DEBUG --debug
MYSQL_PWD MySQL MYSQL_PWD
--password
MYSQL_TCP_PORT , TCP/IP
mysqld TCP/IP M Y S Q L _ T C P _ P O RT --port
4 13
MySQL 13
myisamchk isamchk
E.2.1
1 SHOW INDEX
mysqlshow --key key_name myisamchk isamchk
MYSQL_PWD
MYSQL_PWD
PS
isamchk myisamchk
414
-a, --analyze
--description --verbose isamchk myisamchk
-b n, --block-search=n n
-d, --description
-e, --extend-check isamchk
myisamchk
-f, --force
isamchk myisamchk tbl_name.TMD
--force -recover
-i, --information
-k n, --keys-used=n --recover MySQL n
n INSERT DELETE UPDATE
0
--quick
-r, --recover
-S, --sort-index
-R n, --sort-recoerds=n n
- w, --wait --wait
10
E.2.4 myisamchk
isamchk myisamchk
E MySQL 415
-c, --check
-D n, --data-file-length=n
MySQL
-recover --safe-
recover
-F, --fast
-m, --medium-check
myisamchk 99.99%
medium CRC
CRC
-T, --read-only
-A [n], --set-auto-increment[=n] AUTO_INCREMENT n
n AUTO_INCREMENT
A U TO_INCREMENT
-t path_name, --tmpdir=path_name
TMPDIR /tmp
MySQL
MySQL
MySQL
416
myisamchk --
unpack MyISAM isamchk --unpack ISAM
myisampack pack_isam
myisampack myisampack -rq pack_isam isamchk -rq
E.3.1
--force
-t, --test
-T path_name, --tmpdir=path_name
- w, --wait
E.3.4 pack_isam
E.4 mysql
mysql
mysql
mysql mysql>
mysql ;
/g mysql
mysql
mysql>
->
'>
">
'> ">
\c
mysql
$HOME/.mysql_history M Y S Q L _ H I S TO RY
Windows
,Ctrl-P
,Ctrl-N
,Ctrl-B
,Ctrl-F
Escape Ctrl-B
Escape Ctrl-F
Ctrl-A
Ctrl-E
Ctrl-D
Delete
Escape D
Escape
Ctrl-K
Ctrl_
db_name
db_name mysql
USE db_name
E.4.2 mysql
--silent --verbose
E.4.3 mysql
--skip-column-names
-T, --debug-info
-e, query, --execute=query
mysql
E MySQL 419
-r, --raw --batch
-N, --skip-column-names --
silent
-L, --skip-line-numbers
-t, --table
-n, --unbuffered
-E, --vertical row line
\G \g
MySQL 3.22.5
-w, --wait
E.4.4 mysql
mysql --set-variable
max_allowed_packet
n e t _ b u ffer_length
max_allowed_packet
E.4.5 mysql
mysql SQL
c l e a r, \c
mysql
connect [db_name [host_name]], \r [db_name [host_name]]
mysql
edit, \e EDITOR VISUAL vi
ego, \G MySQL
3.22.11
exit quit
go, \g, ;
help, \h, ? mysql
print, \p
quit, \q mysql
rehash, \# --no-auto-
420
rehash
stauts, \s
E.5 mysql.server
E.6 mysqlaccess
E.6.1
E.6.2 mysqlaccess
E.6.3 mysqlaccess
-b, --brief
--commit mysql mysqladmin flush-
privileges
--copy
-d db_name, --db=db_name
--debug=n n 0 3
--howto mysqlaccess
--old_server MySQL 3.21 mysqlaccess
--plan mysqlaccess
E MySQL 421
--preview
--relnotes mysqlaccess
-H host_name, --rhost=host_name
--rollback
-P password, --spassword=password MySQL
E.7 mysqladmin
mysqladmin MySQL
mysqladmin
E.7.1
E.7.2 mysqladmin
E.7.3 mysqladmin
E.7.4 mysqladmin
MySQL 2
mysqlbug
mysqlbug
MySQL
http://www.mysql.com/doc.html
mysqlbug [address]
MySQL
mysqlbug
E.9 mysqld
mysqld MySQL
mysqld
mysqld
E.9.1
E.9.2 mysqld
--socket -S -Sg
--user
424
ID ID
root --user
root ID MySQL 3.22
E.9.3 mysqld
--big-tables
table full
MySQL 3.23
--bind-address=ip_addr IP mysql
IP
--bootstrap MySQL
--chroot=path_name MySQL
chroot()-ed chroot() UNIX
MySQL 3.22.2
-h path_name, --datadir=path_name MySQL
- - d e f a u l t - t a b l e - t y p e =t y p e type isam myisam
heap MyISAM
MySQL 3.23
--enable-locking Linux
--skip-locking MySQL 3.22.4
-T [n], --exit-info[=n] MySQL 3.22
--init-file=file_name SQL
-L, --language=lang_name lang_name
english german
-l [path_name], --log[=path_name]
path_name host_name.log
host_name path_name
--log-isam[=file_name] ISAM/MyISAM
--log-long-format MySQL 3.22.7
--log-update[=path_name]
path_name host_name.nnn
host_name nnn 1
path_name nnn
path_name
E MySQL 425
--low-priority-updates MySQL 3.23
MySQL 3.22.5 MySQL 3.23 --low-priority-inserts
-n, --new MySQL
--one-thread Linux
MySQL 3.22.2
--pid-file=path_name mysql ID PID
PID
mysql.server
--safe-mode --skip-new MySQL
mysqlbug
-Sg, --skip-grant-tables
mysqladmin flush-privileges
--skip-host-cache
--skip-locking
isamchk myisamchk
--skip-name-resolve IP
localhost
--skip-networking TCP/IP localhost
--skip-new --new
--skip-show-database SHOW DATABASES
SHOW TABLES MySQL 3.23
--skip-thread-priority
- t p a t h _ n a m e, --tmpdir= p a t h _ n a m e
MySQL 3.22.4
Windows
--console MySQL 3.22.4
--flush
MySQL 3.22.9
--install mysqld-nt Windows NT
--remove mysqld-nt Windows NT
--standalone mysqld-nt Windows NT
E.9.4 mysqld
mysql
426
mysqld
DELAYED
max_join_size MySQL max_
join_size SELECT
n e t _ b u ffer_length
E MySQL 427
max_allowed_packet
record_buffer
sort_buffer GROUP BY ORDER BY
1MB
table_cache
tmp_table_size mysqld
thread_stack
wait_timeout
E.10 mysqldump
mysqldump
C R E ATE TABLE
INSERT --tab
SQL
E.10.1
db_name
mysqldump
% mysqldump --opt db_name > backup_file
E.10.2 mysqldump
E.10.3 mysqldump
mysqldump --tab
mysqldump
-T dump_dir, --tab= dump_dir mysqldump
dump_dir tbl_name dump_dir/table_
name.txt dump_dir/table_name.sql CREATE
TABLE FILE
mysqldump
*.sql dump_dir
*.txt dump_dir *.sql
*.txt
newline-terminated
MySQL 3.22.7
E.10.4
--tab -T
LOAD DATA
D LOAD DATA
--fields-enclosed-by=char
--field-escaped-by=char
- - f i e l d s - o p t i o n a l l y - e n c l o s e d - b y =c h a r
--fields-terminated-by=char
--lines-terminated-by=str
E MySQL 429
E.10.5 mysqldump
mysqldump --set-variables
max_allowed_packet
n e t _ b u ffer_length
max_allowed_packet
E.11 mysqlimport
mysqlimport
LOAD DATA SQL
E.11.1
db_name
E.11.2 mysqlimport
E.11.3 mysqlimport
mysqlimport
-d, --delete
-f, --force
-i, --ignore
--local MySQL3.22.15
-l, --lock-tables
-r, --replace
E.11.4
mysqlimport
430
LOAD DATA D LOAD DATA
--fields-enclosed-by=char
--fields-escaped-by=char
--fields-optionally-enclosed-by=char
--fields-terminated-by=char
--lines-terminated-by=str
E.12 mysqlshow
mysqlshow SHOW
SQL
E.12.1
mysqlshow
mysqlshow
*
* LINK % _ SQL
E.12.2 mysqlshow
E.12.3 musqlshow
E.13 safe_mysqld
safe_mysqld mysql
F C API
MySQL C API
MySQL
F.1
mysql.h
#include <mysql.h>
-I/path/to/include/dir
MySQL /usr/include/mysql /usr/local/mysql/include
MySQL mysql.h
mysql_com.h mysql_com.h mysql.h
mysql.h
errmsg.h mysqld_error.h
mysqlclient
-lmysqlclient -L/path/to/lib/die
F.2 C API
MySQL
F.2.1
MySQL
my_ulonglong m y s q l _ a ff e c t e d _ r o w s ( )
mysql_num_rows() mysql_insert_id()
my_ulonglong unsigned long
%lu
my_bool mysql_change_user() mysql_eof()
432
MYSQL_FIELD_OFFSET mysql_field_tell() mysql_field_seek()
MYSQL_FIELD
F.2.2
MYSQL MYSQL
MYSQL
MYSQL_ROW MYSQL_ROW
counted byte
NULL CNULL MYSQL_ROW
mysql_num_fields() i-th row[i] i
0 mysql_num_fields(res_set)-1(res_set MYSQL_RES )
MYSQL_ROW
MYSQL_ROW row; /* */
MYSQL_ROW *row; /* */
mysql_fetch_lengths()
NULL mysql_fetch_lengths()
MYSQL_FIELD MYSQL_FIELD
MYSQL_FIELD mysql_num_fields()
mysql_ num_field_() mysql_field_tell() mysql_field_
seek()
MYSQL_FIELD
F C API 433
MYSQL_FIELD
name name
name
my_col 4*(my_col+1) mc name
table table
(my_col) my_tbl
(my_col+0)
type
max_length
Bill Jack Belviders max_length 9
max_length mysql_store_result()
mysql_use_result() max_length 0
flags flags flags
F-2 UNSIGNED
flags
if (field -> flags & UNSIGNED_FLAG)
printf ( %s values are UNSIGNED \n , field -> name);
flag
AUTO_INCREMENT_FLAG AUTO_INCREMENT
BINARY_FLAG BINARY
MULTIPLE_KEY_FLAG NON-UNIQUE
NOT_NULL_FLAG NULL
PRI_KEY_FLAG PRIMARY KEY
UNIQUE_KEY_FLAG UNIQUE
UNSIGNED_FLAG UNSIGNED
ZEROFILL_FLAG ZEROFILL
flags field-
>type F-3
flags
BLOB_FLAG BLOB
ENUM_FLAG ENUM
SET_FLAG SET
TIMESTAMP_FLAG TIMESTAMP
F.2.3
IS_PRI_KEY()
NULL IS_NOT_NULL()
F.3 C API
conn MYSQL
res_set MYSQL_RES
field MYSQL_FIELD
row MYSQL_ROW
MySQL 3.21.10
F.3.1
my_bool
conn
436
db_name NULL
mysql_change_user()
conn
mysql_init() mysql_close()
mysql_close()
MYSQL *
conn MYSQL
mysql_init()
mysql_init() mysql_close()
mysql_init() MySQL 3.22.1
int
mysql_real_connect()
mysql_init() mysql_real_connect()
mysql_options
option arg
arg arg NULL
MYSQL_INIT_COMMAND arg
mysql_ping()
MYSQL_OPT_COMPRESS /
arg NULL
mysql_real_connect()
MYSQL_OPT_CONNECT_TIMEOUT arg
F C API 437
unsigned int
MYSQL_OPT_NAMED_PIPE arg NULL
Windows 95/98/NT Windows NT
MYSQL_READ_DEFAULT_FILE
[client]
MYSQL_READ_DEFAULT_GROUP MYSQL_
READ_DEFAULT_FILE [client]
mysql_options() mysql_real_connect()
mysql_options() option
[client] MYSQL_READ_DEFAULT_GROUP
mysql_options() 10
mysql_real_connect() c:\my.cnf.special [client] [mygroup]
SET SQL_BIG_TABLES
conn
mysql_init()
NULL
conn mysql_errno() mysql_error()
conn
F-4
UNIX Windows
TCP/IP TCP/IP
IP TCP/IP TCP/IP
localhost UNIX TCP/IP
db_name NULL
port_num TCP/IP 0
socket_name NULL
host_name
mysql_real_connect() UNIX UNIX Wi n d o w s
F C API 439
TCP/IP
flags 0 F-5
flag
CLIENT_FOUND_ROWS UPDATE
CLIENT_NO_SCHEMA db_name.tbl_name.col_name
CLIENT_COMPRESS
CLIENT_ODBC ODBC
CLIENT_NO_SCHEMA tbl_name.col_name
tbl_name col_name
flag | + CLIENT_COMPRESS|
CLIENT_ODBC CLIENT_COMPRESS+CLIENT_ODBC
mysql_real_connect() MySQL 3.21.10 db_name 3.22.0
MYSQL mysql_init() 3.22.1
F.3.2
unsigned int
NULL
mysql_error()
F.3.3
mysql_escape_string()
440
unsigned int
SQL F-6
F-6 mysql_escape_string()
NUL ASCII 0 \0
\\
\
\
\n
\r
Ctrl-Z \Z
from_str from_len
mysql_escape_string() to_str
to_str from_len*2 +1
from_str
mysql_escape_string()
strlen() strcat()
C
mysql_escape_string()
to_str mysql_escape_string()
int
mysql_query (MYSQL *conn, char *query_string);
mysql_query()
mysql_query()
mysql_real_query mysql_query()
SQL \g \g
mysql
mysql_query()
F C API 441
int
mysql_real_query()
query_string length
SQL \g \g
mysql
mysql_real_query()
int
dn_name
mysql_select_db()
mysql_select_db()
F.3.4
mysql_store_
result() mysql_use_result()
F-7
mysql_data_ seek()
mysql_row_seek() mysql_ row_tell() mysql_data_seek() mysql_
row_seek() mysql_row_tell()
mysql_fetch_row(), mysql_fetch_row()
U P D AT E m y s q l _ a ff e c t e d _
rows() MySQL
return-found-rows flags
CLIENT_FOUND_ROWS mysql_real_connect()
my_ulonglong
void
mysql_data_seek() mysql_store_
result() mysql_use_result()
MYSQL_FIELD*
mysql_fetch_field()
NULL
mysql_field_tell() mysql_field_seek()
mysql_fetch_field()
MYSQL_FIELD
F C API 443
MYSQL_FIELD *
mysql_fetch_field()
MYSQL_FIELD *
field_num 0
mysql_num_fields() - 1 field_num
MYSQL_FIELD
unsigned long
mysql_fetch_row() mysql_fetch_lengths()
NULL 0 NULL
NULL NULL
NULL NULL
i-th i-th
atoi() atof()
mysql_fetch_row() NULL mysql_use_result()
mysql_fetch_row() NULL
mysql_fetch_lengths()
NULL
MYSQL_FIELD
mysql_fetch_field() mysql_fields() mysql_fetch_field_direct()
unsigned int
mysql_store_result()
mysql_use_result() NULL mysql_field_count()
0
mysql_field_count()
F C API 445
MySQL mysql_field_count()
mysql_num_fields()
MYSQL_FIELD_OFFSET
offset mysql_fetch_field()
o ff s e t MYSQL_FIELD_OFFSET mysql_field_tell()
mysql_field_seek()
0 offset
MYSQL_FIELD_OFFSET
mysql_field_seek()
void
mysql_free_result()
mysql_store_result() mysql_use_result()
mysql_list_dbs() mysql_list_
fields() mysql_list_processes() mysql_list_tables()
char*
446
my_ulonglong
AUTO_INCREMENT
AUTO_INCREMENT
mysql_insert_id()
mysql_insert_id()
AUTO_INCREMENT 1
AUTO_INCREMENT
0
mysql_insert_id()
mysql_insert_id() SQL L A S T _ I N S E RT_ID() mysql_
insert_id() LAST_INSERT_ID()
mysql_insert_id() AUOT_INVREMENT
F.2.1 my_ulonglong
unsigned int
mysql_num_rows()
F C API 447
MySQL 3.22.24 mysql_num_fields() mysql_field_count()
mysql_store_result() mysql_use_result() NULL
mysql_num_fields()
mysql_num_fileds()
mysql_num_fields()
mysql_field_count()
MySQL
my_ulonglong
mysql_store_result()
mysql_num_rows()
mysql_use_result() mysql_num_rows()
my_ulonglong
MYSQL_ROW_OFFSET
mysql_row_
seek() mysql_data_seek()
mysql_row_tell() mysql_store_result
() mysql_use_result()
MYSQL_RES *
448
NULL mysql_store_result() NULL mysql_field_coun()
mysql_free_result()
F-7 mysql_store_result() mysql_use_result()
MYSQL_RES*
mysql_fetch_row()
NULL mysql_use_result() NULL mysql_field_count()
mysql_free_result()
F-7 mysql_store_result() mysql_use_result()
mysql_store_result() mysql_use_result()
F.3.5
char *
3.22.25
char *
/
char *
3.22.25-log
-log -debug -demo
char *
NULL
F C API 449
Uptime
Threads
questions
Slow queries long_query_time
Opens
Flush tables FLUSH REFRESH RELOAD
Open tables
mysql_stat() mysqladmin status
mysqladmin
unsigned long
mysql_thread_id (MRSQL*Conn);
mysql_kill()
mysql_thread_id()
mysql_ping()
F.3.6
int
thread_id
PROCESS
mysql_kill()
int
SQL FLUSH
oprions F 8
F-8 mysql_refresh()
REFRESH_GRANT
REFRESH_LOG
REFRESH_TABLES
REFRESH_HOSTS
REFRESH_STATUS
F-8 | + REFRESH_
LOG| REFRESH_TABLES REFRESH_LOG+REFRESH_TABLES
D FLUSH
mysql_refresh()
int
450
SHUTDOWN
mysql_shutdown()
F.3.7
MySQL
MySQL --with-debug
void
PROCESS
mysql_dump_debug_info()
F.3.8
MySQL
mysql_query()
mysql_create_db( db_name )
mysql_query (conn, CREATE DATABASE db_name )
mysql_connect() mysql_eof()
MySQL SQL
SQL FLUSH PRIVILEGES mysql_reload()
MySQL
MySQL
MySQL 4.0
MYSQL *
mysql_real_connect() mysql_real_connect()
MySQL 3.22.0
int
db_name mysql_query()
F C API 451
CREATE DATABASE
mysql_create_db()
MySQL 3.21.15
int
MySQL 3.21.7
MYSQL_RES *
NULL wild
SQL % _ wild NULL
mysql_free()
mysql_list_dbs() mysql_query() SHOW DATABASE
MySQL 3.22.0
MYSQL_RES *
NULL wild
SQL % _ wild NULL
mysql_free()
mysql_list_field() mysql_query() SHOW COLUMNS
MySQL 3.22.0
MYSQL_RES *
NULL
PROCESS
mysql_free()
452
mysql_list_processes() mysql_query() SHOW PROCESSLIST
MySQL 3.22.0
MYSQL_RES *
NULL wild
SQL % _ wild NULL
mysql_free()
mysql_list_table() mysql_query() SHOW TABLES
MySQL 3.22.0
int
mysql_query() FLUSH
PRIVILEGES RELOAD mysql_reload().
mysql_reload()
MySQL 3.21.9
G Perl DBI API
Perl DBI API Perl
DBD::mysql MySQL
DBI MySQL
DBI MySQL
MySQL
DBD
DBI MySQL DBD
G.1
DBI Perl
use DBI;
DBD use DBI
G.2 DBI
F C H PHP
Perl
$ @
\
_ref
G-1
attr
454
%attr
$drh
$dbh
$sth
$fh
$h
$rc
$rv
$rows
@ary
[] DBI->
DBI DBI:: DBI $DBI:: DBI
$dbh-> $sth->
$h->
selectrow_array( ) $dbh->
$statement attr
\ @bind_values
RaiseError
RaiseError
SELECT SELECT
DESCRIBE EXPLAIN SHOW
G.2.1 DBI
attr MySQL
PrintError RaiseError DBI
RaiseError
PrintError RaiseError
@ary = DBI->available_drivers ([$quiet]);
DBI
$quiet 1
G Perl DBI API 455
$dbh = DBI->connect ($data_source, $user_name, $password, [, \ attr]);
connect()
undef conncet() disconnect()
connect() @attr DBI
DBI:mysql
DBI mysql
DBD::mysql
attribute=value
MySQL
host=host_name host_name:port_num
port=port_num
mysql_compression=1 MySQL
mysql_compression MySQL 3.22.3 DBD::mysql
1.19.20
m y s q l _ r e a d _ d e f a u l t _ f i l e =f i l e _ n a m e DBI
MySQL
.my.cnf
$ E N V { H O M E } / . m y. c n f
DBI_DSN
456
DBI_DRIVER
connect() user_name password DBI_USER
DBI_PASS
D B I _ PASS
ps
DBI
localhost UNIX
Windows ODBC
$drh = DBI->install_driver ($driver_name);
DBD MySQL
mysql ( ) connect()
DBI func()
install_driver() MySQL
G.2.2
connect()
attr MySQL
PrintError RaiseError DBI
RaiseError
PrintError RaiseError
$rc = $dbh->disconnect( );
$statement prepare()
selectrow_array()
selectrow_array()
undef
@bind_values do()
G.2.3
prepare()
$rc = $sth->bind_col ($col_num, \$var_to_bind);
SELECT Perl $col_num 1
$n $value 1
NULL undef
\%attr $bind_type
bind_param()
VARCHAR MySQL
$sth
$tbl_ary_ref
$tbl_ary_ref
@ary_ref = $sth->fetchrow_array()
fetchrow_array()
fetchrow_array()
fetchrow_array()
fetchrow_array() undef
$sth->err()
@ary_ref = $sth->fetchrow_arrayref()
undef
$sth->err()
G Perl DBI API 459
$hash_ref = $sth->fetchrow_hashref ([$name]);
undef
$name NAME
$rc = $sth->finish();
G.2.4
$h->err()
0
$h->errstr()
DBI 0 9
DBI DBI
DBI->trace (2);
$sth->trace (2);
DBI_TRACE DBI
STDERR. $filename
STDERR
DBI->trace_msg ($str [, $min_level])
$h->trace_msg ($str [, $min_level])
DBI
DBI trace_msg() DBI->trace_msg()
460
$min_level
G.2.5 MySQL
DBI func()
func()
func()
func()
shutdown SHUTDOWN
reload DELETE INSERT UPDATE
GRANT REVOKE
reload RELOAD
G.3 DBI
DBI::func_name() DBI->func_name()
@bool = DBI::looks_like_number (@array);
undef
$str = DBI::neat ($value [, $maxlen]);
$value
undef .
$maxlen neat( )
$field_sep
G.4 DBI
DBI
PrintError RaiseError
err errstr
G.4.1
attr
connect( ) DBI
$h->{ ChopBlanks }; CHAR
ChopBlanks MySQL
CHAR
$h->{ PrintError }; DBI
PrintError
$h->{ RaiseError }; DBI
RaiseError
G.4.2
$h
$DBI::err $h->err( )
$$DBI::errstr $h->errstr( )
$DBI::rows $h->rows( )
G.4.3 MySQL
SELECT prepare()
execute() finish()
$sth->{ NAME };
SELECT
$sth->{ NAME_lc };
$sth->{ NAME_uc };
G.4.5 MySQL
execute()
mysql_store_result mysql_use_result DBD::mysql
mysql_store_result mysql_use_result C API
mysql_store_result() mysql_use_result()
F
DBI mysql_store_result() mysql_use_result
G Perl DBI API 463
DBI mysql_use_result( ) prepare( ) execute( )
DBD::mysql MySQL
G-2 DBD::mysql
insertid mysql_insertid
G-2 MySQL
insertid mysql_insertid
is_blob mysql_is_blob
is_key mysql_ is_key
is_not_null mysql_ is_not_null
is_num mysql_ is_num
is_pri_ key mysql_ is_pri_ key
length PRECISION
max_length mysql_ max_length
table mysql_ table
$sth->{ m y s q l _ s t o re _ re s u l t }; mysql_store_result 1
mysql_store_result C API mysql_store_result MySQL
F
mysql_store_result prepare( ) execute( )
$sth->{ mysql_table };
$sth->{ m y s q l _ u s e _ re s u l t }; mysql_use_result 1
464
mysql_use_result C API mysql_use_result MySQL
F
mysql_max_length
rows( )
mysql_use_result prepare( ) execute( )
G.5 DBI
G-3 DBI
PHP API
8 MySQL
PHP 800 600
PHP PHP PHP Web
H.1 PHP
<? ?>
PHP
< >
ASP PHP
H.2
MySQL PHP []
466
link_id MySQL
Web
@
mysql_pconnect()
error_reporting()
MySQL Connected
successfully
PHP
SELECT SELECT
DESCRIBE EXPLAIN SHOW
H.2.1
MySQL
int
int
H PHP API 467
host_name user_name MySQL
localhost
PHP Web PHP Apache
PHP PHP
mysql_connect()
mysql_connect()
mysql_close()
int
mysql_pconnect() mysql_connect()
mysql_pconnect(),
PHP Web
PHP PHP
mysql_close() mysql_close() ,
H.2.2
mysql_errno() mysql_error()
468
MySQL PHP
track_errors
int
MySQL
string
MySQL
H.2.3
MySQL
int
mysql_db_query( )
mysql_query( ) mysql_query( )
H PHP API 469
int
mysql_tablename( )
int
db_name tbl_name
mysql_field_flags( ) mysql_field_len( ) mysql_field_name( ) mysql_
field_type()
int
470
mysql_tablename( )
int
MySQL DELETE I N S E RT
REPLACE UDATE mysql_query( )
mysql_affected_rows( )
SELECT mysql_query( )
result_id
mysql_free_result( )
mysql_query( ) mysql_connect( )
mysql_query( )
H.2.4
H PHP API 471
int
int
SELECT
mysql_fetch_array( ) mysql_fetch_object( ) mysql_fetch_row( )
mysql_data_seek( ) 0
mysql_num_rows( ) - 1 mysql_data_seek( )
array
472
$row
$row[0] last_name
$row[1] first_name
$row[ last_name ] last_name
$row[ first_name ] first_name
object
col_num mysql_fetch_field( )
col_num 0 mysql_num_fields( ) - 1
mysql_num_fields( ) col_num
H-1
H PHP API 473
H-1 mysql_fetch_field( )
blob BLOB 1 0
max_length
multiple_key 1 0
name
not_null NULL 1 0
numeric 1 0
primary_key PRIMARY KEY 1 0
table
type
unique_key UNIQUE 1 0
unsigned UNSIGNED 1 0
zerofill ZEROFILL 1 0
array
mysql_fetch_array() mysql_fetch_object()
mysql_fetch_row( )
474
object
array
0 mysql_num_fields( ) - 1
H PHP API 475
string
int
mysql_fetch_field ( ) mysql_fetch_field( )
col_num
col_num 0 mysql_num_fields( ) - 1
476
string
col_num 0 mysql_num_fields( ) - 1
string
B
col_num 0 mysql_num_fields( ) - 1
H PHP API 477
string
H-2
col_num 0 mysql_num_fields( ) - 1
H-2 mysql_field_flags( )
auto_increment AUTO_INCREMENT
binary BINARY
blob BLOB
enum ENUM
multiple_key
not_null NULL
primary_key PRIMARY_KEY
timestamp TIMESTAMP
unique_key UNIQUE
unsigned UNSIGNED
zerofill ZEROFILL
int
478
col_num 0 mysql_num_fields( )-1
0
int
mysql_query( ) mysql_free_result( )
int
A U TO_INCREMENT
mysql_
insert_id () mysql_
insert_id () 0
mysql_insert_id () SQL L A S T _ I N S E RT_ID()
mysql_insert_id () L A S T _ I N S E RT_ID()
H PHP API 479
mysql_insert_id () A U TO_INCREMENT
int
int
int
field
string
mysql_list_dbs( ) mysql_list_tables( )
row_num
0 mysql_num_rows( )-1
H.2.5
int
link_id MySQL
CREATE
mysql_query( ) mysql_create_db( ) CREATE DATABASE
int
H PHP API 481
link_id MySQL
DROP
int
mysql_select_db( )
mysql_connect( )
mysql_select_db( )