---
title: MySQL Notes
h1: MySQL Notes
description: Things I don't want to forget about MySQL.
author: JWRR
date: January 15, 2019
theme: a
...
[View markdown](mysql-notes.md)
{{ toc }}
## Create MySQL Database on hostgator
The following link walks through how to use Hostgator's CPanel Database
Wizard to create a MySQL database. It also walks through how to create a
user account and password for the database (each database will have its own
user and it is NOT the same to your linux account.
Create database with cpanel database wizard
## Run MySQL client from command line
The following link walks through how to setup putty to access your Hostgator
account with SSH.
[Connect to Hostgator server with Putty](http://jwrr.com/content/Hostgator-SSH-with-PuTTY)
## Start mysql client from the Putty command line
Hostgator has started the MySQL server program and you as a shared user can't
start/stop the server (as far as I know). But you can start the mysql client
from the command line. Eventually you probably won't used the mysql command
line and you'll probably do what you need from php.
Start mysql client. **-u** is the your new username that you created when
you setup the database. **-p** just causes the mysql to ask for your password.
```
mysql -u jwrr_dummy -p
```
You should see the mysql welcome screen and the mysql prompt.
## Show MySQL Databases
Use the [show databases](http://dev.mysql.com/doc/refman/5.0/en/show-tables.html)
command to see what databases are available. You should see your new database.
In this example you should see **jwrr_dummy**.
Important Note: The semicolon **;** is required at the end of **EVERY**
mysql command. If you see the **->** prompt, just enter **;** .
```
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| jwrr_dummy |
+--------------------+
2 rows in set (0.08 sec)
```
## Select Your MySQL Database
The **use** command selects the database you want to use
```
use jwrr_dummy;
```
## Add MySQL Table to Database
Use the [Create Table](http://dev.mysql.com/doc/refman/5.0/en/create-table.html)
command to add a table to the database.
In this example a table is create that has two fields (columns). The first
field is 'id' and it is a unique identifying key. I made it of type **bigint**
but [mysql has many integer types](http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html).
The second field is the name and is a 32-character string.
```
create table users (id bigint not null auto_increment primary key, name char(32));
```
## Add Column Field to Existing MySQL Table
The [Alter Table](http://dev.mysql.com/doc/refman/5.0/en/alter-table.html) lets
you add or delete columns from your MySQL table.
```
mysql> alter table users add (strength tinyint);
Current database: jwrr_dummy
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
```
## Show MySQL Table Columns, Fields, Schema
The [Show Columns](http://dev.mysql.com/doc/refman/5.0/en/show-columns.html)
```
mysql> show columns from users;
Current database: jwrr_dummy
+----------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| name | char(32) | YES | | NULL | |
| strength | tinyint(4) | YES | | NULL | |
+----------+------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
```
## Insert Entry to MySQL Table
Use the [MySQL Insert Command](http://dev.mysql.com/doc/refman/5.5/en/insert.html)
to add entries into a table. The followng example adds one entry into the
table, and then adds multiple entries into the table.
```
insert into users (name,strength) values ('george',5);
insert into users (name,strength) values ('abe',6), ('teddy',7);
```
## Search MySQL Table and Select Columns and Rows
The [MySQL Select Command](http://dev.mysql.com/doc/refman/5.0/en/select.html)
is the main way to read the database and select the entries and fields of interest.
The following example selects all the columns and rows.
```
# Select all columns and rows
mysql> select * from users;
+----+--------+----------+
| id | name | strength |
+----+--------+----------+
| 1 | george | 6 |
| 2 | abe | 8 |
| 3 | teddy | 13 |
+----+--------+----------+
3 rows in set (0.00 sec)
```
This example selects specific columns from all rows.
```
mysql> select name,strength from users;
+--------+----------+
| name | strength |
+--------+----------+
| george | 6 |
| abe | 8 |
| teddy | 13 |
+--------+----------+
3 rows in set (0.00 sec)
```
The following selects all entries with strength less than or equal to 8, and returns just the names.
```
mysql> select name from users where strength<=8;
+--------+
| name |
+--------+
| george |
| abe |
+--------+
2 rows in set (0.00 sec)
```
## Search Two MySQL tables and Combine the results
The following adds another table to the database. Let's call the
table 'teams'.
```
mysql> create table teams (id bigint not null auto_increment primary key, name char(32), color char(32));
Query OK, 0 rows affected (0.00 sec)
```
The following adds entries into the 'teams' table.
```
mysql> insert into teams (name,color) values ('orcs','blue'), ('elves','green'), ('dwarves','red'), ('wizards','blue');
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
```
The following uses the **select** command to show how the 'teams' table looks.
```
mysql> select * from teams;
+----+---------+-------+
| id | name | color |
+----+---------+-------+
| 1 | orcs | blue |
| 2 | elves | green |
| 3 | dwarves | red |
| 4 | wizards | blue |
+----+---------+-------+
4 rows in set (0.00 sec)
```
The following uses **alter** to modify the **users** table to add a pointer
from the 'users' table to the 'teams' table
```
mysql> alter table users add (team integer);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
```
Let's take a look to see that the pointer was added.
```
mysql> select * from users;
+----+--------+----------+------+
| id | name | strength | team |
+----+--------+----------+------+
| 1 | george | 6 | NULL |
| 2 | abe | 8 | NULL |
| 3 | teddy | 13 | NULL |
+----+--------+----------+------+
3 rows in set (0.00 sec)
```
The following example uses **update** assigns a team to each user.
```
mysql> update users set team=1 where name='george';
mysql> update users set team=2 where name='abe';
mysql> update users set team=3 where name='teddy';
```
The following uses **insert** to add more users.
```
mysql> insert into users (name,strength,team) values('gandolf',2,4),('legalos',4,2),('gimli',16,3);
```
Now we%apos;re ready for some interesting stuff. First list every userd and
her/his associated team. Note that the user name is from the **users** table
and the team is from the **teams** table.
```
mysql> select users.name,teams.name from users,teams where users.team=teams.id;
+---------+---------+
| name | name |
+---------+---------+
| george | orcs |
| abe | elves |
| legalos | elves |
| teddy | dwarves |
| gimli | dwarves |
| gandolf | wizards |
+---------+---------+
6 rows in set (0.00 sec)
```
Now find all users that have a team color of blue. Note, the orcs and wizards
were both assigned the color blue so both george the orc and gandolf the wizard
```
mysql> select users.name,teams.name from users,teams where users.team=teams.id and teams.color='blue';
+---------+---------+
| name | name |
+---------+---------+
| george | orcs |
| gandolf | wizards |
+---------+---------+
2 rows in set (0.00 sec)
```
## Using PHP to Access MySQL
Note: The MySQL precedural links below are no longer recommended but
I'll bet they're used more than the recommended object-oriented
approach. Here is good example of how to use the recommended
[object-oriented PHP-MySQL mysqli object](http://www.php.net/manual/en/mysqli.query.php).
Using PHP to access MySQL is similar to what we just did using the mysql
client. The basic steps are:
* [Connect and Login to the MySQL Server (mysql_connect)](http://www.php.net/manual/en/function.mysql-connect.php)
* [Check for errors after each step (mysql_error)](http://www.php.net/manual/en/function.mysql-error.php)
* [Select the database to USE (mysql_select_db)](http://www.php.net/manual/en/function.mysql-select-db.php)
* [Build a SEARCH string and send it to the MySQL server (mysql_query)](http://www.php.net/manual/en/function.mysql-query.php)
* [Get the results from MySQL (mysql_fetch_array)](http://www.php.net/manual/en/function.mysql-fetch-array.php)
* [mysql_free_result](http://www.php.net/manual/en/function.mysql-free-result.php)
* [mysql_close](http://www.php.net/manual/en/function.mysql-close.php)
Here is a [PHP-MySQL example](http://www.php.net/manual/en/mysql.examples-basic.php)