!!!MySql Tips
We often integrate with various databases and are often stumbling around for the right syntax. This is our [Cheat Sheet] for [MySQL] commands that we have found useful.
The UPPERCASE Values preceded by $ are names of values that would be substituted.
!!Loging in
{{{
mysql --user=$USERNAME --password=$PASSWORD --host=$DBHOST
}}}
!!Adding users
The following will allow the user to have all privileges but can only login to the host from the console. (ie. no remote connections)
{{{
GRANT ALL PRIVILEGES ON *.* TO '$USERNAME'@'localhost' IDENTIFIED BY '$PASSWORD' WITH GRANT OPTION;
}}}
The following will allow the user to login from any host.
{{{
GRANT ALL PRIVILEGES ON *.* TO '$USERNAME'@'%' IDENTIFIED BY '$PASSWORD' WITH GRANT OPTION;
}}}
!!Selecting a database:
{{{
USE $DATABASE;
}}}
!!Listing databases:
{{{
SHOW DATABASES;
}}}
!!Listing tables in a db:
{{{
SHOW TABLES;
}}}
!!Describing the format of a table:
{{{
DESCRIBE $TABLE;
}}}
!!Creating a database:
{{{
CREATE DATABASE $DATABASE;
}}}
!!Creating a table:
{{{
CREATE TABLE $TABLE ($FIELDNAMEONE TYPE(SIZE), $FIELDNAMETWO TYPE(SIZE));
Ex: mysql> CREATE TABLE pets (name VARCHAR(20), sex CHAR(1), birth DATE);
}}}
!!Load tab-delimited data into a table:
{{{
LOAD DATA LOCAL INFILE "infile.txt" INTO TABLE $TABLE;
(Use \n for NULL)
}}}
!!Inserting one row at a time:
{{{
INSERT INTO $TABLE VALUES ('MyName', 'MyOwner', '2002-08-31');
(Use NULL for NULL)
}}}
!!!Retrieving information (general):
Retrieving specified Columns
{{{
SELECT $COLUMNNAME FROM $TABLE WHERE $CONDITIONS;
}}}
!!All values:
{{{
SELECT * FROM $TABLE;
}}}
!!Some values:
{{{
SELECT * FROM $TABLE WHERE $COLUMNNAME = "$VALUE";
}}}
!!Multiple critera
{{{
SELECT * FROM $TABLE WHERE $COLUMNNAMEONE = "$VALUE1" AND $COLUMNNAMETWO = "$VALUE2";
}}}
!!Reloading a new data set into existing table
{{{
SET AUTOCOMMIT=1; # used for quick recreation of table
DELETE FROM $TABLE;
LOAD DATA LOCAL INFILE "infile.txt" INTO TABLE $TABLE;
}}}
!!Fixing all records with a certain value
{{{
UPDATE $TABLE SET $COLUMNNAME = "$VALUEONE" WHERE $COLUMNNAME = "$VALUE2";
}}}
!!Retrieving unique output records
{{{
SELECT DISTINCT $COLUMNNAME FROM $TABLE;
}}}
!!Sorting
{{{
SELECT $COLUMNNAME1, $COLUMNNAME2 FROM $TABLE ORDER BY $COLUMNNAME2;
!!Sorting Backwards
{{{
SELECT $COLUMNNAME1, $COLUMNNAME2 FROM $TABLE ORDER BY $COLUMNNAME2 DESC;
}}}
!!Date calculations
{{{
SELECT CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(date_col)) AS time_diff [FROM $TABLE];
MONTH(some_date) extracts the month value and DAYOFMONTH() extracts day.
}}}
!!Pattern Matching
{{{
SELECT * FROM $TABLE WHERE $COLUMNNAME LIKE "blah%";
(% is wildcard - arbitrary # of chars)
Find 5-char values: SELECT * FROM $TABLE WHERE $COLUMNNAME like "_____";
(_ is any single character)
Extended Regular Expression Matching
SELECT * FROM $TABLE WHERE $COLUMNNAME RLIKE "^b$";
(. for char, [...] for char class, * for 0 or more instances ^ for beginning, {n} for repeat n times, and $ for end)
(RLIKE or REGEXP)
To force case-sensitivity, use "REGEXP BINARY"
}}}
!!Counting Rows
{{{
SELECT COUNT(*) FROM $TABLE;
}}}
!!Grouping with Counting
{{{
SELECT $COLUMNNAME, COUNT(*) FROM $TABLE GROUP BY $COLUMNNAME;
(GROUP BY groups together all records for each 'owner')
}}}
!!Selecting from multiple tables
{{{
SELECT $TABLE1.$COLUMNNAME1, $VALUE1 FROM $TABLE, $TABLE2 WHERE $TABLE1.$COLUMNNAME1 = TABLE2.VALUE2;
SELECT pet.name, comment FROM pet, event WHERE pet.name = event.name;
These just do not look right........
(You can join a $TABLE to itself to compare by using 'AS')
}}}
!!Currently selected database
{{{
SELECT DATABASE();
}}}
!!Maximum value
{{{
SELECT MAX($COLUMNNAME) AS $LABLENAME FROM $TABLE;
}}}
!!Auto-incrementing rows
{{{
CREATE TABLE $TABLE ($COLUMNNAME1 INT NOT NULL AUTO_INCREMENT, $COLUMNNAME2 CHAR(10) NOT NULL);
INSERT INTO $TABLE ($COLUMNNAME2) VALUES ("tom"),("dick"),("harry");
}}}
!!Adding a column to an already-created table
{{{
ALTER TABLE $TABLE ADD COLUMN [$NEWCOLUMNNAME syntax(int, char etc)] AFTER $COLUMNNAME;
}}}
!!Removing a column
{{{
ALTER $TABLE tbl DROP COLUMN col;
(Full ALTER $TABLE syntax available at mysql.com.)
}}}
!!Batch mode (feeding in a script)
{{{
# mysql --user=$USERNAME --password=$PASSWORD < batch_file
(Use -t for nice table layout and -vvv for command echoing.)
}}}
!!Backing up a database with mysqldump
{{{
# mysqldump --opt -u username -p database > database_backup.sql
(Use 'mysqldump --opt --all-databases > all_backup.sql' to backup everything.)
(More info at MySQL's docs.)
}}}
!! More Information
There might be more information for this subject on one of the following:
[{ReferringPagesPlugin before='*' after='\n' }]