Thursday, August 25, 2011

Mysql command line commands - Linux


To login from linux command prompt


#mysql -h hostname -u root -p

Create a database on the sql server


mysql> create database [databasename];


List all databases on the sql server


mysql> show databases;


Switch to a database


mysql> use [db name];


To see all the tables in the db.

mysql> show tables;


To see database's field formats


mysql> describe [table name];


To delete a db


mysql> drop database [database name];


To delete a table


mysql> drop table [table name];

Show all data in a table


mysql> SELECT * FROM [table name];


Returns the columns and column information pertaining to the designated table


mysql> show columns from [table name];


Show certain selected rows with the value "rao"


mysql> SELECT * FROM [table name] WHERE [field name] = "rao";


Show all records containing the name "rao" AND the phone number '98467258'.


mysql> SELECT * FROM [table name] WHERE name = "rao" AND phone_number = '98467258';


Show all records not containing the name "rao" AND the phone number '98467258' order by the phone_number field.


mysql> SELECT * FROM [table name] WHERE name != "rao" AND phone_number = '98467258' order by phone_number;


Show all records starting with the letters 'bob' AND the phone number '3444444'.


mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444';


Show all records starting with the letters 'bob' AND the phone number '3444444' limit to records 1 through 5.


mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444' limit 1,5;


Use a regular expression to find records. Use "REGEXP BINARY" to force case-sensitivity. This finds any record beginning with a.


mysql> SELECT * FROM [table name] WHERE rec RLIKE "^a";


Show unique records


mysql> SELECT DISTINCT [column name] FROM [table name];


Show selected records sorted in an ascending (asc) or descending (desc)


mysql> SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;


Return number of rows


mysql> SELECT COUNT(*) FROM [table name];


Sum column


mysql> SELECT SUM(*) FROM [table name];

To update info already in a table


mysql> UPDATE [table name] SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where [field name] = 'user';


Delete a row(s) from a table


mysql> DELETE from [table name] where [field name] = 'whatever';


Update database permissions/privilages


mysql> flush privileges;


Delete a column


mysql> alter table [table name] drop column [column name];


Add a new column to db


mysql> alter table [table name] add column [new column name] varchar (20);


Change column name


mysql> alter table [table name] change [old column name] [new column name] varchar (50);


Make a unique column so you get no dupes


mysql> alter table [table name] add unique ([column name]);


Make a column bigger


mysql> alter table [table name] modify [column name] VARCHAR(3);


Delete unique from table


mysql> alter table [table name] drop index [colmn name];


Load a CSV file into a table


mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);


Dump all databases for backup. Backup file is sql commands to recreate all db's


# [mysql dir]/bin/mysqldump -u root -ppassword --opt >/tmp/alldatabases.sql


Dump one database for backup


# [mysql dir]/bin/mysqldump -u username -ppassword --databases databasename >/tmp/databasename.sql


Dump a table from a database


# [mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql


Restore database (or database table) from backup


# [mysql dir]/bin/mysql -u username -ppassword databasename < /tmp/databasename.sql