MySQL: Reading SQL statements from file

This entry is part 6 of 26 in the series Learn MySQL

If we have a script file such as insert.sql with the statement:

insert into artist (artiste, album, price) values ('Madonna','Immaculate',8.00)

We can execute this script file insert.sql on the command line.

>mysql allartist < insert.sql

The allartist is the database.

insert1

MySQL: Read a file from a session

This entry is part 7 of 26 in the series Learn MySQL

Alternatively, to read a file of SQL statements from within a mysql session, use a source filename command (or \. filename, which is the same).

mysql> source insert.sql

mysql>\. insert.sql

The 2 mysql statements inside the file insert.sql are:

use allartist
insert into artist (artiste, album, price) values ('Madonna','Immaculate',8.00)

session

MySQL: Using mysqldump to backup database

This entry is part 8 of 26 in the series Learn MySQL

The mysqldump utility generates database backups by writing a set of SQL that you can use to recreate the database.

To dump out the database, we use >.  The allartist is the database name.

c:\>mysqldump allartist > dump.sql

dump

If you look at the dump.dat file, it has format similar to below:

[expand title=’Sample dump.dat’]
-- MySQL dump 10.13  Distrib 5.6.12, for Win32 (x86)
--
-- Host: localhost    Database: allartist
-- ------------------------------------------------------
-- Server version	5.6.12-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `artist`
--

DROP TABLE IF EXISTS `artist`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `artist` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `artiste` varchar(30) DEFAULT NULL,
  `album` varchar(50) DEFAULT NULL,
  `price` decimal(3,2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `artist`
--

LOCK TABLES `artist` WRITE;
/*!40000 ALTER TABLE `artist` DISABLE KEYS */;
INSERT INTO `artist` VALUES (1,'Rod Stewart','Maggie May',8.90),(2,'New Order','Substance',7.50),(3,'Nirvana','Smell Like Teen Spirit',9.80),(15,'Madonna','Immaculate',8.00),(16,'Madonna','Immaculate',8.00);
/*!40000 ALTER TABLE `artist` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2014-07-27 23:11:04
[/expand]

To retrieve the database allartist using dump.dat, we execute the following command.

Now to dump in the database, we use <.

c:\>mysql -h localhost allartist < dump.dat

dump1

 

MySQL: Using user-defined variables

This entry is part 9 of 26 in the series Learn MySQL

We can assign a value returned from a select statement to a user-defined variable.

This allows us to refer to it in later statements in the same session.

Those user-defined variables will not persist across sessions.

select @max_price := max(price) from artist;
select @max_price;

The max price was assigned to variable @max_price.

If you execute the 2 statements on Toad, the screenshot will look like below:

sql_variables

 

 

MySQL: Handling special characters

This entry is part 10 of 26 in the series Learn MySQL

We always encounter special characters such as quotes or backslashes in a string of characters.

Say we need to insert an album with the title Tha’s Life.

It contains a single quote and to make the statement legal, the quote could be escaped by preceding it with a backslash or a  single quote.

insert into artist (artiste, album, price) values ('Frank Sinatra','That\'s Life',8.20)

insert into artist (artiste, album, price) values ('Frank Sinatra','That''s Life',8.20)