SQL
Resources
- SQL = Structured Query language
- Query language to work with a database management system (DBMS)
Resources:
MySQL
- every query ends with a semicolon
;
!
SQLite3
- lightweight database to use e.g. in iOS apps
SQL Comment
-- my comment
Create a table
CREATE TABLE tableName(parameter <TYPE>, ...)
CREATE TABLE posts_database(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
text VARCHAR(140)
);
CREATE TABLE student(
student_id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
major VARCHAR(40) DEFAULT 'TBA',
PRIMARY KEY(student_id)
);
CREATE TABLE IF NOT EXISTS tableName(
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
ingredient VARCHAR(128) NOT NULL,
category VARCHAR(256)
);
INTEGER
DECIMAL
DECIMAL(t,a)
(t
total precision,a
digits after comma)VARCHAR(140)
BLOB
DATE
(YYYY-MM-DD)TIMESTAMP
(YYYY-MM-DD HH:MM:SS)
Constraints
id INT PRIMARY KEY
keyVariable INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(keyVariable)
UNIQUE
NOT NULL
DEFAULT 'TBA'
Describe table structure
MySQL
DESCRIBE myTable
SQLite3
.schema
Delete a table
DROP TABLE myTable
Alter table columns
add column
ALTER TABLE student ADD gpa DECIMAL(3,2)
ALTER TABLE user ADD email TEXT;
delete column
ALTER TABLE student DROP COLUMN gpa
Insert into table
INSERT INTO tableName(<arguments>) VALUES (<valuesForArguments>)
INSERT INTO posts VALUES(1, 'blablabla', 4.7)
INSERT INTO posts(text) VALUES('blablabla')
INSERT INTO posts(name, age) VALUES('Marta', 23)
Selecting from table
select all columns and rows of a database
SELECT * FROM database
select columns
SELECT column1 AS ‘column 1’, column2 AS ‘column 2’ FROM database
selecting rows
SELECT * FROM database WHERE someValue = ''
count all coumns
SELECT COUNT(*) FROM database
SELECT COUNT(DISTINCT name) FROM database
minimum
SELECT MIN(score) FROM database
// ...
SELECT column1, COUNT(column2) FROM database GROUP BY cloumn1
SELECT student.id, student.name
FROM student
order
SELECT *
FROM student
ORDER BY student_id ASC -- ascending (default)
SELECT *
FROM student
ORDER BY major, name -- order first by major, then by name
limited number of entries
SELECT *
FROM student
ORDER BY student_id DESC
LIMIT 2
filtering
SELECT *
FROM database
WHERE field = 'Biology' OR name = 'Kate'
operators
>, <, >=, <=, <> (not equal to), =, AND, OR
in
SELECT *
FROM database
WHERE name IN ('Claire', 'Kate', 'Mike')
Update table data
UPDATE student
SET major = 'Bio'
WHERE major = 'Biology'
UPDATE student
SET field = 'ok'
WHERE id > 13
Delete table rows
DELETE FROM student
WHERE student_id = 5
delete all table rows
DELETE * FROM table_name;