SQL notes
setup
Add alias to ~/bash_profile. mmysql will start MAMP mysql
alias mmysql='/Applications/MAMP/Library/bin/mysql'
exit;
SHOW databases;create database
CREATE DATABASE intrepid_detectives;
USE intrepid_detectives;
SHOW tables;create table
CREATE TABLE investigations(
-> title varchar(100),
-> detective varchar(30),
-> daysToSolve integer);
EXPLAIN investigations; Or use one of these,
SHOW FIELDS FROM table / SHOW COLUMNS FROM table / DESCRIBE table / DESC table / EXPLAIN tableinserting records
INSERT INTO investigations VALUES (“Finnigan’s Fault”,”Corlotta McOwen”,4);Inserting data not in order.
INSERT INTO investigations(daysToSolve, title detective) VALUES (3, “The Missing Tree”, “Finch Hosky”);Inserting data partially.
INSERT INTO investigations(title, detective) VALUES(“A case of allergies”, “Carson Andres”);selecting
Display data
SELECT * FROM investigations;
SELECT title, detective FROM investigations;
/* Any order */
SELECT daysToSolve, title FROM investigations;
/* Out put will the same as select order. */datatypes
varchar(100)
Create TABLE person(name varchar(100));text
Create Table email (body text);Numbers
int, or integer
CREATE TABLE person(age integer);int unsigned can have from 0 to 4.2billon numbers.
BIGINT, SMALLINT, MEDIUMINT, TINYINT
decimal (precision, scope)
precision: number of digit
scope: number of digit after the decimal point.
(10,0) 1234567890
(5,2) 123.45
CREATE TABLE student (avg_score decimal (6,2));
CREATE TABLE student(id integer auto_increment);auto_increment
CREATE TABLE student(id integer auto_increment);Date and time
date 'YYYY-MM-DD'
time '[H]HH:MM:SS'
datetime 'YYYY-MM-DD HH:MM:SS'
CREATE TABLE order(order_date date);Booleans
tinyint(1)
CREATE TABLE order(fulfilled boolean);Default values
CREATE TABLE order(
coupon varchar(10) defaul "nodiscuont",
customer_id integer default NULL,
dateitme datetime default current_timestamp
fulfilled boolean NOT NULL default 0
);primary-key
Database concept #6
Every table should have a primary key, a column that uniquely identifies each row. It can never be null, and must be set on record creation and never changed.
use intrepid_detectives;
show tables;
CREATE TABLE detectives(
id INT NOT NULL auto_increment,
name varchar(100),
phone_number varchar(100),
certificationDate date,
CONSTRAINT detectives_pk PRIMARY KEY (id)
);CONSTRAINT is a rule on the table. And detectives_pk is the name of CONSTRAINT and pk stands for primary key.And this constraint is the primary key, and tell what column is primary key.
EXPLAIN detectives;Natural primary key(social security number) and surogate key(id).
INSERT INTO detectives(name, phone_number,certificationDate)
VALUES("Carlotta McOwen", "12345678", "2002-03-23");
SELECT * FROM detectives;Add one more date.
Adding with id number.
INSERT INTO detectives VALUES(5, "Luther Ellery", "212345", "2005-03-11");This will add id of 5 into db.