MySQL
MySQL
langsamUndStetig
2022. 5. 26. 17:39
CREATE DATABASE record_company;
USE record_company;
CREATE TABLE bands (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE albums (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
release_year INT,
band_id INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (band_id) REFERENCES bands(id)
);
INSERT INTO bands (name)
VALUES ('Iron Maiden');
INSERT INTO bands (name)
VALUES ('Deuce'), ('Avenged Seveidnfold'), ('Ankor');
SELECT * FROM bands;
SELECT name FROM bands;
SELECT
id AS 'ID', name AS 'Band Name'
FROM
bands;
SELECT * FROM bands ORDER BY name ;
INSERT INTO albums (name, release_year, band_id)
VALUES ('The Number of the Beast', 1985, 1),
('Power Slave', 1984, 1),
('Nightmare', 2018, 2),
('Nightmare', 2010, 3),
('Test Album', Null, 3);
SELECT * FROM albums;
SELECT DISTINCT name FROM albums;
/*DISTINCT 는 중복된 name은 가져오지 않는다. 즉 중복되어 있으면 1개만 나옴*/
UPDATE albums
SET release_year = 1982
WHERE id = 1;
/*id가 1인 행의 releas_year를 1982로 업데이트 */
SELECT * FROM albums
WHERE release_year < 2000;
/* release_year가 2000 미만인 행을 다 가져옴 */
SELECT * FROM albums
WHERE name LIKE '%er%'OR band_id =2;
/*-er-이 name에 있거나, band_id가 2인 행 소환 */
SELECT * FROM albums
WHERE release_year = 1984 AND band_id = 1;
/*release_year가 1984이고, band_id가 1. */
SELECT * FROM albums
WHERE release_year BETWEEN 2000 AND 2018;
/*release_year가 2000과 2018 사이 (2000, 2018 모두 포함) */
SELECT * FROM albums
WHERE release_year IS NULL;
/*release_year가 null인 경우만 소환 */
DELETE FROM albums WHERE id = 5;
/*id 5 삭제 */
SELECT * FROM albums;
SELECT * FROM bands
JOIN albums ON bands.id = albums.band_id;
/*albums에는 bands의 id열을 reference한 band_id 열이 FOREIGN KEY로 존재*/
/*서로 다른 테이블이 동시에 갖고 있는 값을 관계시켜줌 */
SELECT * FROM albums
LEFT JOIN bands ON bands.id = albums.band_id;
/*albums를 왼쪽에 다 깔아둔 후, bands와 연결, 그래서 bands에 값이 없더라도 왼쪽에 albums에선 등장 */
SELECT * FROM albums
RIGHT JOIN bands ON bands.id = albums.band_id;
/*albums는 왼쪽에 위치하고, 오른쪽에 위치한 bands는 모두 등장, albums에 null 값이 있어도. */
SELECT SUM(release_year) FROM albums;
/*albums release_year 전체 더하기 */
SELECT band_id, COUNT(band_id) From albums
GROUP BY band_id;
/* band_id를 그룹별로 나누어서, 나온 수 만큼 더해서 그다음 열에 COUNT(band_id) 값을 줌 */
SELECT b.name AS band_name, COUNT(a.id) AS num_albums
/*b.name 열의 이름을 band_name으로 나타나게, COUNT도 마찬가지 */
FROM bands AS b
/*bands를 b로 사용 */
LEFT JOIN albums AS a ON b.id = a.band_id
GROUP BY b.id
/*WHERE는 GROUP BY 뒤에선 사용할 수 없음, 대신 HAVING 사용 가능. */
HAVING num_albums = 1;
SQL은 테이블을 보는 재미가 있어서 배울 때 더 재밌는 거 같다.
내일부턴 연습문제를 풀면서 공부해야겠다.