ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2 Διδάσκων: Γιάννης Θεοδωρίδης Συντάκτης Κειμένου: Βαγγέλης Κατσικάρος Φεβρουάριος 2008
Περιεχόμενα SQL Language Structure storage engnines δημιουργία πινάκων
shell> mysql -uroot -p
SQL Language Structure Θα δούμε κανόνες που αφορούν την σύνταξη της SQL στο RDBMS MySQL: comments < reserved words literal values user-defined variables Schema object names / identifiers Άδειο query mysql> ; http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html
Από το σύμβολο μέχρι το τέλος της γραμμής: # -- Ανάμεσα στα σύμβολα: /* */ SQL Language Structure :: Comment Syntax mysql> SHOW DATABASES # blah -> ; mysql> SHOW DATABASES -- blah -> ; mysql> SHOW DATABASES /* blah */ ; http://dev.mysql.com/doc/refman/5.0/en/comments.html
SQL Language Structure :: Comment Syntax Ανάμεσα στα σύμβολα: /*! */ SQL κώδικας που εκτελείται μόνο από το σύστημα MySQL: mysql> /* SHOW DATABASES */ ; mysql> /*! SHOW DATABASES */ ; http://dev.mysql.com/doc/refman/5.0/en/comments.html
SQL Language Structure Θα δούμε κανόνες που αφορούν την σύνταξη της SQL στο RDBMS MySQL: comments reserved words < literal values user-defined variables Schema object names / identifiers http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html
SQL Language Structure :: Reserved Words Certain words are reserved and require special treatment for use as identifiers such as table and column names. This may also be true for the names of built-in functions. CREATE DROP DATABASE SCHEMA IF NOT EXISTS http://dev.mysql.com/doc/mysqld-version-reference/en/ mysqld-version-reference-reservedwords-5-0.html http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html
SQL Language Structure Θα δούμε κανόνες που αφορούν την σύνταξη της SQL στο RDBMS MySQL: comments reserved words literal values < user-defined variables Schema object names / identifiers http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html
SQL Language Structure :: Literal Values Οι literal values περιλαμβάνουν: Strings Numbers Hexadecimal Values Boolean Values NULL Values Bit-Field Values (δεν θα τα δούμε) http://dev.mysql.com/doc/refman/5.0/en/literals.html
SQL Language Structure :: Literal Values :: Strings Ένα string είναι μια σειρά από bytes ή χαρακτήρων κλεισμένα σε μονό εισαγωγικό ' ή διπλό εισαγωγικό ". "example" 'example' mysql> SELECT 'example'; mysql> SELECT "example"; http://dev.mysql.com/doc/refman/5.0/en/literals.html
SQL Language Structure :: Literal Values :: Strings Μέσα σε ένα string κάποιοι χαρακτήρες έχουν ειδικό νόημα. \' A single quote ( ' ) character. \" A double quote ( " ) character. \n A newline (linefeed) character. \t A tab character. \\ A backslash ( \ ) character. mysql> SELECT 'This\nIs\nFour\nLines'; mysql> SELECT 'hello'; mysql> SELECT '"hello"'; mysql> SELECT '""hello""'; mysql> SELECT 'hel''lo'; mysql> SELECT '\'hello'; hello "hello" ""hello"" hel'lo 'hello http://dev.mysql.com/doc/refman/5.0/en/literals.html
SQL Language Structure :: Literal Values :: Strings Πως θα εμφανίσω με διπλά εισαγωγικά τα: hello 'hello' ''hello'' hel"lo "hello... http://dev.mysql.com/doc/refman/5.0/en/literals.html
SQL Language Structure :: Literal Values :: Strings mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; hello 'hello' ''hello'' hel"lo "hello http://dev.mysql.com/doc/refman/5.0/en/literals.html
. float number +, - πρόσημο ακέραιοι: SQL Language Structure :: Literal Values :: Numbers mysql> SELECT 15, 0, -32, +50 ; δεκαδικοί: mysql> SELECT 15.52, -5.7, +32.8, -32.68e+10; http://dev.mysql.com/doc/refman/5.0/en/literals.html
SQL Language Structure :: Literal Values :: Hexadecimal Values mysql> SELECT x'4d'; mysql> SELECT x'4d7953514c'; mysql> SELECT 0x4D7953514C; mysql> SELECT HEX('MySQL'); 4D 79 53 51 4C http://dev.mysql.com/doc/refman/5.0/en/literals.html
SQL Language Structure :: Literal Values :: Boolean - NULL Boolean mysql> SELECT TRUE, true, FALSE, false; NULL The NULL value means no data. NULL can be written in any lettercase. A synonym is \N (case sensitive). http://dev.mysql.com/doc/refman/5.0/en/boolean-values.html http://dev.mysql.com/doc/refman/5.0/en/null-values.html
SQL Language Structure Θα δούμε κανόνες που αφορούν την σύνταξη της SQL στο RDBMS MySQL: comments reserved words literal values user-defined variables (παραλείπεται) Schema object names / identifiers < http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html
SQL Language Structure :: Identifiers Ιdentifiers: database name table name index name column name alias name Μπορούν να είναι quoted ή unquoted. backtick "`" πχ: `blahblah` http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
SQL Language Structure :: Identifiers Ιdentifier Qualifiers Επιτρέπεται η χρήση ονομάτων με ένα ή περισσότερα identifier col_name The column col_name from whichever table used in the statement contains a column of that name. tbl_name.col_name The column col_name from table tbl_name of the default database. db_name.tbl_name.col_name The column col_name from table tbl_name of the database db_name. http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
Storage Engines Τι είναι το storage engine? Αφαιρετικό μοντέλο RDMSQ: http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html
Storage Engines Αφαιρετικό μοντέλο μηχανής αποθήκευσης: http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html
Storage Engines Διαφορές Storage Engines: Ταχύτητα λόγω της ύπαρξης ή μη κάποιων χαρακτηριστικών πχ transactions Άλλες Storage Engines έχουν την δυνατότητα μόνο να γράψουν και όχι να σβήσουν δεδομένα. κτλ. κτλ. http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html
Storage Engines MyISAM non-transactional Δεν είχε foreign keys. InnoDB transaction-safe υποστηρίζει foreign keys. http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html
Δημιουργία πινάκων Για να ορίσουμε σε ποιά βάση δεδομένων θα δουλεψουμε, θα χρησιμοποιήσουμε την εντολή USE Πάμε στο manual να δούμε για αυτήν την εντολή...
Δημιουργία πινάκων Θα χρησιμοποιήσουμε την εντολή CREATE TABLE Πάμε στο manual να δούμε για αυτήν την εντολή...
Δημιουργία πινάκων CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_option]... Or: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_option]... select_statement Or: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name (LIKE old_tbl_name) } http://dev.mysql.com/doc/refman/5.0/en/create-table.html
table_option: {ENGINE TYPE} [=] engine_name κτλ Δημιουργία πινάκων create_definition: col_name column_definition κτλ col_name: Όνομα στήλης column_definition: Ορσιμός στήλης http://dev.mysql.com/doc/refman/5.0/en/create-table.html
Δημιουργία πινάκων column_definition: data_type [NOT NULL NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] [PRIMARY] KEY] [COMMENT 'string'] [reference_definition] data_type: Τύπος δεδομένων http://dev.mysql.com/doc/refman/5.0/en/create-table.html
Δημιουργία πινάκων CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_option]... create_definition: col_name column_definition column_definition: data_type [NOT NULL NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] [PRIMARY] KEY] [COMMENT 'string'] [reference_definition] http://dev.mysql.com/doc/refman/5.0/en/create-table.html
mysql> CREATE TABLE table1 > (col1 INT NOT NULL, > col2 INT); Δημιουργία πινάκων mysql> SHOW TABLES; mysql> DESCRIBE table1;
Δημιουργία πινάκων CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_option]... create_definition: col_name column_definition column_definition: data_type [NOT NULL NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] [PRIMARY] KEY] [COMMENT 'string'] [reference_definition] http://dev.mysql.com/doc/refman/5.0/en/create-table.html
mysql> CREATE TABLE table2 > (col1 INT NOT NULL, > col2 INT, > col3 INT, > PRIMARY KEY(col1,col2)); Δημιουργία πινάκων mysql> DESCRIBE table2;
Δημιουργία πινάκων CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_option]... create_definition: col_name column_definition [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) column_definition: data_type [NOT NULL NULL] [DEFAULT default_value] table_option: {ENGINE TYPE} [=] engine_name AUTO_INCREMENT [=] value http://dev.mysql.com/doc/refman/5.0/en/create-table.html
mysql> CREATE TABLE table3 > (col1 INT NOT NULL, > col2 INT, > col3 INT, > PRIMARY KEY(col1,col2)) > ENGINE=InnoDB; Δημιουργία πινάκων mysql> DESCRIBE table3;