CONTENT
- CHANGES
Szukaj
#top Zapytania SQL¶
- Zapytania SQL
- users
- USER CREATE
- USER ALTER
- USER SET PASSWORD
- USER DROP
- permissions
- GRANT
- REVOKE
- SHOW GRANTS
- databases
- DATABASE CREATE
- DATABASE ALTER
- RENAME DATABASE - trick
- DATABASE DROP
- schemas
- SCHEMA CREATE
- SCHEMA ALTER
- SCHEMA DROP
- tablespaces
- TABLESPACE CREATE
- TABLESPACE ALTER
- TABLESPACE DROP
- tables
- TABLE CREATE
- TABLE CREATE LIKE
- TABLE CREATE AS
- TABLE CREATE with PRIMARY KEY
- TABLE CREATE with auto_increment
- TABLE CREATE with UNIQUE KEY (singlecolumn)
- TABLE CREATE with UNIQUE KEY (multicolumn)
- TABLE CREATE with FULLTEXT KEY
- TABLE CREATE with FOREIGN KEY
- TABLE CREATE with INDEX
- TABLE CREATE with partitioned
- TABLE CREATE with COLLATE without UNIQUE
- TABLE CREATE with COLLATE with UNIQUE
- TABLE ALTER
- TABLE ALTER with PRIMARY KEY
- TABLE ALTER with auto increment
- TABLE ALTER with UNIQUE KEY (singlecolumn)
- TABLE ALTER with UNIQUE KEY (multicolumn)
- TABLE ALTER with FULLTEXT KEY
- TABLE ALTER with FOREIGN KEY
- TABLE ALTER with INDEX
- TABLE ALTER with partitioned
- TABLE ALTER with COLLATE without UNIQUE
- TABLE ALTER with COLLATE with UNIQUE
- TABLE RENAME
- TABLE TRUNCATE
- TABLE DROP
- sequences
- SEQUENCE CREATE
- SEQUENCE ALTER
- SEQUENCE DROP
- indexes
- INDEX CREATE
- INDEX ALTER
- INDEX DROP
- functions
- Functions and Operators
- DATA Manipulations
- SELECT with LIMIT and OFFSET
- WHERE IN subselect with multiple columns
- Deleting duplicates rows
- REPLACE INTO
- GROUP with CONCAT
#top users¶
#top USER CREATE¶
Zobacz także USER CREATE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/create-user.html
Składnia:
CREATE USER user_specification [, user_specification] ... user_specification: user [ identified_option ] identified_option: { IDENTIFIED BY 'auth_string' | IDENTIFIED BY PASSWORD 'hash_string' }
Example: utworzenie użytkownika wraz hasłem:
CREATE USER temp@127.0.0.1 IDENTIFIED BY 'temp'; CREATE USER temp@localhost IDENTIFIED BY 'temp';
Example: utworzenie użytkownika wraz z hasłem poprzez nadanie uprawnień:
GRANT SELECT,INSERT,UPDATE,DELETE ON temp.* TO temp@127.0.0.1 IDENTIFIED BY 'temp'; GRANT SELECT,INSERT,UPDATE,DELETE ON temp.* TO temp@localhost IDENTIFIED BY 'temp'; FLUSH PRIVILEGES;
#top USER ALTER¶
Zobacz także USER ALTER dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/rename-user.html
Składnia:
RENAME USER old_user TO new_user [, old_user TO new_user] ...
Example:
-- comment
#top USER SET PASSWORD¶
Zobacz także USER SET PASSWORD dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/set-password.html
Składnia:
SET PASSWORD [FOR user] = password_option password_option: { PASSWORD('auth_string') | OLD_PASSWORD('auth_string') | 'hash_string' }
Example:
SET PASSWORD FOR root@localhost = PASSWORD('newpass'); FLUSH PRIVILEGES;
Example: That is equivalent to the following statements:
UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES;
Example: Another way to set the password is to use GRANT:
GRANT USAGE ON *.* TO root@localhost IDENTIFIED BY 'newpass'; FLUSH PRIVILEGES;
#top USER DROP¶
Zobacz także USER DROP dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/drop-user.html
Składnia:
DROP USER user [, user] ...
Example: odebranie nadanych / wszystkich uprawnień użytkownikowi, a następnie skasowanie użytkownika
REVOKE ALL PRIVILEGES ON temp.* FROM temp@127.0.0.1; REVOKE ALL PRIVILEGES ON temp.* FROM temp@localhost; DROP USER temp@127.0.0.1; DROP USER temp@localhost; FLUSH PRIVILEGES;
#top permissions¶
#top GRANT¶
Zobacz także GRANT dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/grant.html
Składnia:
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level TO user_specification [, user_specification] ... [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}] [WITH {GRANT OPTION | resource_option} ...] object_type: { TABLE | FUNCTION | PROCEDURE } priv_level: { * | *.* | db_name.* | db_name.tbl_name | tbl_name | db_name.routine_name } user_specification: user [ auth_option ] auth_option: { IDENTIFIED BY 'auth_string' | IDENTIFIED BY PASSWORD 'hash_string' } ssl_option: { SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject' } resource_option: { | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count }
There are several aspects to the GRANT statement, described under the following topics in this section:
Global Privileges
Global Privileges
CREATE USER - Privilege enables use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES.
FILE - Privilege gives you permission to read and write files on the server host using the LOAD DATA INFILE and SELECT ... INTO OUTFILE statements and the LOAD_FILE() function.
PROCESS - Privilege pertains to display of information about the threads executing within the server (that is, information about the statements being executed by sessions). The privilege enables use of SHOW PROCESSLIST or mysqladmin processlist to see threads belonging to other accounts; you can always see your own threads. The PROCESS privilege also enables use of SHOW ENGINE.
RELOAD - Privilege enables use of the FLUSH statement. It also enables mysqladmin commands that are equivalent to FLUSH operations: flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, and reload.
REPLICATION CLIENT - Privilege enables the use of SHOW MASTER STATUS and SHOW SLAVE STATUS.
REPLICATION SLAVE - Privilege should be granted to accounts that are used by slave servers to connect to the current server as their master. Without this privilege, the slave cannot request updates that have been made to databases on the master server.
SHOW DATABASES - Privilege enables the account to see database names by issuing the SHOW DATABASE statement.
SHUTDOWN - Privilege enables use of the mysqladmin shutdown command. There is no corresponding SQL statement.
SUPER - Privilege enables an account to use CHANGE MASTER TO, KILL or mysqladmin kill to kill threads belonging to other accounts (you can always kill your own threads), PURGE BINARY LOGS, configuration changes using SET GLOBAL to modify global system variables.
Database PrivilegesFILE - Privilege gives you permission to read and write files on the server host using the LOAD DATA INFILE and SELECT ... INTO OUTFILE statements and the LOAD_FILE() function.
PROCESS - Privilege pertains to display of information about the threads executing within the server (that is, information about the statements being executed by sessions). The privilege enables use of SHOW PROCESSLIST or mysqladmin processlist to see threads belonging to other accounts; you can always see your own threads. The PROCESS privilege also enables use of SHOW ENGINE.
RELOAD - Privilege enables use of the FLUSH statement. It also enables mysqladmin commands that are equivalent to FLUSH operations: flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, and reload.
REPLICATION CLIENT - Privilege enables the use of SHOW MASTER STATUS and SHOW SLAVE STATUS.
REPLICATION SLAVE - Privilege should be granted to accounts that are used by slave servers to connect to the current server as their master. Without this privilege, the slave cannot request updates that have been made to databases on the master server.
SHOW DATABASES - Privilege enables the account to see database names by issuing the SHOW DATABASE statement.
SHUTDOWN - Privilege enables use of the mysqladmin shutdown command. There is no corresponding SQL statement.
SUPER - Privilege enables an account to use CHANGE MASTER TO, KILL or mysqladmin kill to kill threads belonging to other accounts (you can always kill your own threads), PURGE BINARY LOGS, configuration changes using SET GLOBAL to modify global system variables.
CREATE - Privilege enables creation of new databases and tables.
DROP - Privilege enables you to drop (remove) existing databases, tables, and views.
EVENT - Privilege is required to create, alter, drop, or see events for the Event Scheduler.
GRANT OPTION - Privilege enables you to give to other users or remove from other users those privileges that you yourself possess.
LOCK TABLES - Privilege enables the use of explicit LOCK TABLES statements to lock tables for which you have the SELECT privilege.
Table PrivilegesDROP - Privilege enables you to drop (remove) existing databases, tables, and views.
EVENT - Privilege is required to create, alter, drop, or see events for the Event Scheduler.
GRANT OPTION - Privilege enables you to give to other users or remove from other users those privileges that you yourself possess.
LOCK TABLES - Privilege enables the use of explicit LOCK TABLES statements to lock tables for which you have the SELECT privilege.
ALTER - Privilege enables use of ALTER TABLE to change the structure of tables. ALTER TABLE also requires the CREATE and INSERT privileges. Renaming a table requires ALTER and DROP on the old table, ALTER, CREATE, and INSERT on the new table.
CREATE VIEW - Privilege enables use of CREATE VIEW.
CREATE - Privilege enables creation of new databases and tables.
DELETE - Privilege enables rows to be deleted from tables in a database.
DROP - Privilege enables you to drop (remove) existing databases, tables, and views.
GRANT OPTION - Privilege enables you to give to other users or remove from other users those privileges that you yourself possess.
INDEX - Privilege enables you to create or drop (remove) indexes. INDEX applies to existing tables.
INSERT - Privilege enables rows to be inserted into tables in a database.
SELECT - Privilege enables you to select rows from tables in a database.
SHOW VIEW - Privilege enables use of SHOW CREATE VIEW.
TRIGGER - Privilege enables trigger operations.
UPDATE - Privilege enables rows to be updated in tables in a database.
Column PrivilegesCREATE VIEW - Privilege enables use of CREATE VIEW.
CREATE - Privilege enables creation of new databases and tables.
DELETE - Privilege enables rows to be deleted from tables in a database.
DROP - Privilege enables you to drop (remove) existing databases, tables, and views.
GRANT OPTION - Privilege enables you to give to other users or remove from other users those privileges that you yourself possess.
INDEX - Privilege enables you to create or drop (remove) indexes. INDEX applies to existing tables.
INSERT - Privilege enables rows to be inserted into tables in a database.
SELECT - Privilege enables you to select rows from tables in a database.
SHOW VIEW - Privilege enables use of SHOW CREATE VIEW.
TRIGGER - Privilege enables trigger operations.
UPDATE - Privilege enables rows to be updated in tables in a database.
INSERT - Privilege enables rows to be inserted into tables in a database.
SELECT - Privilege enables you to select rows from tables in a database.
UPDATE - Privilege enables rows to be updated in tables in a database.
Stored Routine PrivilegesSELECT - Privilege enables you to select rows from tables in a database.
UPDATE - Privilege enables rows to be updated in tables in a database.
ALTER ROUTINE - Privilege is needed to alter or drop stored routines (procedures and functions).
CREATE ROUTINE - Privilege is needed to create stored routines (procedures and functions).
EXECUTE - Privilege is required to execute stored routines (procedures and functions).
GRANT OPTION - Privilege enables you to give to other users or remove from other users those privileges that you yourself possess.
CREATE ROUTINE - Privilege is needed to create stored routines (procedures and functions).
EXECUTE - Privilege is required to execute stored routines (procedures and functions).
GRANT OPTION - Privilege enables you to give to other users or remove from other users those privileges that you yourself possess.
Example: globalne uprawnienia
global grant apply to *.*, NOT TO database.*: ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON *.* TO temp@localhost; FLUSH PRIVILEGES;
Example: nadanie wszytkich uprawnień: WARNING: STANOWCZO ODRADZANE, NIE NALEŻY NADAWAĆ UPRAWNIEŃ WIĘKSZYCH NIŻ SĄ WYMAGANE DO POPRAWNEGO DZIAŁANIA APLIKACJI (WZGLĘDY BEZPIECZEŃSTWA)
GRANT ALL ON *.* TO temp@localhost; FLUSH PRIVILEGES;
Example: uprawnienia związane z zarządzaniem kontami użytkowników
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/adding-users.html
utworzenie konta użytkownika
temp2@localhost
z uprawnieniami do tworzenia kont (oraz przeładowania konfiguracji uprawnień)mysql -u root -p mysql
CREATE USER temp2@localhost IDENTIFIED BY 'temp2'; GRANT SUPER,RELOAD ON *.* TO temp2@localhost WITH GRANT OPTION; FLUSH PRIVILEGES;
temp3@localhost
z uprawnieniami do tworzenia kont (oraz przeładowania konfiguracji uprawnień)mysql -u temp2 --password=temp2 mysql
CREATE USER temp3@localhost IDENTIFIED BY 'temp3'; GRANT SUPER,RELOAD ON *.* TO temp3@localhost WITH GRANT OPTION; FLUSH PRIVILEGES;
temp4@localhost
z uprawnieniami do tworzenia kont (oraz przeładowania konfiguracji uprawnień)mysql -u temp3 --password=temp3 mysql
CREATE USER temp4@localhost IDENTIFIED BY 'temp4'; GRANT SUPER,RELOAD ON *.* TO temp4@localhost WITH GRANT OPTION; FLUSH PRIVILEGES;
Example: uprawnienia związane wymuszaniem zapisu i zamknięciem otwartych tabel
FLUSH TABLES; ERROR 1227 (42000): Access denied; you need the RELOAD privilege for this operation GRANT RELOAD ON *.* TO temp@localhost; FLUSH PRIVILEGES;
Example: uprawnienia związane z replikacją
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO replicant@replication_host; FLUSH PRIVILEGES;
Example: uprawnienia związane z blokowaniem tabel (for mysqldump)
GRANT LOCK TABLES ON temp.* TO temp@localhost; FLUSH PRIVILEGES;
Example: uprawnienia związane bazami danych
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, CREATE TEMPORARY TABLES, ALTER, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON temp.* TO temp@localhost; FLUSH PRIVILEGES;
Example: uprawnienia związane z procedurami / funkcjami
GRANT CREATE ROUTINE ON temp.* TO temp@localhost; GRANT ALTER ROUTINE ON temp.* TO temp@localhost; GRANT EXECUTE ON temp.* TO temp@localhost; GRANT FILE ON temp.* TO temp@localhost; FLUSH PRIVILEGES;
Example: uprawnienia związane z tabelami
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,REFERENCES,ALTER ON *.* TO temp@localhost; GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO temp@localhost; FLUSH PRIVILEGES;
#top REVOKE¶
Zobacz także REVOKE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/revoke.html
Składnia:
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ... REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
Example: Odebranie nadanych powyżej uprawnień oraz skasowanie założonych kont:
mysql -u root -p mysql
REVOKE ALL PRIVILEGES ON *.* FROM temp4@localhost; REVOKE ALL PRIVILEGES ON *.* FROM temp3@localhost; REVOKE ALL PRIVILEGES ON *.* FROM temp2@localhost; FLUSH PRIVILEGES; DROP USER temp4@localhost; DROP USER temp3@localhost; DROP USER temp2@localhost;
Example: Odebranie wszytkich uprawnień: OK: STANOWCZO WSKAZANE, NIE NALEŻY NADAWAĆ UPRAWNIEŃ WIĘKSZYCH NIŻ SĄ WYMAGANE DO POPRAWNEGO DZIAŁANIA APLIKACJI (WZGLĘDY BEZPIECZEŃSTWA)
REVOKE RELOAD ON *.* FROM temp@localhost; REVOKE ALL ON *.* FROM temp@localhost; FLUSH PRIVILEGES;
#top SHOW GRANTS¶
Zobacz także SHOW GRANTS dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/show-grants.html
Składnia:
SHOW GRANTS [FOR user]
Example:
-- comment
#top databases¶
#top DATABASE CREATE¶
Zobacz także DATABASE CREATE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/create-database.html
Składnia:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name
Example: utworzenie bazy danych oraz użytkownika wraz z hasłem oraz uprawnieniami do utworzonej bazy danych
CREATE DATABASE temp DEFAULT charset=utf8; GRANT SELECT,INSERT,UPDATE,DELETE ON temp.* TO temp@localhost IDENTIFIED BY 'temp'; GRANT SELECT,INSERT,UPDATE,DELETE ON temp.* TO temp@127.0.0.1 IDENTIFIED BY 'temp'; FLUSH PRIVILEGES;
Example: utworzenie bazy danych (jeśli nie istnieje) z określonym kodowaniem znaków oraz kodowaniem znaków stosowanych podczas porównywania (klauzule WHERE)
CREATE DATABASE IF NOT EXISTS temp DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_unicode_ci;
#top DATABASE ALTER¶
Zobacz także DATABASE ALTER dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/alter-database.html
Składnia:
ALTER {DATABASE | SCHEMA} [db_name] alter_specification ... ALTER {DATABASE | SCHEMA} db_name UPGRADE DATA DIRECTORY NAME alter_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name
Example:
ALTER DATABASE temp DEFAULT charset=utf8;
#top RENAME DATABASE - trick¶
Przydatne przy małych bazach danych.
Zmiana nazwy bazy danych bez modyfikacji struktury katalogowej (trick)
1. Zrzut polecenia tworzącego bazę danych, zmiana nazwy poleceniem
sed
i wykonanie polecenia tworzącego bazę danych.2. Zrzut polecenia tworzącego tabelę, zmiana nazwy bazy danych (jeśli tabela jest z prefixem w postaci nazwy bazy danych z kropką
baza.
) i wykonanie polecenia tworzącego tabelę3. Insert danych do tabeli w nowej bazie danych poprzez pobranie wszystkich danych ze starej bazy danych.
username="root"; password="password"; dbname1="database1"; dbname2="database2"; #echo "SHOW CREATE DATABASE $dbname1" | mysql -N -u $username --password=$password mysql | sed -e "s,^.*CREATE DATABASE,CREATE DATABASE,g" -e #echo "CREATE DATABASE $dbname2 ..." | mysql -u $username --password=$password mysql echo "SHOW CREATE DATABASE $dbname1" | mysql -N -u $username --password=$password mysql | sed -e "s,^.*CREATE DATABASE,CREATE DATABASE,g" -e 's,\\n,\n,g' -e "s,$dbname1,$dbname2,g" | mysql -u $username --password=$password mysql for table in `echo "show tables from $dbname1" | mysql -N -u $username --password=$password mysql`;do echo "table=$table"; echo "SHOW CREATE TABLE $dbname2.$table" | mysql -N -u $username --password=$password mysql | sed -e 's,^.*CREATE TABLE,CREATE TABLE,g' -e 's,\\n,\n,g' | mysql -u $username --password=$password mysql; echo "INSERT INTO $dbname2.$table SELECT * FROM $dbname1.$table" | mysql -u $username --password=$password mysql; done
Uwaga!!! Metoda zadziała tylko dla baz danych z tabelami
Engine=MyISAM
, których dane przechowywane są w plikach *.MYD
a indeksy w plikach *.MYI
, których zamknięcie (plików z danymi i indeksami) poprzez wywołanie zapytania FLUSH TABLES;
.W przypadku większych baz danych można zaryzykować modyfikację w systemie plików.
1. Zrzut polecenia tworzącego bazę danych, zmiana nazwy poleceniem
sed
i wykonanie polecenia tworzącego bazę danych.2. Zrzut polecenia tworzącego tabelę, zmiana nazwy bazy danych (jeśli tabela jest z prefixem w postaci nazwy bazy danych z kropką
baza.
) i wykonanie polecenia tworzącego tabelę3. Skopiowanie/Przeniesieniu plików (a nawet całego katalogu po uprzednim usunięciu istniejącego) do nowej lokalizacji.
username="root"; password="password"; dbname1="database1"; dbname2="database2"; #echo "SHOW CREATE DATABASE $dbname1" | mysql -N -u $username --password=$password mysql | sed -e "s,^.*CREATE DATABASE,CREATE DATABASE,g" -e #echo "CREATE DATABASE $dbname2 ..." | mysql -u $username --password=$password mysql echo "SHOW CREATE DATABASE $dbname1" | mysql -N -u $username --password=$password mysql | sed -e "s,^.*CREATE DATABASE,CREATE DATABASE,g" -e 's,\\n,\n,g' -e "s,$dbname1,$dbname2,g" | mysql -u $username --password=$password mysql for table in `echo "show tables from $dbname1" | mysql -N -u $username --password=$password mysql`;do echo "table=$table"; echo "SHOW CREATE TABLE $dbname2.$table" | mysql -N -u $username --password=$password mysql | sed -e 's,^.*CREATE TABLE,CREATE TABLE,g' -e 's,\\n,\n,g' | mysql -u $username --password=$password mysql; done
Należy wykonać tylko jeden!!! z poniższym kroków, w zależności od preferencji.
3. (wersja 1) Skopiowanie plików do nowej lokalizacji.
username="root"; password="password"; dbname1="database1"; dbname2="database2"; cp -av /srv/mysql/$dbname1/* /srv/mysql/$dbname2/
username="root"; password="password"; dbname1="database1"; dbname2="database2"; mv -av /srv/mysql/$dbname1/* /srv/mysql/$dbname2/
username="root"; password="password"; dbname1="database1"; dbname2="database2"; # skasowanie struktury danych utworzonej w krokach 1 i 2 rm -rf /srv/mysql/$dbname2 mv -av /srv/mysql/$dbname1 /srv/mysql/$dbname2
#top DATABASE DROP¶
Zobacz także DATABASE DROP dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/drop-database.html
Składnia:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
Example: usunięcie bazy danych wraz z odebraniem nadanych uprawnień do bazy danych nadanych użytkownikowi
temp@localhost
DROP DATABASE temp; REVOKE SELECT,INSERT,UPDATE,DELETE ON temp.* FROM temp@localhost; -- DROP USER temp@localhost; FLUSH PRIVILEGES;
#top schemas¶
#top SCHEMA CREATE¶
Zobacz także SCHEMA CREATE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
CREATE SCHEMA is a synonym for CREATE DATABASE.
#top SCHEMA ALTER¶
Zobacz także SCHEMA ALTER dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
ALTER SCHEMA is a synonym for ALTER DATABASE.
#top SCHEMA DROP¶
Zobacz także SCHEMA DROP dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
DROP SCHEMA is a synonym for DROP DATABASE.
#top tablespaces¶
#top TABLESPACE CREATE¶
Zobacz także TABLESPACE CREATE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/create-tablespace.html
Składnia:
CREATE TABLESPACE tablespace_name ADD DATAFILE 'file_name' USE LOGFILE GROUP logfile_group [EXTENT_SIZE [=] extent_size] [INITIAL_SIZE [=] initial_size] [AUTOEXTEND_SIZE [=] autoextend_size] [MAX_SIZE [=] max_size] [NODEGROUP [=] nodegroup_id] [WAIT] [COMMENT [=] comment_text] ENGINE [=] engine_name
Example:
-- comment
#top TABLESPACE ALTER¶
Zobacz także TABLESPACE ALTER dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/alter-tablespace.html
Składnia:
ALTER TABLESPACE tablespace_name {ADD|DROP} DATAFILE 'file_name' [INITIAL_SIZE [=] size] [WAIT] ENGINE [=] engine_name
Example:
-- comment
#top TABLESPACE DROP¶
Zobacz także TABLESPACE DROP dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/drop-tablespace.html
Składnia:
DROP TABLESPACE tablespace_name ENGINE [=] engine_name
Example:
-- comment
#top tables¶
#top TABLE CREATE¶
Zobacz także TABLE CREATE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/create-table.html
Składnia:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [partition_options] CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [partition_options] select_statement CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) } create_definition: col_name column_definition | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option] ... | {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ... | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ... | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ... | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition | CHECK (expr) column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string'] [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}] [STORAGE {DISK|MEMORY|DEFAULT}] [reference_definition] data_type: BIT[(length)] | TINYINT[(length)] [UNSIGNED] [ZEROFILL] | SMALLINT[(length)] [UNSIGNED] [ZEROFILL] | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] | INT[(length)] [UNSIGNED] [ZEROFILL] | INTEGER[(length)] [UNSIGNED] [ZEROFILL] | BIGINT[(length)] [UNSIGNED] [ZEROFILL] | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL] | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL] | DATE | TIME | TIMESTAMP | DATETIME | YEAR | CHAR[(length)] [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | VARCHAR(length) [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | BINARY[(length)] | VARBINARY(length) | TINYBLOB | BLOB | MEDIUMBLOB | LONGBLOB | TINYTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | TEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | MEDIUMTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | LONGTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | ENUM(value1,value2,value3,...) [CHARACTER SET charset_name] [COLLATE collation_name] | SET(value1,value2,value3,...) [CHARACTER SET charset_name] [COLLATE collation_name] | spatial_type index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH} index_option: KEY_BLOCK_SIZE [=] value | index_type | WITH PARSER parser_name reference_definition: REFERENCES tbl_name (index_col_name,...) [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION table_options: table_option [[,] table_option] ... table_option: ENGINE [=] engine_name | AUTO_INCREMENT [=] value | AVG_ROW_LENGTH [=] value | [DEFAULT] CHARACTER SET [=] charset_name | CHECKSUM [=] {0 | 1} | [DEFAULT] COLLATE [=] collation_name | COMMENT [=] 'string' | CONNECTION [=] 'connect_string' | DATA DIRECTORY [=] 'absolute path to directory' | DELAY_KEY_WRITE [=] {0 | 1} | INDEX DIRECTORY [=] 'absolute path to directory' | INSERT_METHOD [=] { NO | FIRST | LAST } | KEY_BLOCK_SIZE [=] value | MAX_ROWS [=] value | MIN_ROWS [=] value | PACK_KEYS [=] {0 | 1 | DEFAULT} | PASSWORD [=] 'string' | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}] | UNION [=] (tbl_name[,tbl_name]...) partition_options: PARTITION BY { [LINEAR] HASH(expr) | [LINEAR] KEY(column_list) | RANGE(expr) | LIST(expr) } [PARTITIONS num] [SUBPARTITION BY { [LINEAR] HASH(expr) | [LINEAR] KEY(column_list) } [SUBPARTITIONS num] ] [(partition_definition [, partition_definition] ...)] partition_definition: PARTITION partition_name [VALUES {LESS THAN {(expr) | MAXVALUE} | IN (value_list)}] [[STORAGE] ENGINE [=] engine_name] [COMMENT [=] 'comment_text' ] [DATA DIRECTORY [=] 'data_dir'] [INDEX DIRECTORY [=] 'index_dir'] [MAX_ROWS [=] max_number_of_rows] [MIN_ROWS [=] min_number_of_rows] [TABLESPACE [=] tablespace_name] [NODEGROUP [=] node_group_id] [(subpartition_definition [, subpartition_definition] ...)] subpartition_definition: SUBPARTITION logical_name [[STORAGE] ENGINE [=] engine_name] [COMMENT [=] 'comment_text' ] [DATA DIRECTORY [=] 'data_dir'] [INDEX DIRECTORY [=] 'index_dir'] [MAX_ROWS [=] max_number_of_rows] [MIN_ROWS [=] min_number_of_rows] [TABLESPACE [=] tablespace_name] [NODEGROUP [=] node_group_id] select_statement: [IGNORE | REPLACE] [AS] SELECT ... (Some valid select statement)
#top TABLE CREATE LIKE¶
Zobacz także TABLE CREATE LIKE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example:
CREATE TABLE temp_table_like LIKE temp_table;
#top TABLE CREATE AS¶
Zobacz także TABLE CREATE AS dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example:
Nie jest to wierna kopia struktury originalnej tabeli !!!
CREATE TABLE temp_table_like AS SELECT colname1, colname1, colname2, colname3 FROM table_like;
#top TABLE CREATE with PRIMARY KEY¶
Zobacz także TABLE CREATE with PRIMARY KEY dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: create table with PRIMARY KEY
CREATE TABLE temp_prikey ( idtemp int(11) NOT NULL, name varchar(255) NOT NULL, value varchar(255) NOT NULL, PRIMARY KEY (idtemp) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
#top TABLE CREATE with auto_increment¶
Zobacz także TABLE CREATE with auto_increment dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: create table with auto_increment
CREATE TABLE temp_autoinc ( idtemp int(11) NOT NULL auto_increment, name varchar(255) NOT NULL, value varchar(255) NOT NULL, PRIMARY KEY (idtemp) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
#top TABLE CREATE with UNIQUE KEY (singlecolumn)¶
Zobacz także TABLE CREATE with UNIQUE KEY (singlecolumn) dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: create table with UNIQUE KEY
CREATE TABLE temp_prikey ( idtemp int(11) NOT NULL, name varchar(255) NOT NULL, value varchar(255) NOT NULL, UNIQUE KEY name (name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
#top TABLE CREATE with UNIQUE KEY (multicolumn)¶
Zobacz także TABLE CREATE UNIQUE KEY (multicolumn) dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: create table with UNIQUE KEY (multicolumn)
Podczas próby utworzenia tabeli z kolumnami
name varchar(255)
, value varchar(255)
jak w powyższym przykładzie tabeli może wystąpić błąd:ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes
1. Rozwiązaniem problemu jest utworzenie klucza z użyciem części pól:
CREATE TABLE temp_unikey ( idtemp int(11) NOT NULL, name varchar(255) NOT NULL, value varchar(255) NOT NULL, UNIQUE KEY name_value (name(160),value(160)) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
2. Rozwiązaniem problemu jest utworzenie tabeli z mniejszymi polami:
CREATE TABLE temp_unikey ( idtemp int(11) NOT NULL, name varchar(160) NOT NULL, value varchar(160) NOT NULL, UNIQUE KEY name_value (name,value) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
#top TABLE CREATE with FULLTEXT KEY¶
Zobacz także TABLE CREATE with FULLTEXT KEY dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: create table with FULLTEXT KEY
CREATE TABLE words_fulltext ( idword int(9) NOT NULL auto_increment, title varchar(255) NOT NULL, body text NOT NULL, PRIMARY KEY (idword), FULLTEXT (body) ) DEFAULT CHARSET=utf8;
INSERT INTO words_fulltext (title,body) VALUES ('friend metting','my friend come to me'); INSERT INTO words_fulltext (title,body) VALUES ('MySQL Tutorial','DBMS stands for DataBase ...'); INSERT INTO words_fulltext (title,body) VALUES ('How To Use MySQL Well','After you went through a ...'); INSERT INTO words_fulltext (title,body) VALUES ('Optimizing MySQL','In this tutorial we will show ...'); INSERT INTO words_fulltext (title,body) VALUES ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'); INSERT INTO words_fulltext (title,body) VALUES ('MySQL vs. YourSQL','In the following database comparison ...'); INSERT INTO words_fulltext (title,body) VALUES ('MySQL Security','When configd properly, MySQL ...');
SELECT * FROM words_fulltext WHERE MATCH (body) AGAINST ('friend'); +--------+----------------+----------------------+ | idword | title | body | +--------+----------------+----------------------+ | 1 | friend metting | my friend come to me | +--------+----------------+----------------------+ SELECT * FROM words_fulltext WHERE MATCH (body) AGAINST ('database'); +--------+-------------------+------------------------------------------+ | idword | title | body | +--------+-------------------+------------------------------------------+ | 6 | MySQL vs. YourSQL | In the following database comparison ... | | 2 | MySQL Tutorial | DBMS stands for DataBase ... | +--------+-------------------+------------------------------------------+ SELECT * FROM words_fulltext WHERE MATCH (body) AGAINST ('come'); Empty set (0.00 sec)
#top TABLE CREATE with FOREIGN KEY¶
Zobacz także TABLE CREATE with FOREIGN KEY dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: create table with FOREIGN KEY (Engine=InnoDB)
CREATE TABLE users ( id int(11) NOT NULL, login varchar(30) NOT NULL DEFAULT '', hashed_password varchar(40) NOT NULL DEFAULT '', firstname varchar(30) NOT NULL DEFAULT '', lastname varchar(30) NOT NULL DEFAULT '', mail varchar(60) NOT NULL DEFAULT '', PRIMARY KEY (id) ) Engine=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE user_preferences ( id int(11) NOT NULL, user_id int(11) NOT NULL DEFAULT '0', others text, PRIMARY KEY (id), FOREIGN KEY (user_id) REFERENCES users (id) ) Engine=InnoDB DEFAULT CHARSET=utf8;
#top TABLE CREATE with INDEX¶
Zobacz także TABLE CREATE with INDEX dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: create table with INDEX
CREATE TABLE temp_index ( idtemp int(11) NOT NULL auto_increment, name varchar(255) NOT NULL, value varchar(255) NOT NULL, PRIMARY KEY (idtemp), INDEX nameidx USING HASH(name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
#top TABLE CREATE with partitioned¶
Zobacz także TABLE CREATE with partitioned dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: create table with: DATA DIRECTORY + INDEX DIRECTORY
echo "SHOW VARIABLES LIKE 'have_symlink'" | mysql -u root -p mysql
result:
Variable_name Value have_symlink DISABLED
enable symbolic links by server command line /etc/sysconfig/mysqld
MYSQLD_OPTIONS="--symbolic-links"
enable symbolic links by server configuration /etc/mysqld/my.cnf
#symbolic-links=0
echo "SHOW VARIABLES LIKE 'have_symlink'" | mysql -u root -p mysql
Variable_name Value have_symlink YES
create storage directory:
mkdir -p /srv/mydata/edata /srv/mydata/eindex chown -R mysql:mysql /srv/mydata
now create table with DATA DIRECTORY + INDEX DIRECTORY
mysql -u root -p mysql
DROP DATABASE IF EXISTS partitioneddb; CREATE DATABASE partitioneddb DEFAULT charset=utf8;
mysql -u root -p partitioneddb
CREATE TABLE partitionedtablemyisam ( iduser int(9) NOT NULL, startdate date NOT NULL, enddate date NOT NULL, INDEX iduser_2 USING HASH (iduser), INDEX startdate_2 USING BTREE (startdate), INDEX enddate_2 USING BTREE (enddate) ) ENGINE=MyISAM DATA DIRECTORY='/srv/mydata/edata' INDEX DIRECTORY='/srv/mydata/eindex' DEFAULT CHARSET=utf8; CREATE TABLE partitionedtableinnodb ( iduser int(9) NOT NULL, startdate date NOT NULL, enddate date NOT NULL, INDEX iduser_2 USING HASH (iduser), INDEX startdate_2 USING BTREE (startdate), INDEX enddate_2 USING BTREE (enddate) ) ENGINE=InnoDB DATA DIRECTORY='/srv/mydata/edata' INDEX DIRECTORY='/srv/mydata/eindex' DEFAULT CHARSET=utf8;
INSERT INTO partitionedtablemyisam (iduser, startdate, enddate) VALUES(1, '2011/07/04 00:00:00', '2011/07/04 01:00:00'); INSERT INTO partitionedtablemyisam (iduser, startdate, enddate) VALUES(1, '2011/07/04 02:00:00', '2011/07/04 03:00:00'); INSERT INTO partitionedtablemyisam (iduser, startdate, enddate) VALUES(1, '2011/07/04 04:00:00', '2011/07/04 05:00:00'); INSERT INTO partitionedtablemyisam (iduser, startdate, enddate) VALUES(1, '2011/07/04 05:00:00', '2011/07/04 07:00:00'); INSERT INTO partitionedtableinnodb (iduser, startdate, enddate) VALUES(1, '2011/07/04 00:00:00', '2011/07/04 01:00:00'); INSERT INTO partitionedtableinnodb (iduser, startdate, enddate) VALUES(1, '2011/07/04 02:00:00', '2011/07/04 03:00:00'); INSERT INTO partitionedtableinnodb (iduser, startdate, enddate) VALUES(1, '2011/07/04 04:00:00', '2011/07/04 05:00:00'); INSERT INTO partitionedtableinnodb (iduser, startdate, enddate) VALUES(1, '2011/07/04 05:00:00', '2011/07/04 07:00:00');
check results
ll /srv/mysql/partitioneddb/ /srv/mydata/edata/ /srv/mydata/eindex/
/srv/mydata/edata/: total 8 -rw-rw---- 1 mysql mysql 44 2013-05-19 23:20 partitionedtablemyisam.MYD /srv/mydata/eindex/: total 8 -rw-rw---- 1 mysql mysql 4096 2013-05-19 23:20 partitionedtablemyisam.MYI /srv/mysql/partitioneddb/: total 200 -rw-rw---- 1 mysql mysql 61 2013-05-19 23:19 db.opt -rw-rw---- 1 mysql mysql 8640 2013-05-19 23:19 partitionedtableinnodb.frm -rw-rw---- 1 mysql mysql 147456 2013-05-19 23:20 partitionedtableinnodb.ibd -rw-rw---- 1 mysql mysql 8640 2013-05-19 23:19 partitionedtablemyisam.frm lrwxrwxrwx 1 mysql mysql 44 2013-05-19 23:19 partitionedtablemyisam.MYD -> /srv/mydata/edata/partitionedtablemyisam.MYD lrwxrwxrwx 1 mysql mysql 45 2013-05-19 23:19 partitionedtablemyisam.MYI -> /srv/mydata/eindex/partitionedtablemyisam.MYI
#top TABLE CREATE with COLLATE without UNIQUE¶
Zobacz także TABLE CREATE with COLLATE without UNIQUE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: create table with COLLATE - without UNIQUE
SHOW COLLATION LIKE '%_cs'; SHOW COLLATION LIKE '%_ci'; SHOW COLLATION LIKE 'latin2%'; SHOW COLLATION LIKE 'utf8%'; SET NAMES 'utf8' COLLATE 'utf8_bin'; SET CHARACTER SET 'utf8';
CREATE TABLE words_cs ( idword int(9) NOT NULL auto_increment, wordname varchar(255) character set utf8 collate utf8_bin NOT NULL, PRIMARY KEY (idword) ) DEFAULT CHARSET=utf8; CREATE TABLE words_ci ( idword int(9) NOT NULL auto_increment, wordname varchar(255) character set utf8 collate utf8_general_ci NOT NULL, PRIMARY KEY (idword) ) DEFAULT CHARSET=utf8;
INSERT INTO words_cs (wordname) VALUES ('ZAJĄC'); INSERT INTO words_cs (wordname) VALUES ('zając'); INSERT INTO words_cs (wordname) VALUES ('ZaJąC'); INSERT INTO words_cs (wordname) VALUES ('zAjĄc'); INSERT INTO words_ci (wordname) VALUES ('ZAJĄC'); INSERT INTO words_ci (wordname) VALUES ('zając'); INSERT INTO words_ci (wordname) VALUES ('ZaJąC'); INSERT INTO words_ci (wordname) VALUES ('zAjĄc');
SELECT * FROM words_cs; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | | 2 | zając | | 3 | ZaJąC | | 4 | zAjĄc | +--------+----------+ SELECT * FROM words_ci; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | | 2 | zając | | 3 | ZaJąC | | 4 | zAjĄc | +--------+----------+ SELECT * FROM words_cs WHERE wordname LIKE 'ZAJĄC'; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | +--------+----------+ SELECT * FROM words_ci WHERE wordname LIKE 'ZAJĄC'; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | | 2 | zając | | 3 | ZaJąC | | 4 | zAjĄc | +--------+----------+ SELECT * FROM words_cs WHERE wordname LIKE 'ZAJĄC' COLLATE utf8_polish_ci; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | | 2 | zając | | 3 | ZaJąC | | 4 | zAjĄc | +--------+----------+ SELECT * FROM words_ci WHERE wordname LIKE 'ZAJĄC' COLLATE utf8_polish_ci; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | | 2 | zając | | 3 | ZaJąC | | 4 | zAjĄc | +--------+----------+ SELECT * FROM words_cs WHERE wordname LIKE 'ZAJĄC' COLLATE utf8_bin; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | +--------+----------+ SELECT * FROM words_ci WHERE wordname LIKE 'ZAJĄC' COLLATE utf8_bin; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | +--------+----------+ SELECT * FROM words_cs WHERE LOWER(wordname)=LOWER('ZAJĄC'); +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | | 2 | zając | | 3 | ZaJąC | | 4 | zAjĄc | +--------+----------+ SELECT * FROM words_ci WHERE LOWER(wordname)=LOWER('ZAJĄC'); +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | | 2 | zając | | 3 | ZaJąC | | 4 | zAjĄc | +--------+----------+
#top TABLE CREATE with COLLATE with UNIQUE¶
Zobacz także TABLE CREATE with COLLATE with UNIQUE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: create table with COLLATE - with UNIQUE
SHOW COLLATION LIKE '%_cs'; SHOW COLLATION LIKE '%_ci'; SHOW COLLATION LIKE 'latin2%'; SHOW COLLATION LIKE 'utf8%'; SET NAMES 'utf8' COLLATE 'utf8_bin'; SET CHARACTER SET 'utf8';
CREATE TABLE words_cs ( idword int(9) NOT NULL auto_increment, wordname varchar(255) character set utf8 collate utf8_bin NOT NULL, PRIMARY KEY (idword), UNIQUE KEY wordname (wordname) ) DEFAULT CHARSET=utf8; CREATE TABLE words_ci ( idword int(9) NOT NULL auto_increment, wordname varchar(255) character set utf8 collate utf8_general_ci NOT NULL, PRIMARY KEY (idword), UNIQUE KEY wordname (wordname) ) DEFAULT CHARSET=utf8;
INSERT INTO words_cs (wordname) VALUES ('ZAJĄC'); INSERT INTO words_cs (wordname) VALUES ('zając'); INSERT INTO words_cs (wordname) VALUES ('ZaJąC'); INSERT INTO words_cs (wordname) VALUES ('zAjĄc'); Query OK, 1 row affected (0.00 sec) Query OK, 1 row affected (0.00 sec) Query OK, 1 row affected (0.00 sec) Query OK, 1 row affected (0.00 sec) INSERT INTO words_ci (wordname) VALUES ('ZAJĄC'); INSERT INTO words_ci (wordname) VALUES ('zając'); INSERT INTO words_ci (wordname) VALUES ('ZaJąC'); INSERT INTO words_ci (wordname) VALUES ('zAjĄc'); Query OK, 1 row affected (0.00 sec) ERROR 1062 (23000): Duplicate entry 'zając' for key 2 ERROR 1062 (23000): Duplicate entry 'zając' for key 2 ERROR 1062 (23000): Duplicate entry 'zając' for key 2
SELECT * FROM words_cs; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | | 2 | zając | | 3 | ZaJąC | | 4 | zAjĄc | +--------+----------+ SELECT * FROM words_ci; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | +--------+----------+ SELECT * FROM words_cs WHERE wordname LIKE 'ZAJĄC'; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | +--------+----------+ SELECT * FROM words_ci WHERE wordname LIKE 'ZAJĄC'; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | +--------+----------+ SELECT * FROM words_cs WHERE wordname LIKE 'ZAJĄC' COLLATE utf8_polish_ci; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | | 2 | zając | | 3 | ZaJąC | | 4 | zAjĄc | +--------+----------+ SELECT * FROM words_ci WHERE wordname LIKE 'ZAJĄC' COLLATE utf8_polish_ci; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | +--------+----------+ SELECT * FROM words_cs WHERE wordname LIKE 'ZAJĄC' COLLATE utf8_bin; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | +--------+----------+ SELECT * FROM words_ci WHERE wordname LIKE 'ZAJĄC' COLLATE utf8_bin; +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | +--------+----------+ SELECT * FROM words_cs WHERE LOWER(wordname)=LOWER('ZAJĄC'); +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | | 2 | zając | | 3 | ZaJąC | | 4 | zAjĄc | +--------+----------+ SELECT * FROM words_ci WHERE LOWER(wordname)=LOWER('ZAJĄC'); +--------+----------+ | idword | wordname | +--------+----------+ | 1 | ZAJĄC | +--------+----------+
#top TABLE ALTER¶
Zobacz także TABLE ALTER dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
Składnia:
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name [alter_specification [, alter_specification] ...] [partition_options] alter_specification: table_options | ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ] | ADD [COLUMN] (col_name column_definition,...) | ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ... | ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option] ... | ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ... | ADD FULLTEXT [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ... | ADD SPATIAL [INDEX|KEY] [index_name] (index_col_name,...) [index_option] ... | ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} | CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name] | MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name] | DROP [COLUMN] col_name | DROP PRIMARY KEY | DROP {INDEX|KEY} index_name | DROP FOREIGN KEY fk_symbol | DISABLE KEYS | ENABLE KEYS | RENAME [TO|AS] new_tbl_name | ORDER BY col_name [, col_name] ... | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] | [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name] | DISCARD TABLESPACE | IMPORT TABLESPACE | ADD PARTITION (partition_definition) | DROP PARTITION partition_names | COALESCE PARTITION number | REORGANIZE PARTITION [partition_names INTO (partition_definitions)] | ANALYZE PARTITION {partition_names | ALL} | CHECK PARTITION {partition_names | ALL} | OPTIMIZE PARTITION {partition_names | ALL} | REBUILD PARTITION {partition_names | ALL} | REPAIR PARTITION {partition_names | ALL} | PARTITION BY partitioning_expression | REMOVE PARTITIONING index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH} index_option: KEY_BLOCK_SIZE [=] value | index_type | WITH PARSER parser_name table_options: table_option [[,] table_option] ... (see CREATE TABLE options) partition_options: (see CREATE TABLE options)
#top TABLE ALTER with PRIMARY KEY¶
Zobacz także TABLE ALTER with PRIMARY KEY dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: alter table with PRIMARY KEY
CREATE TABLE temp_prikey ( idtemp int(11) NOT NULL, name varchar(255) NOT NULL, value varchar(255) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ALTER TABLE temp_prikey ADD PRIMARY KEY (idtemp);
#top TABLE ALTER with auto increment¶
Zobacz także TABLE ALTER with auto_increment dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: alter table with auto increment
CREATE TABLE temp_prikey ( idtemp int(11) NOT NULL, name varchar(255) NOT NULL, value varchar(255) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ALTER TABLE temp_prikey ADD PRIMARY KEY (idtemp); ALTER TABLE temp_prikey CHANGE idtemp idtemp int(11) NOT NULL auto_increment;
#top TABLE ALTER with UNIQUE KEY (singlecolumn)¶
Zobacz także TABLE ALTER with UNIQUE KEY (singlecolumn) dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: alter table with UNIQUE KEY
CREATE TABLE temp_unikey ( idtemp int(11) NOT NULL, name varchar(255) NOT NULL, value varchar(255) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ALTER TABLE temp_unikey ADD UNIQUE KEY name (name);
#top TABLE ALTER with UNIQUE KEY (multicolumn)¶
Zobacz także TABLE ALTER UNIQUE KEY (multicolumn) dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: alter table with UNIQUE KEY (multicolumn)
Podczas próby utworzenia unikatowego klucza na tabeli z kolumnami
name varchar(255)
, value varchar(255)
jak w powyższym przykładzie tabeli może wystąpić błąd:ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes
1. Rozwiązaniem problemu jest utworzenie klucza z użyciem części pól:
CREATE TABLE temp_unikey ( idtemp int(11) NOT NULL, name varchar(255) NOT NULL, value varchar(255) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ALTER TABLE temp_unikey ADD UNIQUE KEY name_value (name(160),value(160));
2. Rozwiązaniem problemu jest utworzenie tabeli z mniejszymi polami:
CREATE TABLE temp_unikey ( idtemp int(11) NOT NULL, name varchar(160) NOT NULL, value varchar(160) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ALTER TABLE temp_unikey ADD UNIQUE KEY name_value (name,value);
#top TABLE ALTER with FULLTEXT KEY¶
Zobacz także TABLE ALTER with FULLTEXT KEY dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: alter table with FULLTEXT KEY
CREATE TABLE words_fulltext ( idword int(9) NOT NULL auto_increment, title varchar(255) character set utf8 collate utf8_general_ci NOT NULL, body text character set utf8 collate utf8_general_ci NOT NULL, PRIMARY KEY (idword) ) DEFAULT CHARSET=utf8; ALTER TABLE words_fulltext ADD FULLTEXT KEY words_fulltext_body_idx (body);
#top TABLE ALTER with FOREIGN KEY¶
Zobacz także TABLE ALTER with FOREIGN KEY dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: alter table add FOREIGN KEY (Engine=InnoDB)
CREATE TABLE users ( id int(11) NOT NULL, login varchar(30) NOT NULL DEFAULT '', hashed_password varchar(40) NOT NULL DEFAULT '', firstname varchar(30) NOT NULL DEFAULT '', lastname varchar(30) NOT NULL DEFAULT '', mail varchar(60) NOT NULL DEFAULT '', PRIMARY KEY (id) ) Engine=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE user_preferences ( id int(11) NOT NULL, user_id int(11) NOT NULL DEFAULT '0', others text, PRIMARY KEY (id) ) Engine=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE user_preferences ADD FOREIGN KEY (user_id) REFERENCES users (id);
#top TABLE ALTER with INDEX¶
Zobacz także TABLE ALTER with INDEX dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Example: alter table add INDEX
CREATE TABLE temp_index ( idtemp int(11) NOT NULL auto_increment, name varchar(255) NOT NULL, value varchar(255) NOT NULL, PRIMARY KEY (idtemp) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE INDEX temp_index_nameidx USING HASH ON temp_index (name);
#top TABLE ALTER with partitioned¶
Zobacz także TABLE ALTER with partitioned dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
#top TABLE ALTER with COLLATE without UNIQUE¶
Zobacz także TABLE ALTER with COLLATE without UNIQUE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
#top TABLE ALTER with COLLATE with UNIQUE¶
Zobacz także TABLE ALTER with COLLATE with UNIQUE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
#top TABLE RENAME¶
Zobacz także TABLE RENAME dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/rename-table.html
Składnia:
RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ...
Example: rename table
ALTER TABLE temp_table RENAME TO temp_table2; ALTER TABLE temp_table2 RENAME TO temp_table;
#top TABLE TRUNCATE¶
Zobacz także TABLE TRUNCATE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/truncate-table.html
TRUNCATE TABLE empties a table completely. Logically, this is equivalent to a DELETE statement that deletes all rows, but there are practical differences under some circumstances.
Składnia:
TRUNCATE [TABLE] tbl_name
Example:
TRUNCATE TABLE temp_table;
#top TABLE DROP¶
Zobacz także TABLE DROP dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/drop-table.html
Składnia:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE]
Example:
DROP TABLE temp_prikey; DROP TABLE user_preferences; DROP TABLE users; DROP TABLE temp_index; DROP TABLE words_cs; DROP TABLE words_ci; DROP TABLE words_fulltext;
#top sequences¶
MySQL nie posiada obsługi sekwencji/generatorów wykorzystywanych do tworzenia pól zawierających wartość domyślną inkrementowaną (używaną często jako klucz główny) przy każdym wstawiany rekordu do tabeli. Taka funkcjonalność w MySQL została zaimplementowana poprzez atrybut auto_increment dla kolumny typu numerycznego.
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/create-table.html
(An integer or floating-point column can have the additional attribute AUTO_INCREMENT. When you insert a value of NULL (recommended) or 0 into an indexed AUTO_INCREMENT column, the column is set to the next sequence value. Typically this is value+1, where value is the largest value for the column currently in the table. AUTO_INCREMENT sequences begin with 1.)
#top SEQUENCE CREATE¶
Zobacz także SEQUENCE CREATE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Brak obsługi tworzenia sekwencji/generatorów!!! Przeczytaj komentarz powyżej - Sekwencje.
#top SEQUENCE ALTER¶
Zobacz także SEQUENCE ALTER dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Brak obsługi tworzenia sekwencji/generatorów!!! Przeczytaj komentarz powyżej - Sekwencje.
#top SEQUENCE DROP¶
Zobacz także SEQUENCE DROP dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Brak obsługi tworzenia sekwencji/generatorów!!! Przeczytaj komentarz powyżej - Sekwencje.
#top indexes¶
#top INDEX CREATE¶
Zobacz także INDEX CREATE dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/create-index.html
Składnia:
CREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...) [index_option] ... index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH} index_option: KEY_BLOCK_SIZE [=] value | index_type | WITH PARSER parser_name
Example: alter table add INDEX
CREATE TABLE temp_index ( idtemp int(11) NOT NULL auto_increment, name varchar(255) NOT NULL, value varchar(255) NOT NULL, PRIMARY KEY (idtemp) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE INDEX temp_index_nameidx USING HASH ON temp_index (name);
#top INDEX ALTER¶
Zobacz także INDEX ALTER dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Brak obsługi modyfikacji indeksów!!! Zobacz tworzenie i usuwanie indeksów: INDEX CREATE i INDEX DROP.
#top INDEX DROP¶
Zobacz także INDEX DROP dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/drop-index.html
Składnia:
DROP [ONLINE|OFFLINE] INDEX index_name ON tbl_name
Example: alter table drop INDEX
DROP INDEX temp_index_nameidx ON temp_index;
#top functions¶
#top Functions and Operators¶
Zobacz także Functions and Operators dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/functions.html
Example:
-- comment
#top DATA Manipulations¶
#top SELECT with LIMIT and OFFSET¶
Zobacz także SELECT with LIMIT and OFFSET dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/select.html#id757300
Składnia:
SELECT ... [LIMIT {[offset,] row_count | row_count OFFSET offset}]
Example:
CREATE TABLE temp_limit ( idtemp int(9) NOT NULL, name varchar(255) NOT NULL, value varchar(255) NOT NULL, PRIMARY KEY (idtemp) ); INSERT INTO temp_limit(idtemp,name,value) VALUES(1,'name-01','val-01'); INSERT INTO temp_limit(idtemp,name,value) VALUES(2,'name-02','val-02'); INSERT INTO temp_limit(idtemp,name,value) VALUES(3,'name-03','val-03'); INSERT INTO temp_limit(idtemp,name,value) VALUES(4,'name-04','val-04'); INSERT INTO temp_limit(idtemp,name,value) VALUES(5,'name-05','val-05'); INSERT INTO temp_limit(idtemp,name,value) VALUES(6,'name-06','val-06'); INSERT INTO temp_limit(idtemp,name,value) VALUES(7,'name-07','val-07'); INSERT INTO temp_limit(idtemp,name,value) VALUES(8,'name-08','val-08'); INSERT INTO temp_limit(idtemp,name,value) VALUES(9,'name-09','val-09');
Po wykonaniu powyższych zapytań mających na celu utworzenie tabeli oraz dodaniu przykładowych danych można wykonać poniższe zapytania w celu sprawdzenia działania klauzul LIMIT przy wyświetlaniu danych z tabeli:
SELECT * FROM temp_limit LIMIT 3; SELECT * FROM temp_limit LIMIT 5; SELECT * FROM temp_limit LIMIT 7;
Uzyskany rezultat powinien być analogiczny do poniższego:
idtemp name value 1 name-01 val-01 2 name-02 val-02 3 name-03 val-03 idtemp name value 1 name-01 val-01 2 name-02 val-02 3 name-03 val-03 4 name-04 val-04 5 name-05 val-05 idtemp name value 1 name-01 val-01 2 name-02 val-02 3 name-03 val-03 4 name-04 val-04 5 name-05 val-05 6 name-06 val-06 7 name-07 val-07
Po wykonaniu powyższych zapytań mających na celu utworzenie tabeli oraz dodaniu przykładowych danych można wykonać poniższe zapytania w celu sprawdzenia działania klauzul LIMIT przy wyświetlaniu danych z tabeli:
SELECT * FROM temp_limit LIMIT 0, 5; SELECT * FROM temp_limit LIMIT 3, 5; SELECT * FROM temp_limit LIMIT 6, 5;
Uzyskany rezultat powinien być analogiczny do poniższego:
idtemp name value 2 name-02 val-02 3 name-03 val-03 4 name-04 val-04 5 name-05 val-05 6 name-06 val-06 idtemp name value 5 name-05 val-05 6 name-06 val-06 7 name-07 val-07 8 name-08 val-08 9 name-09 val-09 idtemp name value 8 name-08 val-08 9 name-09 val-09
Po wykonaniu powyższych zapytań mających na celu utworzenie tabeli oraz dodaniu przykładowych danych można wykonać poniższe zapytania w celu sprawdzenia działania klauzul LIMIT przy wyświetlaniu danych z tabeli:
SELECT * FROM temp_limit LIMIT 5 OFFSET 0; SELECT * FROM temp_limit LIMIT 5 OFFSET 3; SELECT * FROM temp_limit LIMIT 5 OFFSET 6;
Uzyskany rezultat powinien być analogiczny do poniższego:
idtemp name value 2 name-02 val-02 3 name-03 val-03 4 name-04 val-04 5 name-05 val-05 6 name-06 val-06 idtemp name value 5 name-05 val-05 6 name-06 val-06 7 name-07 val-07 8 name-08 val-08 9 name-09 val-09 idtemp name value 8 name-08 val-08 9 name-09 val-09
#top WHERE IN subselect with multiple columns¶
Zobacz także WHERE IN subselect with multiple columns dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
#top Deleting duplicates rows¶
Zobacz także Deleting duplicates rows dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
#top REPLACE INTO¶
Zobacz także REPLACE INTO dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
http://dev.mysql.com/doc/refman/5.1/en/replace.html
http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html
Składnia:
REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...Or:
REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name SET col_name={expr | DEFAULT}, ...Or:
REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)] SELECT ...Składnia:
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
Example:
-- comment
#top GROUP with CONCAT¶
Zobacz także REPLACE INTO dla: PostgreSQL | MySQL | Firebird | SQLite | MsSQL | Oracle | DB2 | Informix | Sybase
Dokumentacja MySQL:
https://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_group-concat
Składnia:
-- comment
Zmodyfikowany ostatnio: 2017/11/01 23:59:01 (7 lat temu),
textsize: 86,4 kB,
htmlsize: 155 kB
Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników