|
|
FREE DOWNLOAD THIS TUTORIAL
Tutorial in pdf format so you can save it to your PC, e-book reader or print.
Sponsored link
Note: The tutorial you are about to download is compressed format. Rar, if you do not have a decompressor rar files you can download 7-zip and you can display the Foxit PDF Reader.
|
|
Table of Contents 1 General Information About This Manual Conventions Used in This Manual What Is MySQL? History of MySQL The Main Features of MySQL How Stable Is MySQL? How Big Can MySQL Tables Be? Year 2000 Compliance What Is MySQL AB? The Business Model and Services of MySQL AB Support Training and Certication Consulting Commercial Licenses Partnering Advertising Contact Information MySQL Support and Licensing Support Ofiered by MySQL AB Copyrights and Licenses Used by MySQL MySQL Licenses Using the MySQL Software Under a Commercial License Using the MySQL Software for Free Under GPL MySQL AB Logos and Trademarks The Original MySQL Logo MySQL Logos that may be Used Without Written Permission When do you need a Written Permission to use MySQL Logos? MySQL AB Partnership Logos Using the word MySQL in Printed Text or Presentations Using the word MySQL in Company and Product Names MySQL 4.0 In A Nutshell Stepwise Rollout Ready for Immediate Development Use Embedded MySQL Other Features Available From MySQL 4.0.0 Future MySQL 4.0 Features MySQL 4, The Following Development Release MySQL Information Sources MySQL Portals MySQL Mailing Lists The MySQL Mailing Lists Asking Questions or Reporting Bugs How to Report Bugs or Problems Guidelines for Answering Questions on the Mailing List How Standards-compatible Is MySQL? What Standards Does MySQL Follow? Running MySQL in ANSI Mode MySQL Extensions to ANSI SQL92 MySQL Difierences Compared to ANSI SQL92 SubSELECTs SELECT INTO TABLE Transactions and Atomic Operations Stored Procedures and Triggers Foreign Keys Views `--' as the Start of a Comment Known Errors and Design Deciencies in MySQL MySQL and The Future (The TODO) Things That Should be in 4.0 Things That Should be in 4 Things That Must be Done in the Near Future Things That Have to be Done Sometime Things We Don't Plan To Do How MySQL Compares to Other Databases How MySQL Compares to mSQL How to Convert mSQL Tools for MySQL How mSQL and MySQL Client/Server Communications Protocols Difier How mSQL 2.0 SQL Syntax Difiers from MySQL How MySQL Compares to PostgreSQL MySQL and PostgreSQL development strategies Featurewise Comparison of MySQL and PostgreSQL Benchmarking MySQL and PostgreSQL 2 MySQL Installation Quick Standard Installation of MySQL Installing MySQL on Linux Installing MySQL on Windows Installing the Binaries Preparing the Windows MySQL Environment Starting the Server for the First Time General Installation Issues How to Get MySQL Operating Systems Supported by MySQL Which MySQL Version to Use Installation Layouts How and When Updates Are Released MySQL Binaries Compiled by MySQL AB Installing a MySQL Binary Distribution Installing a MySQL Source Distribution Quick Installation Overview Applying Patches Typical configure Options Installing from the Development Source Tree Problems Compiling? MIT-pthreads Notes Windows Source Distribution Post-installation Setup and Testing Problems Running mysql_install_db Problems Starting the MySQL Server Starting and Stopping MySQL Automatically Upgrading/Downgrading MySQL Upgrading From Version 3.23 to Version 4.0 Upgrading From Version 3.22 to Version 3.23 Upgrading from Version 3.21 to Version 3.22 Upgrading from Version 3.20 to Version 3.21 Upgrading to Another Architecture Operating System Specic Notes Linux Notes (All Linux Versions) Linux Notes for Binary Distributions Linux x86 Notes Linux SPARC Notes Linux Alpha Notes Linux PowerPC Notes Linux MIPS Notes Linux IA64 Notes Windows Notes Starting MySQL on Windows 95, 98 or Me Starting MySQL on Windows NT, 2000 or XP Running MySQL on Windows Connecting to a Remote MySQL from Windows with SSH Splitting Data Across Difierent Disks on Windows Compiling MySQL Clients on Windows MySQL-Windows Compared to Unix MySQL Solaris Notes Solaris 2 Solaris x86 Notes BSD Notes FreeBSD Notes NetBSD notes OpenBSD 2 OpenBSD 2 BSD/OS Version 2.x Notes BSD/OS Version 3.x Notes BSD/OS Version 4.x Notes Mac OS X Notes Mac OS X Public Beta Mac OS X Server Other Unix Notes HP-UX Notes for Binary Distributions HP-UX Version 10 HP-UX Version 11.x Notes IBM-AIX notes SunOS 4 Notes Alpha-DEC-UNIX Notes (Tru64) Alpha-DEC-OSF/1 Notes SGI Irix Notes Caldera (SCO) Notes Caldera (SCO) Unixware Version 7.0 Notes OS/2 Notes BeOS Notes Novell NetWare Notes Perl Installation Comments Installing Perl on Unix Installing ActiveState Perl on Windows Installing the MySQL Perl Distribution on Windows Problems Using the Perl DBI/DBD Interface 3 Tutorial Introduction Connecting to and Disconnecting from the Server Entering Queries Creating and Using a Database Creating and Selecting a Database Creating a Table Loading Data into a Table Retrieving Information from a Table Selecting All Data Selecting Particular Rows Selecting Particular Columns Sorting Rows Date Calculations Working with NULL Values Pattern Matching Counting Rows Using More Than one Table Getting Information About Databases and Tables Examples of Common Queries The Maximum Value for a Column The Row Holding the Maximum of a Certain Column Maximum of Column per Group The Rows Holding the Group-wise Maximum of a Certain Field Using user variables Using Foreign Keys Searching on Two Keys Calculating Visits Per Day Using AUTO_INCREMENT Using mysql in Batch Mode Queries from Twin Project Find all Non-distributed Twins Show a Table on Twin Pair Status Using MySQL with Apache 4 Database Administration Conguring MySQL mysqld Command-line Options `my.cnf' Option Files Installing Many Servers on the Same Machine Running Multiple MySQL Servers on the Same Machine General Security Issues and the MySQL Access Privilege System General Security Guidelines How to Make MySQL Secure Against Crackers Startup Options for mysqld Concerning Security Security issues with LOAD DATA LOCAL What the Privilege System Does How the Privilege System Works Privileges Provided by MySQL Connecting to the MySQL Server Access Control, Stage 1: Connection Verication Access Control, Stage 2: Request Verication Causes of Access denied Errors MySQL User Account Management GRANT and REVOKE Syntax MySQL User Names and Passwords When Privilege Changes Take Efiect Setting Up the Initial MySQL Privileges Adding New Users to MySQL Limiting user resources Setting Up Passwords Keeping Your Password Secure Using Secure Connections Basics Requirements GRANT Options Disaster Prevention and Recovery Database Backups BACKUP TABLE Syntax RESTORE TABLE Syntax CHECK TABLE Syntax REPAIR TABLE Syntax Using myisamchk for Table Maintenance and Crash Recovery myisamchk Invocation Syntax General Options for myisamchk Check Options for myisamchk Repair Options for myisamchk Other Options for myisamchk myisamchk Memory Usage Using myisamchk for Crash Recovery How to Check Tables for Errors How to Repair Tables Table Optimisation Setting Up a Table Maintenance Regimen Getting Information About a Table Database Administration Language Reference OPTIMIZE TABLE Syntax ANALYZE TABLE Syntax FLUSH Syntax RESET Syntax KILL Syntax SHOW Syntax Retrieving information about Database, Tables, Columns, and Indexes SHOW TABLE STATUS SHOW STATUS SHOW VARIABLES SHOW LOGS SHOW PROCESSLIST SHOW GRANTS SHOW CREATE TABLE MySQL Localisation and International Usage The Character Set Used for Data and Sorting German character set Non-English Error Messages Adding a New Character Set The Character Denition Arrays String Collating Support Multi-byte Character Support Problems With Character Sets MySQL Server-Side Scripts and Utilities Overview of the Server-Side Scripts and Utilities safe_mysqld, The Wrapper Around mysqld mysqld_multi, Program for Managing Multiple MySQL Servers myisampack, The MySQL Compressed Read-only Table Generator mysqld-max, An Extended mysqld Server MySQL Client-Side Scripts and Utilities Overview of the Client-Side Scripts and Utilities mysql, The Command-line Tool mysqladmin, Administrating a MySQL Server Using mysqlcheck for Table Maintenance and Crash Recovery mysqldump, Dumping Table Structure and Data mysqlhotcopy, Copying MySQL Databases and Tables mysqlimport, Importing Data from Text Files Showing Databases, Tables, and Columns perror, Explaining Error Codes How to Run SQL Commands from a Text File The MySQL Log Files The Error Log The General Query Log The Update Log The Binary Update Log The Slow Query Log Log File Maintenance Replication in MySQL Introduction Replication Implementation Overview How To Set Up Replication Replication Features and Known Problems Replication Options in `my.cnf' SQL Commands Related to Replication Replication FAQ Troubleshooting Replication 5 MySQL Optimisation Optimisation Overview MySQL Design Limitations/Tradeofis Portability What Have We Used MySQL For? The MySQL Benchmark Suite Using Your Own Benchmarks Optimising SELECTs and Other Queries EXPLAIN Syntax (Get Information About a SELECT) Estimating Query Performance Speed of SELECT Queries How MySQL Optimises WHERE Clauses How MySQL Optimises DISTINCT How MySQL Optimises LEFT JOIN and RIGHT JOIN How MySQL Optimises ORDER BY How MySQL Optimises LIMIT Speed of INSERT Queries Speed of UPDATE Queries Speed of DELETE Queries Other Optimisation Tips Locking Issues How MySQL Locks Tables Table Locking Issues Optimising Database Structure Design Choices Get Your Data as Small as Possible How MySQL Uses Indexes Column Indexes Multiple-Column Indexes Why So Many Open tables? How MySQL Opens and Closes Tables Drawbacks to Creating Large Numbers of Tables in the Same Database Optimising the MySQL Server System/Compile Time and Startup Parameter Tuning Tuning Server Parameters How Compiling and Linking Afiects the Speed of MySQL How MySQL Uses Memory How MySQL uses DNS SET Syntax Disk Issues Using Symbolic Links Using Symbolic Links for Databases Using Symbolic Links for Tables 6 MySQL Language Reference Language Structure Literals: How to Write Strings and Numbers Strings Numbers Hexadecimal Values NULL Values Database, Table, Index, Column, and Alias Names Case Sensitivity in Names User Variables System Variables Comment Syntax Is MySQL Picky About Reserved Words? Column Types Numeric Types Date and Time Types Y2K Issues and Date Types The DATETIME, DATE, and TIMESTAMP Types The TIME Type The YEAR Type String Types The CHAR and VARCHAR Types The BLOB and TEXT Types The ENUM Type The SET Type Choosing the Right Type for a Column Using Column Types from Other Database Engines Column Type Storage Requirements Functions for Use in SELECT and WHERE Clauses Non-Type-Specic Operators and Functions Parentheses Comparison Operators Logical Operators Control Flow Functions String Functions String Comparison Functions Case-Sensitivity Numeric Functions Arithmetic Operations Mathematical Functions Date and Time Functions Cast Functions Other Functions Bit Functions Miscellaneous Functions Functions for Use with GROUP BY Clauses Data Manipulation: SELECT, INSERT, UPDATE, DELETE SELECT Syntax JOIN Syntax UNION Syntax HANDLER Syntax INSERT Syntax INSERT ... SELECT Syntax INSERT DELAYED Syntax UPDATE Syntax DELETE Syntax TRUNCATE Syntax REPLACE Syntax LOAD DATA INFILE Syntax DO Syntax Data Denition: CREATE, DROP, ALTER CREATE DATABASE Syntax DROP DATABASE Syntax CREATE TABLE Syntax Silent Column Specication Changes ALTER TABLE Syntax RENAME TABLE Syntax DROP TABLE Syntax CREATE INDEX Syntax DROP INDEX Syntax Basic MySQL User Utility Commands USE Syntax DESCRIBE Syntax (Get Information About Columns) MySQL Transactional and Locking Commands BEGIN/COMMIT/ROLLBACK Syntax LOCK TABLES/UNLOCK TABLES Syntax SET TRANSACTION Syntax MySQL Full-text Search Full-text Restrictions Fine-tuning MySQL Full-text Search Full-text Search TODO MySQL Query Cache How The Query Cache Operates Query Cache Conguration Query Cache Options in SELECT Query Cache Status and Maintenance 7 MySQL Table Types MyISAM Tables Space Needed for Keys MyISAM Table Formats Static (Fixed-length) Table Characteristics Dynamic Table Characteristics Compressed Table Characteristics MyISAM Table Problems Corrupted MyISAM Tables Clients is using or hasn't closed the table properly MERGE Tables MERGE Table Problems ISAM Tables HEAP Tables InnoDB Tables InnoDB Tables Overview InnoDB Startup Options Creating InnoDB Tablespace If Something Goes Wrong in Database Creation Creating InnoDB Tables Converting MyISAM Tables to InnoDB Foreign Key Constraints Adding and Removing InnoDB Data and Log Files Backing up and Recovering an InnoDB Database Checkpoints Moving an InnoDB Database to Another Machine InnoDB Transaction Model Consistent Read Locking Reads Next-key Locking: Avoiding the Phantom Problem Locks Set by Difierent SQL Statements in InnoDB Deadlock Detection and Rollback An Example of How the Consistent Read Works in InnoDB How to cope with deadlocks? Performance Tuning Tips The InnoDB Monitor Implementation of Multi-versioning Table and Index Structures Physical Structure of an Index Insert Bufiering Adaptive Hash Indexes Physical Record Structure How an Auto-increment Column Works in InnoDB File Space Management and Disk I/O Disk I/O File Space Management Defragmenting a Table Error Handling Restrictions on InnoDB Tables InnoDB Contact Information BDB or BerkeleyDB Tables Overview of BDB Tables Installing BDB BDB startup options Characteristics of BDB tables: Things we need to x for BDB in the near future: Operating systems supported by BDB Restrictions on BDB Tables Errors That May Occur When Using BDB Tables 8 MySQL APIs MySQL PHP API Common Problems with MySQL and PHP MySQL Perl API DBI with DBD::mysql The DBI Interface More DBI/DBD Information MySQL ODBC Support How To Install MyODBC How to Fill in the Various Fields in the ODBC Administrator Program Connect parameters for MyODBC How to Report Problems with MyODBC Programs Known to Work with MyODBC How to Get the Value of an AUTO_INCREMENT Column in ODBC Reporting Problems with MyODBC MySQL C API C API Datatypes C API Function Overview C API Function Descriptions mysql_affected_rows() mysql_change_user() mysql_character_set_name() mysql_close() mysql_connect() mysql_create_db() mysql_data_seek() mysql_debug() mysql_drop_db() mysql_dump_debug_info() mysql_eof() mysql_errno() mysql_error() mysql_escape_string() mysql_fetch_field() mysql_fetch_fields() mysql_fetch_field_direct() mysql_fetch_lengths() mysql_fetch_row() mysql_field_count() mysql_field_seek() mysql_field_tell() mysql_free_result() mysql_get_client_info() mysql_get_host_info() mysql_get_proto_info() mysql_get_server_info() mysql_info() mysql_init() mysql_insert_id() mysql_kill() mysql_list_dbs() mysql_list_fields() mysql_list_processes() mysql_list_tables() mysql_num_fields() mysql_num_rows() mysql_options() mysql_ping() mysql_query() mysql_real_connect() mysql_real_escape_string() mysql_real_query() mysql_reload() mysql_row_seek() mysql_row_tell() mysql_select_db() mysql_shutdown() mysql_stat() mysql_store_result() mysql_thread_id() mysql_use_result() C Threaded Function Descriptions my_init() mysql_thread_init() mysql_thread_end() mysql_thread_safe() C Embedded Server Function Descriptions mysql_server_init() mysql_server_end() Common questions and problems when using the C API Why Is It that After mysql_query() Returns Success, mysql_store_result() Sometimes Returns NULL? What Results Can I Get From a Query? How Can I Get the Unique ID for the Last Inserted Row? Problems Linking with the C API Building Client Programs How to Make a Threaded Client libmysqld, the Embedded MySQL Server Library Overview of the Embedded MySQL Server Library Compiling Programs with libmysqld Restrictions when using the Embedded MySQL Server Using Option Files with the Embedded Server Things left to do in Embedded Server (TODO) A Simple Embedded Server Example Licensing the Embedded Server MySQL C++ APIs Borland C++ MySQL Java Connectivity (JDBC) MySQL Python APIs MySQL Tcl APIs MySQL Eifiel wrapper 9 Extending MySQL MySQL Internals MySQL Threads MySQL Test Suite Running the MySQL Test Suite Extending the MySQL Test Suite Reporting Bugs in the MySQL Test Suite Adding New Functions to MySQL CREATE FUNCTION/DROP FUNCTION Syntax Adding a New User-denable Function UDF Calling Sequences for simple functions UDF Calling Sequences for aggregate functions Argument Processing Return Values and Error Handling Compiling and Installing User-denable Functions Adding a New Native Function Adding New Procedures to MySQL Procedure Analyse Writing a Procedure Appendix A Problems and Common Errors How to Determine What Is Causing Problems Common Errors When Using MySQL Access denied Error MySQL server has gone away Error Can't connect to [local] MySQL server Error Host '...' is blocked Error Too many connections Error Some non-transactional changed tables couldn't be rolled back Error Out of memory Error Packet too large Error Communication Errors / Aborted Connection The table is full Error Can't create/write to file Error Commands out of sync Error in Client Ignoring user Error Table 'xxx' doesn't exist Error Can't initialize character set xxx error File Not Found Installation Related Issues Problems When Linking with the MySQL Client Library How to Run MySQL As a Normal User Problems with File Permissions Administration Related Issues What To Do If MySQL Keeps Crashing How to Reset a Forgotten Root Password How MySQL Handles a Full Disk Where MySQL Stores Temporary Files How to Protect or Change the MySQL Socket File `/tmp/mysql.sock' Time Zone Problems Query Related Issues Case-Sensitivity in Searches Problems Using DATE Columns Problems with NULL Values Problems with alias Deleting Rows from Related Tables Solving Problems with No Matching Rows Problems with Floating-Point Comparison Table Denition Related Issues Problems with ALTER TABLE How To Change the Order of Columns in a Table TEMPORARY TABLE problems Appendix B Contributed Programs APIs Clients Web Tools Performance Benchmarking Tools Authentication Tools Converters Using MySQL with Other Products Utilities RPMs for Common Tools (Most Are for RedHat 6 Useful Functions Windows Programs Uncategorised Appendix C Credits Developers at MySQL AB Contributors to MySQL Supporters to MySQL Appendix D MySQL Change History Changes in release 4.0.x (Development; Alpha) Changes in release 4.0.3 Changes in release 4.0.2 (01 July 2002) Changes in release 4.0.1 (23 Dec 2001) Changes in release 4.0.0 (Oct 2001: Alpha) Changes in release 3.23.x (Stable) Changes in release 3.23.52 Changes in release 3.23.51 (31 May 2002) Changes in release 3.23.50 (21 Apr 2002) Changes in release 3.23.49 Changes in release 3.23.48 (07 Feb 2002) Changes in release 3.23.47 (27 Dec 2001) Changes in release 3.23.46 (29 Nov 2001) Changes in release 3.23.45 (22 Nov 2001) Changes in release 3.23.44 (31 Oct 2001) Changes in release 3.23.43 Changes in release 3.23.42 (08 Sep 2001) Changes in release 3.23.41 (11 Aug 2001) Changes in release 3.23.40 Changes in release 3.23.39 (12 Jun 2001) Changes in release 3.23.38 (09 May 2001) Changes in release 3.23.37 (17 Apr 2001) Changes in release 3.23.36 (27 Mar 2001) Changes in release 3.23.35 (15 Mar 2001) Changes in release 3.23.34a Changes in release 3.23.34 (10 Mar 2001) Changes in release 3.23.33 (09 Feb 2001) Changes in release 3.23.32 (22 Jan 2001: Stable) Changes in release 3.23.31 (17 Jan 2001) Changes in release 3.23.30 (04 Jan 2001) Changes in release 3.23.29 (16 Dec 2000) Changes in release 3.23.28 (22 Nov 2000: Gamma) Changes in release 3.23.27 (24 Oct 2000) Changes in release 3.23.26 Changes in release 3.23.25 Changes in release 3.23.24 (08 Sep 2000) Changes in release 3.23.23 Changes in release 3.23.22 (31 Jul 2000) Changes in release 3.23.21 Changes in release 3.23.20 Changes in release 3.23.19 Changes in release 3.23.18 Changes in release 3.23.17 Changes in release 3.23.16 Changes in release 3.23.15 (May 2000: Beta) Changes in release 3.23.14 Changes in release 3.23.13 Changes in release 3.23.12 Changes in release 3.23.11 Changes in release 3.23.10 Changes in release 3.23.9 Changes in release 3.23.8 Changes in release 3.23.7 Changes in release 3.23.6 Changes in release 3.23.5 Changes in release 3.23.4 Changes in release 3.23.3 Changes in release 3.23.2 Changes in release 3.23.1 Changes in release 3.23.0 (Sep 1999: Alpha Changes in release 3.22.x (Older; still supported) Changes in release 3.22.35 Changes in release 3.22.34 Changes in release 3.22.33 Changes in release 3.22.32 Changes in release 3.22.31 Changes in release 3.22.30 Changes in release 3.22.29 Changes in release 3.22.28 Changes in release 3.22.27 Changes in release 3.22.26 Changes in release 3.22.25 Changes in release 3.22.24 Changes in release 3.22.23 Changes in release 3.22.22 Changes in release 3.22.21 Changes in release 3.22.20 Changes in release 3.22.19 (Mar 1999: Stable) Changes in release 3.22.18 Changes in release 3.22.17 Changes in release 3.22.16 (Feb 1999: Gamma) Changes in release 3.22.15 Changes in release 3.22.14 Changes in release 3.22.13 Changes in release 3.22.12 Changes in release 3.22.11 Changes in release 3.22.10 Changes in release 3.22.9 Changes in release 3.22.8 Changes in release 3.22.7 (Sep 1998: Beta) Changes in release 3.22.6 Changes in release 3.22.5 Changes in release 3.22.4 Changes in release 3.22.3 Changes in release 3.22.2 Changes in release 3.22.1 (Jun 1998: Alpha) Changes in release 3.22.0 Changes in release 3.21.x Changes in release 3.21.33 Changes in release 3.21.32 Changes in release 3.21.31 Changes in release 3.21.30 Changes in release 3.21.29 Changes in release 3.21.28 Changes in release 3.21.27 Changes in release 3.21.26 Changes in release 3.21.25 Changes in release 3.21.24 Changes in release 3.21.23 Changes in release 3.21.22 Changes in release 3.21.21a Changes in release 3.21.21 Changes in release 3.21.20 Changes in release 3.21.19 Changes in release 3.21.18 Changes in release 3.21.17 Changes in release 3.21.16 Changes in release 3.21.15 Changes in release 3.21.14b Changes in release 3.21.14a Changes in release 3.21.13 Changes in release 3.21.12 Changes in release 3.21.11 Changes in release 3.21.10 Changes in release 3.21.9 Changes in release 3.21.8 Changes in release 3.21.7 Changes in release 3.21.6 Changes in release 3.21.5 Changes in release 3.21.4 Changes in release 3.21.3 Changes in release 3.21.2 Changes in release 3.21.0 Changes in release 3.20.x Changes in release 3.20.18 Changes in release 3.20.17 Changes in release 3.20.16 Changes in release 3.20.15 Changes in release 3.20.14 Changes in release 3.20.13 Changes in release 3.20.11 Changes in release 3.20.10 Changes in release 3.20.9 Changes in release 3.20.8 Changes in release 3.20.7 Changes in release 3.20.6 Changes in release 3.20.3 Changes in release 3.20.0 Changes in release 3.19.x Changes in release 3.19.5 Changes in release 3.19.4 Changes in release 3.19.3 Appendix E Porting to Other Systems Debugging a MySQL server Compiling MYSQL for Debugging Creating Trace Files Debugging mysqld under gdb Using a Stack Trace Using Log Files to Find Cause of Errors in mysqld Making a Test Case When You Experience Table Corruption Debugging a MySQL client The DBUG Package Locking methods Comments about RTS threads Difierences between difierent thread packages Appendix F Environment Variables Appendix G MySQL Regular Expressions Appendix H GNU General Public License Preamble TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION How to Apply These Terms to Your New Programs Appendix I GNU Lesser General Public License Preamble TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION How to Apply These Terms to Your New Libraries SQL command, type and function index Concept Index

Download the file decompressor 7-zip.
Download the PDF reader Foxit PDF Reader.
|
|
| |
|