SlideShare a Scribd company logo
1 of 11
Download to read offline
What is MySQL? 
MySQL, the most popular Open Source SQL database management system, is developed, distributed,andsupported by Oracle Corporation. 
• MySQL is a database management system. 
A database is a structured collection of data. It may be anything from a simple shopping list to a picture gallery or the vast amounts of information in a corporate network. To add, access, and process data stored in a computer database, you need a database management system suchasMySQL Server. Since computers are very good at handling large amounts of data, database management systems play a central role in computing, as standalone utilities, or as parts of other applications. 
• MySQL databases are relational. 
A relational database stores data in separate tables rather than putting all the data in one big storeroom. The database structures are organized into physical files optimized for speed. The logical model, with objects such as databases, tables, views, rows, and columns, offers a flexible programming environment. You set up rules governing the relationships between different data fields, such as one-to-one, one-to-many, unique, required or optional, and “pointers” between different tables. The database enforces these rules, so that with a well-designed database, your application never sees inconsistent, duplicate, orphan, out-of-date, or missing data. The SQL part of “MySQL” stands for “Structured Query Language”. SQL is the most common standardized language used to access databases. Depending on your programming environment, you might enter SQL directly (for example, to generate reports), embed SQL statements into code written in another language, or use a language-specific API that hides the SQL syntax. SQL is defined by the ANSI/ISO SQL Standard. The SQL standard has been evolving since 1986 and several versions exist. In this manual, “SQL-92” refersto the standard released in 1992, “SQL:1999” refers to the standard released in 1999, and “SQL:2003” refers to the current version of the standard. Weuse the phrase “the SQL standard” to mean the current version of the SQL Standard at any time 
• MySQL software is Open Source. 
Open Source means that it is possible for anyone to use and modify the software. Anybody can download the MySQL software fromthe Internet and use it without paying anything. If you wish, you may study the source code and change it to suit your needs. The MySQL software usesthe GPL (GNU General Public License), http://www.fsf.org/licenses/, to define what you may and may not do with the software in different situations. If you feel uncomfortable with the GPL or need to embed MySQL code into a commercial application, you can buy a commercially licensed version from us. Seethe MySQL Licensing Overview for more information (http://www.mysql.com/company/legal/licensing/).
different tables. The database enforces these rules, so that with a well-designed database, your application never sees inconsistent, duplicate, orphan, out-of-date, or missing data. The SQL part of “MySQL” stands for “Structured Query Language”. SQL is the most common standardized language used to access databases. Depending on your programming environment, you might enter SQL directly (for example, to generate reports),embed SQL statements into code written in another language, or use a language-specific API that hides the SQL syntax. SQL is defined by the ANSI/ISO SQL Standard. The SQL standard has been evolving since 1986 and several versions exist. In this manual, “SQL-92” refers to the standard released in 1992, “SQL:1999” refers to the standard released in 1999, and “SQL:2003” refers to the current version 
of the standard. We use the phrase “the SQL standard” to mean the current version of the SQL Standard at any time 
• MySQL software is Open Source. 
Open Source means that it is possible for anyone to use and modify the software. Anybody can download the MySQL software fromthe Internet and use it without paying anything. If you wish, you may study the source code and change it to suit your needs. The MySQL software usesthe GPL (GNU General Public License), http://www.fsf.org/licenses/, to define what you may and may not do with the software in different situations. If you feel uncomfortable with the GPL or need to embed MySQL code into a commercial application, you can buy a commercially licensed version from us. Seethe MySQL Licensing Overview for more information (http://www.mysql.com/company/legal/licensing/). 
• The MySQL Database Server is very fast, reliable, scalable, and easy to use. If that is what you are looking for, you should give it a try. MySQL Server can run comfortably on a desktop or laptop, alongside your other applications, web servers, and so on, requiring little or no attention. If you dedicate an entire machine to MySQL, you can adjust the settings to take advantage of all the memory, CPU power, and I/O capacity available. MySQL can also scale up to clusters of machines, networked together. 
We also provide MySQL Server as an embedded multi-threaded library that you can link into your application to get a smaller, faster, easier-to-manage standalone product. 
• A large amount of contributed MySQL software is available. MySQL Server has a practical set of features developed in close cooperation with our users. It is very likely that your favorite application or language supports the MySQL Database Server. 
• MySQL Server works in client/server or embedded systems. 
The MySQL Database Software is a client/server system that consists of a multi-threaded SQL server that supports different backends, several different client programs and libraries, administrative tools, and a wide range of application programming interfaces (APIs).
The Main Features of MySQL: 
•Internals and Portability 
•Written in C and C++. 
•Tested with a broad range of different compilers. 
•Works on many different platforms. See http://www.mysql.com/support/supportedplatforms/database.html. 
•For portability, uses CMakein MySQL 5.5 and up. Previous series use GNU Automake, Autoconf, and Libtool. 
•Tested with Purify (a commercial memory leakage detector) as well as with Valgrind, a GPL tool (http://developer.kde.org/~sewardj/). 
•Uses multi-layered server design with independent modules. 
•Designed to be fully multi-threaded using kernel threads, to easily use multiple CPUs if they are available. 
•Provides transactional and nontransactionalstorage engines. 
•Uses very fast B-tree disk tables (MyISAM) with index compression. 
•Designed to make it relatively easy to add other storage engines. This is useful if you want to provide an SQL interface for an in- house database. 
•Uses a very fast thread-based memory allocation system. 
•Executes very fast joins using an optimized nested-loop join. 
•Implements in-memory hash tables, which are used as temporary tables. 
•Implements SQL functions using a highly optimized class library that should be as fast as possible. 
•Usually there is no memory allocation at all after query initialization. 
•Provides the server as a separate program for use in a client/server networked environment, and as a library that can be embedded (linked) into standalone applications. Such applications can be used in isolation or in environments where no network is available
Data Types 
•Many data types: signed/unsigned integers 1, 2, 3, 4, and 8 bytes long, FLOAT, DOUBLE, CHAR,VARCHAR, BINARY, VARBINARY, TEXT,BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET,ENUM, and OpenGISspatial types. 
•Fixed-length and variable-length string types. 
Statements and Functions 
• Full operator and function support in the SELECT list and WHERE clause of queries. For example: 
mysql> select concat(first_name, ' ', last_name) 
from citizen where income/dependents > 10000 AND age > 30; 
• Full support for SQL GROUP BY and ORDER BY clauses. Support for group functions (COUNT(),AVG(), STD(), SUM(), MAX(), MIN(),and GROUP_CONCAT()). 
• Support for LEFT OUTER JOIN and RIGHT OUTER JOIN with both standard SQL and ODBC syntax. 
• Support for aliases on tables and columns as required by standard SQL. 
• Support for DELETE, INSERT, REPLACE, and UPDATE to return the number of rows that were changed (affected), or to return thenumber of rows matched instead by setting a flag when connecting to the server. 
• Support for MySQL-specific SHOW statements that retrieve information about databases, storage engines, tables, and indexes. MySQL 5.0 adds support for the INFORMATION_SCHEMA database, implemented according to standard SQL. 
• An EXPLAIN statement to show how the optimizer resolves a query. 
• Independence of function names from table or column names. For example, ABS is a valid column name. The only restriction isthat for a function call, no spaces are permitted between the function name and the “(” that follows it. See Section 9.3, “Reserved Words”.• You canrefer to tables from different databases in the same statement.
Localization 
•The server can provide error messages to clients in many languages. See Section 10.2, “Setting the 
Error Message Language”. 
•Full support for several different character sets, including latin1 (cp1252), german, big5, ujis, 
and more. For example, the Scandinavian characters “å”, “ä” and “ö” are permitted in table and 
column names. Unicode support is available as of MySQL 4.1. 
•All data is saved in the chosen character set. 
•Sorting and comparisons are done according to the chosen character set and collation (using 
latin1 and Swedish collation by default). It is possible to change this when the MySQL server is 
started. To see an example of very advanced sorting, look at the Czech sorting code. MySQL Server 
supports many different character sets that can be specified at compile time and runtime.
MySQL Enterprise 
•Oracle offers technical support in the form of MySQL Enterprise. For organizations that rely on the 
•MySQL DBMS for business-critical production applications, MySQL Enterprise is a commercial subscription offering which includes: 
•MySQL Enterprise Server 
•MySQL Enterprise Monitor 
•Monthly Rapid Updates and Quarterly Service Packs 
•MySQL Knowledge Base 
•24x7 Technical and Consultative Support 
•MySQL Enterprise is available in multiple tiers, giving you the flexibility to choose the level of service that best matches your needs
The SQL mode in effect when the problem occurred can be significant, so please report the value of the sql_modesystem variable. For stored procedure, stored function, and trigger objects, the relevant sql_modevalue is the one in effect when the object was created. For a stored procedure or function, the SHOW CREATE PROCEDURE or SHOW CREATE FUNCTION statement shows the relevant SQL mode, or you can query INFORMATION_SCHEMA for the information: 
SELECT ROUTINE_SCHEMA, ROUTINE_NAME, SQL_MODE FROM INFORMATION_SCHEMA.ROUTINES; 
For triggers, you can use this statement: 
SELECT EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, TRIGGER_NAME, SQL_MODE FROM INFORMATION_SCHEMA.TRIGGERS; 
• For performance-related bugs or problems with SELECT statements, you should always include the output of EXPLAIN SELECT ..., and at least the number of rows that the SELECT statement produces. You should also include the output from SHOW CREATE TABLE tbl_namefor each table that is involved. The more information you provide about your situation, the more likely it is that someone can help you. 
The following is an example of a very good bug report. The statements are run using the mysqlcommand-line tool. Note the use of the G statement terminator for statements that would otherwise provide very long output lines that are difficult to read. 
mysql> SHOW VARIABLES; 
mysql> SHOW COLUMNS FROM ...G 
<output from SHOW COLUMNS> 
mysql> EXPLAIN SELECT ...G 
<output from EXPLAIN> 
mysql> FLUSH STATUS; 
mysql> SELECT ...; 
<A short version of the output from SELECT, 
including the time taken to run the query> 
mysql> SHOW STATUS; 
<output from SHOW STATUS>
SELECT INTO TABLE Differences 
MySQL Server doesn't support the SELECT ... INTO TABLE Sybase SQL extension. Instead, MySQL Server supports the INSERT INTO ... SELECT standard SQL syntax, which is basically the same thing. See Section 13.2.5.1, “INSERT ... SELECT Syntax”. For example: 
INSERT INTO tbl_temp2 (fld_id) 
SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100; 
Alternatively, you can use SELECT ... INTO OUTFILE or CREATE TABLE ... SELECT. 
You can use SELECT ... INTO with user-defined variables. The same syntax can also be used inside stored routines using cursors and local variables. See Section 13.2.9.1, “SELECT ... INTO Syntax”. 
UPDATE Differences 
If you access a column from the table to be updated in an expression, UPDATE uses the current value 
of the column. The second assignment in the following statement sets col2 to the current (updated) 
col1 value, not the original col1 value. The result is that col1 and col2 have the same value. This 
behavior differs from standard SQL. 
UPDATE t1 SET col1 = col1 + 1, col2 = col1; 
Following are some techniques for working with nontransactionaltables: 
• Loops that need transactions normally can be coded with the help of LOCK TABLES, and you don't 
need cursors to update records on the fly. 
• To avoid using ROLLBACK, you can employ the following strategy: 
1. Use LOCK TABLES to lock all the tables you want to access. 
2. Test the conditions that must be true before performing the update. 
3. Update if the conditions are satisfied. 
4. Use UNLOCK TABLES to release your locks.
Following are some techniques for working with nontransactionaltables: 
Loops that need transactions normally can be coded with the help of LOCK TABLES, and you don't need cursors to update recordson the fly. 
To avoid using ROLLBACK, you can employ the following strategy: 
Use LOCK TABLES to lock all the tables you want to access. 
Test the conditions that must be true before performing the update. 
Update if the conditions are satisfied. 
Use UNLOCK TABLES to release your locks. 
For situations that require row-level locking, use InnoDBtables. Otherwise, with MyISAMtables, you 
can use a flag column in the table and do something like the following: 
UPDATE tbl_nameSET row_flag=1 WHERE id=ID; 
MySQL returns 1 for the number of affected rows if the row was found and row_flagwasn't 1 in the 
original row. You can think of this as though MySQL Server changed the preceding statement to: 
UPDATE tbl_nameSET row_flag=1 WHERE id=ID AND row_flag<> 1; 
SELECT * FROM t1 INNER JOIN t2 ON t1.id = t2.id; 
Deviations from SQL Standards 
How MySQL Deals with Constraints 
MySQL enables you to work both with transactional tables that permit rollback and with nontransactionaltables that do not. Because of this, constraint handling is a bit different in MySQL than in other DBMSs. We must handle the case when you have inserted or updated a lot of rows in a nontransactionaltable for which changes cannot be rolled back when an error occurs. 
PRIMARY KEY and UNIQUE Index Constraints 
Normally, errors occurs for data-change statements (such as INSERT or UPDATE) that would violate primary-key, unique-key, or foreign-key constraints. If you are using a transactional storage engine such as InnoDB, MySQL automatically rolls back the statement. If you are using a nontransactional 
storage engine, MySQL stops processing the statement at the row for which the error occurred and leaves any remaining rows unprocessed
•.

More Related Content

What's hot (19)

SQLite: Light, Open Source Relational Database Management System
SQLite: Light, Open Source Relational Database Management SystemSQLite: Light, Open Source Relational Database Management System
SQLite: Light, Open Source Relational Database Management System
 
Sq lite presentation
Sq lite presentationSq lite presentation
Sq lite presentation
 
A brief introduction to SQLite PPT
A brief introduction to SQLite PPTA brief introduction to SQLite PPT
A brief introduction to SQLite PPT
 
MySQL For Oracle Developers
MySQL For Oracle DevelopersMySQL For Oracle Developers
MySQL For Oracle Developers
 
My sql
 My sql My sql
My sql
 
Getting Started with SQLite
Getting Started with SQLiteGetting Started with SQLite
Getting Started with SQLite
 
Introduction Mysql
Introduction Mysql Introduction Mysql
Introduction Mysql
 
Sqlite
SqliteSqlite
Sqlite
 
Oracle database introduction
Oracle database introductionOracle database introduction
Oracle database introduction
 
Modernizing your database with SQL Server 2019
Modernizing your database with SQL Server 2019Modernizing your database with SQL Server 2019
Modernizing your database with SQL Server 2019
 
SQL Server 2019 ctp2.2
SQL Server 2019 ctp2.2SQL Server 2019 ctp2.2
SQL Server 2019 ctp2.2
 
MYSQL-Database
MYSQL-DatabaseMYSQL-Database
MYSQL-Database
 
Database system
Database systemDatabase system
Database system
 
Mysql tutorial 5257
Mysql tutorial 5257Mysql tutorial 5257
Mysql tutorial 5257
 
Sql2008 (1)
Sql2008 (1)Sql2008 (1)
Sql2008 (1)
 
Topic1
Topic1Topic1
Topic1
 
The roadmap for sql server 2019
The roadmap for sql server 2019The roadmap for sql server 2019
The roadmap for sql server 2019
 
Introduction to Oracle Database
Introduction to Oracle DatabaseIntroduction to Oracle Database
Introduction to Oracle Database
 
REDIS (Remote Dictionary Server)
REDIS (Remote Dictionary Server)REDIS (Remote Dictionary Server)
REDIS (Remote Dictionary Server)
 

Similar to Mysql

SQL PPT.pptx
SQL PPT.pptxSQL PPT.pptx
SQL PPT.pptxKulbir4
 
Mysql
MysqlMysql
MysqlSHC
 
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdf
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdfCompare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdf
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdfarihantplastictanksh
 
20090425mysqlslides 12593434194072-phpapp02
20090425mysqlslides 12593434194072-phpapp0220090425mysqlslides 12593434194072-phpapp02
20090425mysqlslides 12593434194072-phpapp02Vinamra Mittal
 
My sql crashcourse_intro_kdl
My sql crashcourse_intro_kdlMy sql crashcourse_intro_kdl
My sql crashcourse_intro_kdlsqlhjalp
 
DEE 431 Introduction to Mysql Slide 3
DEE 431 Introduction to Mysql Slide 3DEE 431 Introduction to Mysql Slide 3
DEE 431 Introduction to Mysql Slide 3YOGESH SINGH
 
Scalable relational database with SQL Azure
Scalable relational database with SQL AzureScalable relational database with SQL Azure
Scalable relational database with SQL AzureShy Engelberg
 
MySQL Reference Manual
MySQL Reference ManualMySQL Reference Manual
MySQL Reference Manualwebhostingguy
 
MySQL for Oracle DBA -- Rocky Mountain Oracle User Group Training Days '15
MySQL for Oracle DBA -- Rocky Mountain Oracle User Group Training Days '15MySQL for Oracle DBA -- Rocky Mountain Oracle User Group Training Days '15
MySQL for Oracle DBA -- Rocky Mountain Oracle User Group Training Days '15Dave Stokes
 
My First 100 days with a MySQL DBMS (WP)
My First 100 days with a MySQL DBMS (WP)My First 100 days with a MySQL DBMS (WP)
My First 100 days with a MySQL DBMS (WP)Gustavo Rene Antunez
 
My sql università di enna a.a. 2005-06
My sql   università di enna a.a. 2005-06My sql   università di enna a.a. 2005-06
My sql università di enna a.a. 2005-06YUCHENG HU
 
SQL EXCLUSIVE NOTES .pdf
SQL EXCLUSIVE NOTES .pdfSQL EXCLUSIVE NOTES .pdf
SQL EXCLUSIVE NOTES .pdfNiravPanchal50
 
Sql vs NO-SQL database differences explained
Sql vs NO-SQL database differences explainedSql vs NO-SQL database differences explained
Sql vs NO-SQL database differences explainedSatya Pal
 
Introduction to NoSQL
Introduction to NoSQLIntroduction to NoSQL
Introduction to NoSQLbalwinders
 
Azure from scratch part 3 By Girish Kalamati
Azure from scratch part 3 By Girish KalamatiAzure from scratch part 3 By Girish Kalamati
Azure from scratch part 3 By Girish KalamatiGirish Kalamati
 

Similar to Mysql (20)

SQL PPT.pptx
SQL PPT.pptxSQL PPT.pptx
SQL PPT.pptx
 
Mysql
MysqlMysql
Mysql
 
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdf
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdfCompare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdf
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdf
 
20090425mysqlslides 12593434194072-phpapp02
20090425mysqlslides 12593434194072-phpapp0220090425mysqlslides 12593434194072-phpapp02
20090425mysqlslides 12593434194072-phpapp02
 
My sql crashcourse_intro_kdl
My sql crashcourse_intro_kdlMy sql crashcourse_intro_kdl
My sql crashcourse_intro_kdl
 
DEE 431 Introduction to Mysql Slide 3
DEE 431 Introduction to Mysql Slide 3DEE 431 Introduction to Mysql Slide 3
DEE 431 Introduction to Mysql Slide 3
 
Mysql
MysqlMysql
Mysql
 
Azure data platform overview
Azure data platform overviewAzure data platform overview
Azure data platform overview
 
Scalable relational database with SQL Azure
Scalable relational database with SQL AzureScalable relational database with SQL Azure
Scalable relational database with SQL Azure
 
MySQL Reference Manual
MySQL Reference ManualMySQL Reference Manual
MySQL Reference Manual
 
MySQL for Oracle DBA -- Rocky Mountain Oracle User Group Training Days '15
MySQL for Oracle DBA -- Rocky Mountain Oracle User Group Training Days '15MySQL for Oracle DBA -- Rocky Mountain Oracle User Group Training Days '15
MySQL for Oracle DBA -- Rocky Mountain Oracle User Group Training Days '15
 
My First 100 days with a MySQL DBMS (WP)
My First 100 days with a MySQL DBMS (WP)My First 100 days with a MySQL DBMS (WP)
My First 100 days with a MySQL DBMS (WP)
 
My sql università di enna a.a. 2005-06
My sql   università di enna a.a. 2005-06My sql   università di enna a.a. 2005-06
My sql università di enna a.a. 2005-06
 
Ra framework 0.1
Ra framework 0.1Ra framework 0.1
Ra framework 0.1
 
SQL EXCLUSIVE NOTES .pdf
SQL EXCLUSIVE NOTES .pdfSQL EXCLUSIVE NOTES .pdf
SQL EXCLUSIVE NOTES .pdf
 
Sql vs NO-SQL database differences explained
Sql vs NO-SQL database differences explainedSql vs NO-SQL database differences explained
Sql vs NO-SQL database differences explained
 
Introduction to NoSQL
Introduction to NoSQLIntroduction to NoSQL
Introduction to NoSQL
 
Azure from scratch part 3 By Girish Kalamati
Azure from scratch part 3 By Girish KalamatiAzure from scratch part 3 By Girish Kalamati
Azure from scratch part 3 By Girish Kalamati
 
SQL & NoSQL
SQL & NoSQLSQL & NoSQL
SQL & NoSQL
 
Why you should(n't) run your databases in the cloud
Why you should(n't) run your databases in the cloudWhy you should(n't) run your databases in the cloud
Why you should(n't) run your databases in the cloud
 

More from Raghu nath

Ftp (file transfer protocol)
Ftp (file transfer protocol)Ftp (file transfer protocol)
Ftp (file transfer protocol)Raghu nath
 
Javascript part1
Javascript part1Javascript part1
Javascript part1Raghu nath
 
Regular expressions
Regular expressionsRegular expressions
Regular expressionsRaghu nath
 
Selection sort
Selection sortSelection sort
Selection sortRaghu nath
 
Binary search
Binary search Binary search
Binary search Raghu nath
 
JSON(JavaScript Object Notation)
JSON(JavaScript Object Notation)JSON(JavaScript Object Notation)
JSON(JavaScript Object Notation)Raghu nath
 
Stemming algorithms
Stemming algorithmsStemming algorithms
Stemming algorithmsRaghu nath
 
Step by step guide to install dhcp role
Step by step guide to install dhcp roleStep by step guide to install dhcp role
Step by step guide to install dhcp roleRaghu nath
 
Network essentials chapter 4
Network essentials  chapter 4Network essentials  chapter 4
Network essentials chapter 4Raghu nath
 
Network essentials chapter 3
Network essentials  chapter 3Network essentials  chapter 3
Network essentials chapter 3Raghu nath
 
Network essentials chapter 2
Network essentials  chapter 2Network essentials  chapter 2
Network essentials chapter 2Raghu nath
 
Network essentials - chapter 1
Network essentials - chapter 1Network essentials - chapter 1
Network essentials - chapter 1Raghu nath
 
Python chapter 2
Python chapter 2Python chapter 2
Python chapter 2Raghu nath
 
python chapter 1
python chapter 1python chapter 1
python chapter 1Raghu nath
 
Linux Shell Scripting
Linux Shell ScriptingLinux Shell Scripting
Linux Shell ScriptingRaghu nath
 

More from Raghu nath (20)

Mongo db
Mongo dbMongo db
Mongo db
 
Ftp (file transfer protocol)
Ftp (file transfer protocol)Ftp (file transfer protocol)
Ftp (file transfer protocol)
 
MS WORD 2013
MS WORD 2013MS WORD 2013
MS WORD 2013
 
Msword
MswordMsword
Msword
 
Ms word
Ms wordMs word
Ms word
 
Javascript part1
Javascript part1Javascript part1
Javascript part1
 
Regular expressions
Regular expressionsRegular expressions
Regular expressions
 
Selection sort
Selection sortSelection sort
Selection sort
 
Binary search
Binary search Binary search
Binary search
 
JSON(JavaScript Object Notation)
JSON(JavaScript Object Notation)JSON(JavaScript Object Notation)
JSON(JavaScript Object Notation)
 
Stemming algorithms
Stemming algorithmsStemming algorithms
Stemming algorithms
 
Step by step guide to install dhcp role
Step by step guide to install dhcp roleStep by step guide to install dhcp role
Step by step guide to install dhcp role
 
Network essentials chapter 4
Network essentials  chapter 4Network essentials  chapter 4
Network essentials chapter 4
 
Network essentials chapter 3
Network essentials  chapter 3Network essentials  chapter 3
Network essentials chapter 3
 
Network essentials chapter 2
Network essentials  chapter 2Network essentials  chapter 2
Network essentials chapter 2
 
Network essentials - chapter 1
Network essentials - chapter 1Network essentials - chapter 1
Network essentials - chapter 1
 
Python chapter 2
Python chapter 2Python chapter 2
Python chapter 2
 
python chapter 1
python chapter 1python chapter 1
python chapter 1
 
Linux Shell Scripting
Linux Shell ScriptingLinux Shell Scripting
Linux Shell Scripting
 
Perl
PerlPerl
Perl
 

Mysql

  • 1. What is MySQL? MySQL, the most popular Open Source SQL database management system, is developed, distributed,andsupported by Oracle Corporation. • MySQL is a database management system. A database is a structured collection of data. It may be anything from a simple shopping list to a picture gallery or the vast amounts of information in a corporate network. To add, access, and process data stored in a computer database, you need a database management system suchasMySQL Server. Since computers are very good at handling large amounts of data, database management systems play a central role in computing, as standalone utilities, or as parts of other applications. • MySQL databases are relational. A relational database stores data in separate tables rather than putting all the data in one big storeroom. The database structures are organized into physical files optimized for speed. The logical model, with objects such as databases, tables, views, rows, and columns, offers a flexible programming environment. You set up rules governing the relationships between different data fields, such as one-to-one, one-to-many, unique, required or optional, and “pointers” between different tables. The database enforces these rules, so that with a well-designed database, your application never sees inconsistent, duplicate, orphan, out-of-date, or missing data. The SQL part of “MySQL” stands for “Structured Query Language”. SQL is the most common standardized language used to access databases. Depending on your programming environment, you might enter SQL directly (for example, to generate reports), embed SQL statements into code written in another language, or use a language-specific API that hides the SQL syntax. SQL is defined by the ANSI/ISO SQL Standard. The SQL standard has been evolving since 1986 and several versions exist. In this manual, “SQL-92” refersto the standard released in 1992, “SQL:1999” refers to the standard released in 1999, and “SQL:2003” refers to the current version of the standard. Weuse the phrase “the SQL standard” to mean the current version of the SQL Standard at any time • MySQL software is Open Source. Open Source means that it is possible for anyone to use and modify the software. Anybody can download the MySQL software fromthe Internet and use it without paying anything. If you wish, you may study the source code and change it to suit your needs. The MySQL software usesthe GPL (GNU General Public License), http://www.fsf.org/licenses/, to define what you may and may not do with the software in different situations. If you feel uncomfortable with the GPL or need to embed MySQL code into a commercial application, you can buy a commercially licensed version from us. Seethe MySQL Licensing Overview for more information (http://www.mysql.com/company/legal/licensing/).
  • 2.
  • 3. different tables. The database enforces these rules, so that with a well-designed database, your application never sees inconsistent, duplicate, orphan, out-of-date, or missing data. The SQL part of “MySQL” stands for “Structured Query Language”. SQL is the most common standardized language used to access databases. Depending on your programming environment, you might enter SQL directly (for example, to generate reports),embed SQL statements into code written in another language, or use a language-specific API that hides the SQL syntax. SQL is defined by the ANSI/ISO SQL Standard. The SQL standard has been evolving since 1986 and several versions exist. In this manual, “SQL-92” refers to the standard released in 1992, “SQL:1999” refers to the standard released in 1999, and “SQL:2003” refers to the current version of the standard. We use the phrase “the SQL standard” to mean the current version of the SQL Standard at any time • MySQL software is Open Source. Open Source means that it is possible for anyone to use and modify the software. Anybody can download the MySQL software fromthe Internet and use it without paying anything. If you wish, you may study the source code and change it to suit your needs. The MySQL software usesthe GPL (GNU General Public License), http://www.fsf.org/licenses/, to define what you may and may not do with the software in different situations. If you feel uncomfortable with the GPL or need to embed MySQL code into a commercial application, you can buy a commercially licensed version from us. Seethe MySQL Licensing Overview for more information (http://www.mysql.com/company/legal/licensing/). • The MySQL Database Server is very fast, reliable, scalable, and easy to use. If that is what you are looking for, you should give it a try. MySQL Server can run comfortably on a desktop or laptop, alongside your other applications, web servers, and so on, requiring little or no attention. If you dedicate an entire machine to MySQL, you can adjust the settings to take advantage of all the memory, CPU power, and I/O capacity available. MySQL can also scale up to clusters of machines, networked together. We also provide MySQL Server as an embedded multi-threaded library that you can link into your application to get a smaller, faster, easier-to-manage standalone product. • A large amount of contributed MySQL software is available. MySQL Server has a practical set of features developed in close cooperation with our users. It is very likely that your favorite application or language supports the MySQL Database Server. • MySQL Server works in client/server or embedded systems. The MySQL Database Software is a client/server system that consists of a multi-threaded SQL server that supports different backends, several different client programs and libraries, administrative tools, and a wide range of application programming interfaces (APIs).
  • 4. The Main Features of MySQL: •Internals and Portability •Written in C and C++. •Tested with a broad range of different compilers. •Works on many different platforms. See http://www.mysql.com/support/supportedplatforms/database.html. •For portability, uses CMakein MySQL 5.5 and up. Previous series use GNU Automake, Autoconf, and Libtool. •Tested with Purify (a commercial memory leakage detector) as well as with Valgrind, a GPL tool (http://developer.kde.org/~sewardj/). •Uses multi-layered server design with independent modules. •Designed to be fully multi-threaded using kernel threads, to easily use multiple CPUs if they are available. •Provides transactional and nontransactionalstorage engines. •Uses very fast B-tree disk tables (MyISAM) with index compression. •Designed to make it relatively easy to add other storage engines. This is useful if you want to provide an SQL interface for an in- house database. •Uses a very fast thread-based memory allocation system. •Executes very fast joins using an optimized nested-loop join. •Implements in-memory hash tables, which are used as temporary tables. •Implements SQL functions using a highly optimized class library that should be as fast as possible. •Usually there is no memory allocation at all after query initialization. •Provides the server as a separate program for use in a client/server networked environment, and as a library that can be embedded (linked) into standalone applications. Such applications can be used in isolation or in environments where no network is available
  • 5. Data Types •Many data types: signed/unsigned integers 1, 2, 3, 4, and 8 bytes long, FLOAT, DOUBLE, CHAR,VARCHAR, BINARY, VARBINARY, TEXT,BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET,ENUM, and OpenGISspatial types. •Fixed-length and variable-length string types. Statements and Functions • Full operator and function support in the SELECT list and WHERE clause of queries. For example: mysql> select concat(first_name, ' ', last_name) from citizen where income/dependents > 10000 AND age > 30; • Full support for SQL GROUP BY and ORDER BY clauses. Support for group functions (COUNT(),AVG(), STD(), SUM(), MAX(), MIN(),and GROUP_CONCAT()). • Support for LEFT OUTER JOIN and RIGHT OUTER JOIN with both standard SQL and ODBC syntax. • Support for aliases on tables and columns as required by standard SQL. • Support for DELETE, INSERT, REPLACE, and UPDATE to return the number of rows that were changed (affected), or to return thenumber of rows matched instead by setting a flag when connecting to the server. • Support for MySQL-specific SHOW statements that retrieve information about databases, storage engines, tables, and indexes. MySQL 5.0 adds support for the INFORMATION_SCHEMA database, implemented according to standard SQL. • An EXPLAIN statement to show how the optimizer resolves a query. • Independence of function names from table or column names. For example, ABS is a valid column name. The only restriction isthat for a function call, no spaces are permitted between the function name and the “(” that follows it. See Section 9.3, “Reserved Words”.• You canrefer to tables from different databases in the same statement.
  • 6. Localization •The server can provide error messages to clients in many languages. See Section 10.2, “Setting the Error Message Language”. •Full support for several different character sets, including latin1 (cp1252), german, big5, ujis, and more. For example, the Scandinavian characters “å”, “ä” and “ö” are permitted in table and column names. Unicode support is available as of MySQL 4.1. •All data is saved in the chosen character set. •Sorting and comparisons are done according to the chosen character set and collation (using latin1 and Swedish collation by default). It is possible to change this when the MySQL server is started. To see an example of very advanced sorting, look at the Czech sorting code. MySQL Server supports many different character sets that can be specified at compile time and runtime.
  • 7. MySQL Enterprise •Oracle offers technical support in the form of MySQL Enterprise. For organizations that rely on the •MySQL DBMS for business-critical production applications, MySQL Enterprise is a commercial subscription offering which includes: •MySQL Enterprise Server •MySQL Enterprise Monitor •Monthly Rapid Updates and Quarterly Service Packs •MySQL Knowledge Base •24x7 Technical and Consultative Support •MySQL Enterprise is available in multiple tiers, giving you the flexibility to choose the level of service that best matches your needs
  • 8. The SQL mode in effect when the problem occurred can be significant, so please report the value of the sql_modesystem variable. For stored procedure, stored function, and trigger objects, the relevant sql_modevalue is the one in effect when the object was created. For a stored procedure or function, the SHOW CREATE PROCEDURE or SHOW CREATE FUNCTION statement shows the relevant SQL mode, or you can query INFORMATION_SCHEMA for the information: SELECT ROUTINE_SCHEMA, ROUTINE_NAME, SQL_MODE FROM INFORMATION_SCHEMA.ROUTINES; For triggers, you can use this statement: SELECT EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, TRIGGER_NAME, SQL_MODE FROM INFORMATION_SCHEMA.TRIGGERS; • For performance-related bugs or problems with SELECT statements, you should always include the output of EXPLAIN SELECT ..., and at least the number of rows that the SELECT statement produces. You should also include the output from SHOW CREATE TABLE tbl_namefor each table that is involved. The more information you provide about your situation, the more likely it is that someone can help you. The following is an example of a very good bug report. The statements are run using the mysqlcommand-line tool. Note the use of the G statement terminator for statements that would otherwise provide very long output lines that are difficult to read. mysql> SHOW VARIABLES; mysql> SHOW COLUMNS FROM ...G <output from SHOW COLUMNS> mysql> EXPLAIN SELECT ...G <output from EXPLAIN> mysql> FLUSH STATUS; mysql> SELECT ...; <A short version of the output from SELECT, including the time taken to run the query> mysql> SHOW STATUS; <output from SHOW STATUS>
  • 9. SELECT INTO TABLE Differences MySQL Server doesn't support the SELECT ... INTO TABLE Sybase SQL extension. Instead, MySQL Server supports the INSERT INTO ... SELECT standard SQL syntax, which is basically the same thing. See Section 13.2.5.1, “INSERT ... SELECT Syntax”. For example: INSERT INTO tbl_temp2 (fld_id) SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100; Alternatively, you can use SELECT ... INTO OUTFILE or CREATE TABLE ... SELECT. You can use SELECT ... INTO with user-defined variables. The same syntax can also be used inside stored routines using cursors and local variables. See Section 13.2.9.1, “SELECT ... INTO Syntax”. UPDATE Differences If you access a column from the table to be updated in an expression, UPDATE uses the current value of the column. The second assignment in the following statement sets col2 to the current (updated) col1 value, not the original col1 value. The result is that col1 and col2 have the same value. This behavior differs from standard SQL. UPDATE t1 SET col1 = col1 + 1, col2 = col1; Following are some techniques for working with nontransactionaltables: • Loops that need transactions normally can be coded with the help of LOCK TABLES, and you don't need cursors to update records on the fly. • To avoid using ROLLBACK, you can employ the following strategy: 1. Use LOCK TABLES to lock all the tables you want to access. 2. Test the conditions that must be true before performing the update. 3. Update if the conditions are satisfied. 4. Use UNLOCK TABLES to release your locks.
  • 10. Following are some techniques for working with nontransactionaltables: Loops that need transactions normally can be coded with the help of LOCK TABLES, and you don't need cursors to update recordson the fly. To avoid using ROLLBACK, you can employ the following strategy: Use LOCK TABLES to lock all the tables you want to access. Test the conditions that must be true before performing the update. Update if the conditions are satisfied. Use UNLOCK TABLES to release your locks. For situations that require row-level locking, use InnoDBtables. Otherwise, with MyISAMtables, you can use a flag column in the table and do something like the following: UPDATE tbl_nameSET row_flag=1 WHERE id=ID; MySQL returns 1 for the number of affected rows if the row was found and row_flagwasn't 1 in the original row. You can think of this as though MySQL Server changed the preceding statement to: UPDATE tbl_nameSET row_flag=1 WHERE id=ID AND row_flag<> 1; SELECT * FROM t1 INNER JOIN t2 ON t1.id = t2.id; Deviations from SQL Standards How MySQL Deals with Constraints MySQL enables you to work both with transactional tables that permit rollback and with nontransactionaltables that do not. Because of this, constraint handling is a bit different in MySQL than in other DBMSs. We must handle the case when you have inserted or updated a lot of rows in a nontransactionaltable for which changes cannot be rolled back when an error occurs. PRIMARY KEY and UNIQUE Index Constraints Normally, errors occurs for data-change statements (such as INSERT or UPDATE) that would violate primary-key, unique-key, or foreign-key constraints. If you are using a transactional storage engine such as InnoDB, MySQL automatically rolls back the statement. If you are using a nontransactional storage engine, MySQL stops processing the statement at the row for which the error occurred and leaves any remaining rows unprocessed
  • 11. •.