https://www.youtube.com/watch?v=vgIc4ctNFbc 를 참고하여 쓴 글입니다.
설명이 다소 부족할 수 있으므로 자세한 설명이 필요하신 분은 해당 강의를 참고해주시기를 바랍니다.
위의 영상 역시 아주 처음 데이터베이스를 접하는 분들은 힘들 수 있으므로
https://www.youtube.com/@coohde/playlists
생활코딩
일반인에게 프로그래밍을 알려주는 온라인/오프라인 활동 입니다. 채널 공개키 : MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbU/jgeYLWbmUB5pk/wlqMs+2qsOOPgN2ydxOsrWe8JJUXzj5ovsUmjfBSwLjajT6SyO00ulne3zja2PzEZC2wnJCgvZ6lr/ZLvA9yUqmrKRNa
www.youtube.com
여기서 DATABASE1, 2 강의를 수강 후 위 강의를 수강하는 것을 권장드립니다.
Ch.1
1. SHOW DATABASES - 현재 서버에 어떤 DB가 있는지 보기
2. USE - 사용할 데이터베이스 지정
지정해 놓은 후 특별히 다시 USE 문을 사용하거나 다른 DB를 사용하겠다고 명시하지 않는 이상 모든 SQL문은 지정 DB에서 수행
Workbench 에서 직접 선택해 사용 가능
3. SHOW TABLES - 현재 사용 중인 데이터베이스의 테이블 이름 보기
이 때 데이터베이스 와 테이블의 명확한 구분이 필요하다.
데이터베이스가 데이터를 저장하는 저장소라면, 테이블은 데이터베이스 안에 실재 데이터가 저장되는 형태이다.
파일에 데이터를 저장할 때 어떤 구조로 저장할지 결정하는 것이다.
ex. 회원 관리 데이터베이스 안에 회원 정보 테이블, 회원별 후원금 테이블 등이 존재 가능
4. SHOW TABLE STATUS - 현재 사용 중인 데이터베이스의 테이블 정보 조회 (버전, ROW 개수 등등)
5. DESCRIBE (DESC) - 테이블에 무슨 열이 있는지 확인
ex. city 테이블에 무슨 열이 있는지 확인
- DESCRIBE city;
- DESC city;
Ch.2
6. SELECT - 요구하는 데이터를 가져오는 구문
ex. SELECT ... FROM
일반적으로 가장 많이 사용되는 구문
데이터베이스 내 테이블에서 원하는 정보를 추출
ex. SELECT * FROM city; -> 이렇게 쓰면 city table 에 있는 전체 column 들을 볼 수 있다.
SELECT Name, population FROM city; -> 이렇게 쓰면 city table에 있는 Name, population column을 볼 수 있다.
즉, 테이블에서 필요로 하는 열만 가져오기 가 가능하며, 여러개의 열을 가져오고 싶을 때는 콤마로 구분한다.
열 이름의 순서는 출력하고 싶은 순서대로 배열 가능하다.
7. WHERE - 조회하는 결과에 특정한 조건으로 원하는 데이터만 보고 싶을 때 사용 (조건문)
SELECT 필드이름 FROM 테이블이름 WHERE 조건식
ex. SELECT * FROM city WHERE Population >= 8000000; -> Population이 8000000가 넘는 row만 보겠다는 의미
조건이 없을 경우 테이블의 크기가 클수록 찾는 시간과 노력이 증가
8. 관계 연산자의 사용
OR, AND,
조건 연산자(=, <, >, <=, >=, <>(같지 않음), != 등)
관계 연산자(NOTm AND, OR 등)
연산자의 조합으로 데이터를 효율적으로 추출 가능
주의할 점! 타 프로그래밍 언어에서 == 을 통해 같음을 표현하는 것에 반해 SQL에서는 =을 그대로 씀
ex. 한국에 있는 도시 중 인구수가 100만 이상인 도시를 조회하려면?
SELECT * FROM city
WHERE CountryCode = 'KOR'
AND Population >= 1000000;
Ch.3
9. BETWEEN
데이터가 숫자로 구성되어 있어 연속적인 값은 BETWEEN ... AND 사용 가능
ex. SELECT * FROM city WHERE Population BETWEEN 7000000 AND 8000000;
10. IN
이산적인 값의 조건에서 IN()을 사용 가능하다.
ex. SELECT * FROM city WHERE Name IN ('Seoul', 'New York', 'Tokyo');
WHERE Conditon = 'A' or Condition = 'B'; 를 IN으로는 WHERE Condition IN ('A', 'B')로 쓸 수 있는데
IN 연산자가 OR 보다 가독성이 좋고, 조건 순서를 보다 쉽게 관리할 수 있고 연산자수도 줄어들며 실행 속도가 빠르다.
ex. 한국, 미국, 일본의 도시들을 보려면?
SELECT *
FROM city
WHERE CountryCode IN ('KOR', 'USA', 'JPN);
Ch.4
11. LIKE
문자열의 내용 검색하기 위해 LIKE 연산자 사용
문자 뒤에 % - 무엇이든(%) 허용
한 글자와 매치하기 위해서는 '_' 사용
ex. 국가코드 앞 두글자가 KO인 국가의 도시들을 조회하고 싶을 때
SELECT * FROM city WHERE CountryCode LIKE 'KO_';
ex. 이름이 Tel로 시작하는 도시들을 모두 조회하고 싶을 때
SELECT * FROM city WHERE Name LIKE 'Tel%';
12. Sub Query
서브 쿼리
쿼리문 안에 또 쿼리문이 들어 있는 것
서브 쿼리의 결과가 둘 이상이 되면 에러 발생
이건 예시를 보면서 이해해보자.
서울이라는 도시가 속한 국가에 있는 모든 도시를 조회하고 싶을 때
SELECT *
FROM city
WHERE CountryCode = (SELECT CountryCode FROM city WHERE Name = 'Seoul');
이러면 괄호안의 SELECT 문의 결과로 'KOR' 이 리턴되게 되고 그럼 위의 구문은
SELECT *
FROM city
WHERE CountryCode ='KOR'; 과 같은 구문이 된다.
13. ANY
서브 쿼리의 여러 개의 결과 중 한가지만 만족해도 가능
SOME 은 ANY와 동일한 의미로 사용
= ANY 구문은 IN과 동일한 의미
ex. 뉴욕의 도시들 중 가장 인구수가 작은 도시보다 인구수가 많은 도시들을 모두 조회
SELECT * FROM city
WHERE Population > ANY (SELECT Population FROM city WHERE District = 'New York');
14. ALL
서브 쿼리의 여러 개의 결과를 모두 만족시켜야 함
ex. 뉴욕의 모든 도시들보다 인구수보다 많은 도시들을 모두 조회
SELECT * FROM city
WHERE Population > ALL (SELECT Population FROM city WHERE District = 'New York');
15. ORDER BY (정렬)
결과가 출력되는 순서를 조절하는 구문
기본적으로 오름차순(ASCENDING) 정렬
내림차순(DESCENDING)으로 정렬 (열 이름 뒤에 DESC 적어줄 것)
ASC 는 default 이므로 생략 가능
ex. 모든 도시를 조회하되 인구수 순으로 내림차순으로 정렬하여 출력
SELECT * FROM city
ORDER BY Population DESC;
ORDER BY 구문을 혼합해 사용하는 구문도 가능
ex. 국가코드를 오름차순으로 정렬하되, 같은 국가의 도시끼리는 인구순으로 내림차순으로 출력
SELECT * FROM city
ORDER BY CountryCode ASC, Population DESC;
ex. 인구수로 내림차순하여 한국에 있는 도시 보기
SELECT * FROM city
WHERE CountryCode = 'KOR'
ORDER BY Population DESC;
ex. 국가 면적 크기로 내림차순하여 나라 보기 (country table)
DESC country; 로 SurfaceArea 칼럼이 국가 면적 크기를 의미함을 확인했다고 가정
SELECT * FROM country
ORDER BY SurfaceArea DESC;
Ch.5
16. DISTINCT
중복된 것은 1개씩만 보여주면서 출력
테이블의 크기가 클수록 효율적
만약 국가 코드의 목록만을 보고 싶다면 당연히 국가 코드를 중복해서 출력할 필요가 없다.
이러한 경우를 위해 필요한 구문이다.
ex. city 테이블의 모든 국가코드를 1번씩만 출력
SELECT DISTINCT CountryCode FROM city;
(DISTINCT 를 붙이지 않으면 같은 국가 코드가 여러번 출력)
17. LIMIT
출력 개수를 제한
상위의 N개만 출력하는 'LIMIT N' 구문
서버의 처리량을 많이 사용해 서버의 전반적인 성능을 나쁘게 하는 악성 쿼리문을 개선할 때 사용
ex. 인구가 가장 많은 도시부터 10개의 도시만을 출력하는 구문
SELECT * FROM city
ORDER BY Population DESC
LIMIT 10;
18. GROUP BY
그룹으로 묶어주는 역할
집계 함수(Aggregate Function)를 함께 사용
AVG() : 평균
MIN() : 최솟값
MAX() : 최댓값
COUNT() : 행의 개수
COUNT(DISTINCT) : 중복 제외된 행의 개수
STDEV() : 표준 편차
VARIANCE() : 분산
효율적인 데이터 그룹화
읽기 좋게 하기 위해 별칭(Alias) 사용
ex. 국가 별 국가 코드 및 최대 인구수 출력
SELECT CountryCode, MAX(Population)
FROM city
GROUP BY CountryCode;
MAX(Population)을 어떤 걸 기준으로 구해야 할지를 GROUP BY 를 통해 명시해줌!
그리고 MAX(Popuation) 대신 Max 로 Column을 표기하고 싶다면 아래와 같이 구문을 쓰면 된다
SELECT CountryCode, MAX(Population) AS 'Max'
FROM city
GROUP BY CountryCode;
ex. 도시는 몇개인가?
SELECT COUNT(*) FROM city;
이 때 *은 모든 열을 의미
COUNT에 특정 열을 인수로 주면, 그 열의 값이 NULL인 행은 개수에서 제외가 된다.
ex. 도시들의 평균 인구수는?
SELECT AVG(Population) FROM city;
Ch.6
19. HAVING
WHERE 과 비슷한 개념으로 조건 제한
집계 함수에 대해서 조건 제한하는 편리한 개념
HAVING 절은 반드시 GROUP BY 절 다음에 나와야 함
ex. 국가코드와 최대 인구수를 국가 별로 조회하되, 도시의 최대인구수가 800만 이상인 국가만 조회
SELECT CountryCode, MAX(Population)
FROM city
GROUP BY CountryCode
HAVING MAX(Population) >= 8000000;
20. ROLLUP
총합 또는 중간 합계가 필요할 경우 사용
GROUP BY 절과 함께 WITH ROLLUP 문 사용
ex. 국가별 도시의 인구 총합을 출력하되 마지막에는 모든 국가의 인구 총합 출력
SELECT CountryCode, Name, SUM(Population)
FROM city
GROUP BY CountryCode WITH ROLLUP;
ex. 각 도시의 국가코드, 이름, 인구수를 출력하되 각 국가의 최대 인구수 출력
SELECT CountryCode, Name, MAX(Population)
FROM city
GROUP BY CountryCode, Name WITH ROLLUP;
즉, ROLLUP은 GROUP BY CountryCode, Name을 하면
각 CountryCode에 대한 총계와
모든 row에 대한 총계를 계산하여 출력해준다.
21. JOIN
JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현
쉽게 말해서 두 테이블을 합치는 것인데
이 때 두 테이블을 합치는 데는 기준이 필요하고 이를 ON 뒤의 구문으로 명시해준다.
ex. city 테이블과 country 테이블을 합쳐서 보여주되, 기준은 city테이블의 CountryCode 행과 country 테이블의 Code행
SELECT *
FROM city
JOIN country ON city.CountryCode = country.Code;
ex. city, country, countrylanguage 테이블 3개를 JOIN하기
(countrylanguage 테이블의 데이터들의 국가코드는 CountryCode 열에 저장되어 있다.)
SELECT *
FROM city
JOIN country ON city.CountryCode = country.Code
JOIN countrylanguage ON city.CountryCode = countrylanguage.CountryCode;
Ch.7
MySQL 내장함수들에 대해 살펴볼 것이다.
사용자의 편의를 위해 다양한 기능의 내장 함수들을 미리 정의하여 제공한다.
대표적인 내장 함수의 종류로는 문자열 함수, 수학 함수, 날짜와 시간 함수 등이 있다.
22. LENGTH() : 전달받은 문자열의 길이를 반환
23. CONCAT() : 전달받은 문자열을 모두 결합하여 하나의 문자열로 반환
전달받은 문자열 중 하나라도 NULL이 존재하면 NULL을 반환
ex. SELECT CONCAT('My', 'SQL'); -> MySQL 이 출력된다.
24. LOCATE() : 문자열 내에서 찾는 문자열이 처음으로 나타나는 위치를 찾아서 해당 위치를 반환
찾는 문자열이 문자열 내에 존재하지 않으면 0을 반환
MySQL에서는 문자열의 시작 인덱스를 1부터 계산
25. LEFT() : 문자열의 왼쪽부터 지정한 개수만큼의 문자를 반환
26. RIGHT() : 문자열의 오른쪽부터 지정한 개수만큼의 문자를 반환
27. LOWER() : 문자열의 문자를 모두 소문자로 변경
28. UPPER() : 문자열의 문자를 모두 대문자로 변경
29. REPLACE() : 문자열에서 특정 문자열을 대체 문자열로 교체
ex. SELECT REPLACE('MSSQL', 'MS', 'My'); -> MySQL 출력
30. TRIM() : 문자열의 앞이나 뒤, 또는 양쪽 모두에 있는 특정 문자를 제거
TRIM() 함수에서 사용할 수 있는 지정자
BOTH : 전달받은 문자열의 양 끝에 존재하는 특정 문자를 제거 (기본 설정)
LEADING : 전달받은 문자열 앞에 존재하는 특정 문자를 제거
TRAILING : 전달받은 문자열 뒤에 존재하는 특정 문자를 제거
만약 지정자를 명시하지 않으면, 자동으로 BOTH로 설정
제거할 문자를 명시하지 않으면, 자동으로 공백을 제거
ex. SELECT TRIM(' ##MYSQL## '); -> ##MYSQL## 이 출력됨
ex. SELECT TRIM(LEADING '#' FROM '##MYSQL##'); -> MYSQL## 이 출력됨
31. FORMAT() : 숫자 타입의 데이터를 세 자리마다 쉼표를 사용하는 '#,###,###.##' 형식으로 변환
반환되는 데이터의 형식은 문자열 타입
두 번째 인수는 반올림할 소수 부분의 자릿수
ex. SELECT FORMAT(123456789.123456, 3); -> 123,456,789.123 출력
32. FLOOR() : 내림
33. CEIL() : 올림
34. ROUND() : 반올림
35.SQRT() : 양의 제곱근
36. POW() : 첫번째 인수로는 밑수를 전달, 두번째 인수로는 지수를 전달하여 거듭제곱 계산
37. EXP() : 인수로 지수를 전달받아, e의 거듭제곱을 계산
38. LOG() : 자연로그 값을 계산 (밑이 e)
39. SIN() : 사인값 반환
40. COS() : 코사인값 반환
41. TAN() : 탄젠트값 반환
ex. SELECT SIN(PI()/2); -> 1 출력
42. ABS() : 절대값을 반환
43. RAND() 0.0보다 크거나 같고 1.0보다 작은 하나의 실수를 무작위로 생성
44. NOW() : 현재 날짜와 시간을 반환, 반환되는 값은 'YYYY-MM-DD HH;MM:SS' 또는 YYYYMMDDHHMMSS 형태로 반환
45. CURDATE() : 현재 날짜를 반환, 이 때 반환되는 값은 'YYYY-MM-DD' 또는 YYYYMMDD 형태로 반환
46. CURTIME() : 현재 시각을 반환, 이 때 반환되는 값은 'HH:MM:SS' 또는 HHMMSS 형태로 반환
47. DATE() : 전달받은 값에 해당하는 날짜 정보를 반환
48. MONTH() : 월에 해당하는 값을 반환하며, 0부터 12 사이의 값을 가짐
49. DAY() : 일에 해당하는 값을 반환하며, 0부터 31 사이의 값을 가짐
50. HOUR() : 시간에 해당하는 값을 반환하며, 0부터 23 사이의 값을 가짐
51. MINUTE() : 분에 해당하는 값을 반환하며, 0부터 59 사이의 값을 가짐
52. SECOND() : 초에 해당하는 값을 반환하며, 0부터 59 사이의 값을 가짐
53. MONTHNAME() : 월에 해당하는 이름을 반환
54. DAYNAME() : 요일에 해당하는 이름을 반환
55. DAYOFWEEK() : 일자가 해당 주에서 몇번째 날인지를 반환, 1부터 7까지의 값을 반환 (일요일 = 1, 토요일 = 7)
56. DAYOFMONTH() : 일자가 해당 월에서 몇번째 날인지를 반환, 0부터 31 사이의 값을 반환
57. DAYOFYEAR() : 일자가 해당 연도에서 몇번째 날인지를 반환, 1부터 366 사이의 값을 반환
58. DATE_FORMAT() : 전달받은 형식에 맞춰 날짜와 시간 정보를 문자열로 반환
[mysql] DATE_FORMAT - 날짜 형식 설정
1. DATE_FORMAT - 역할DATE_FORMAT(날짜 , 형식) : 날짜를 지정한 형식으로 출력 2. DATE_FORMAT - 구분기호 구분기호역할구분기호역할 %Y 4자리 년도 %m 숫자 월 ( 두자리 ) %y 2자리 년도 %c 숫자 월(한자리는 한
devjhs.tistory.com
위의 링크를 참고하여 사용하자.
Ch. 8 SQL 고급
59. CREATE TABLE AS SELECT
SELECT 된 내용과 같은 내용의 테이블 생성
ex. CREATE TABLE AS SELECT * FROM city;
city와 같은 내용의 테이블이 생긴다.
60. CREATE DATABASE
새로운 데이터 베이스를 생성
USE 문으로 새 데이터베이스를 사용
61. CREATE TABLE (MySQL Workbench)
데이터 베이스 탭을 우클릭하여 Create Table 을 눌러 테이블 생성 가능
https://blog.naver.com/pjok1122/221539169731
[MySQL] 테이블 만들기,수정하기 (Create table, Alter table)
1. DATABASE MySQL 테이블을 만들기 전에 database가 무엇인지 알아야합니다. database는 서로...
blog.naver.com
직접 SQL 문을 작성하여 table을 생성하는 법은 위 링크를 참고하자.
62. ALTER TABLE
(1) ALTER TABLE 문과 함께 ADD 문을 사용하면, 테이블에 칼럼을 추가할 수 있음
ex.
ALTER TABLE test
ADD col4 INT NULL;
이렇게 하면 col4라는 새로운 열을 추가할 수 있다. (정수, 값을 비워둘 수 있는 열)
(2) MODIFY 문을 함께 사용하면 테이블의 칼럼 타입을 변경할 수 있다.
ex.
ALTER TABLE test
MODIFY col4 VARCHAR(20);
tip. varchar는 가변크기 문자열을 의미, 안의 숫자 20은 최대 '바이트수'를 의미한다. 가변크기이므로 레코드의 크기가 몇이라는 것이 헤더에 저장된다.
(3) DROP 문을 함께 사용하면 테이블에서 칼럼을 제거할 수 있다.
ex.
ALTER TABLE test
DROP col4;
63. 인덱스 (Index)
테이블에서 원하는 데이터를 빠르게 찾기 위해 사용
일반적으로 데이터를 검색할 때 순서대로 테이블 전체를 검색하므로 데이터가 많으면 많을수록 탐색하는 시간이 늘어남
검색과 질의를 할 때 테이블 전체를 읽지 않기 때문에 빠름
설정된 칼럼 값을 포함한 데이터의 삽입, 삭제, 수정 작업이 원본 테이블에서 이루어질 경우, 인덱스도 함께 수정되어야 함
(인덱스의 수정은 O(n)이므로 n이 큰 경우 굉장히 처리 속도가 느려질 수 있음)
위의 이유로 인덱스가 있는 테이블은 처리 속도가 느려질 수 있으므로 수정보다는 검색이 자주 사용되는 테이블에서 사용하는 것이 좋음
64. CREATE INDEX
CREATE INDEX 문을 사용하여 인덱스 생성
ex. CREATE INDEX Col1Idx ON test (col1)
65. SHOW INDEX
인덱스 정보 보기
ex. SHOW INDEX FROM test;
66. CREATE UNIQUE INDEX
중복 값을 허용하지 않는 인덱스
이렇게 만든 인덱스를 확인해보면 Non_unique가 0 즉, unique함을 알 수 있다.
67. FULLTEXT INDEX (다시 공부 필요)
FULLTEXT INDEX 는 일반적인 인덱스와는 달리 매우 빠르게 테이블의 모든 텍스트 칼럼을 검색
68. INDEX 삭제
(1) ALTER 문 이용
ex.
ALTER TABLE test
DROP INDEX Col3Idx;
(2) DROP 문 사용
DROP문을 사용하여 해당 테이블에서 명시된 인덱스를 삭제
DROP문은 내부적으로 ALTER문으로 자동 변환되어 명시된 이름의 인덱스를 삭제
ex.
DROP INDEX Col2Idx ON test;
69. VIEW
뷰(view)는 데이터베이스에 존재하는 일종의 가상 테이블
실제 테이블처럼 행과 열을 가지고 있지만, 실제로 데이터를 저장하진 않음
MySQL 에서 뷰는 다른 테이블이나 다른 뷰에 저장되어 있는 데이터를 보여주는 역할만 수행
뷰를 사용하면 여러 테이블이나 뷰를 하나의 테이블처럼 볼 수 있음
뷰의 장점
특정 사용자에게 테이블 전체가 아닌 필요한 컬럼만 보여줄 수 있음
복잡한 쿼리를 단순화해서 사용
쿼리 재사용 가능
70. CREATE VIEW
ex.
CREATE VIEW testview AS
SELECT Col1, Col2
FROM test;
71. ALTER VIEW
ALTER 문을 사용하여 뷰를 수정
ex.
ALTER VIEW testView AS
SELECT Col1, Col2, Col3
FROM test;
72. DROP 문을 사용하여 생성된 뷰를 삭제
ex. DROP VIEW testView;
ex. city, country, countrylanguage 테이블을 JOIN하고 한국에 대한 정보만 뷰 생성하기
CREATE VIEW testView AS
SELECT * FROM
city JOIN country ON city.CountryCode = country.Code
JOIN countrylanguage ON city.CountryCode = countrylanguage.CountryCode
WHERE city.CountryCode = 'KOR';
이렇게 생성을 하고 나면 위의 구문을 다시 칠 필요 없이
SELECT * FROM testView;
만 해주면 위의 정보를 다시 조회할 수 있다.
Ch. 9
73. INSERT
데이터를 삽입할 때 쓰는 구문
ex.
INSERT INTO test
VALUE(1, 123, 1.1, "Test");
테이블 이름 다음에 나오는 열 생략 가능
생략할 경우에 VALUE 다음에 나오는 값들의 순서 및 개수가 테이블이 정의된 열 순서 및 개수와 동일해야 함
Workbench에서 INSERT를 더 쉽게 할 수도 있다.
74. INSERT INTO SELECT
어떤 테이블에 있는 내용을 다른 테이블에 삽입
ex.
INSERT INTO test2 SELECT * FROM test;
위와 같이 test에 있는 모든 내용을 test2 테이블에 삽입 가능
75. UPDATE
기존에 입력되어 있는 값 변경하는 구문
ex.
UPDATE test
SET col = 1, col2 = 1.0, col3 = 'test'
WHERE id = 1;
WHERE 절 생략 가능하나 테이블의 전체 행의 내용 변경 (사실상 하면 안 되는 행동 ㅋㅋ)
76. DELETE
행 단위로 데이터 삭제하는 구문
DELETE FROM 테이블 이름 WHERE 조건;
데이터는 지워지지만 테이블 용량은 줄어들지 않음 (다시 복구시킬 수 있어야 하기 때문)
원하는 데이터만 지울 수 있음
삭제 후 잘못 삭제한 것을 되돌릴 수 있음 (즉, 휴지통에 넣었다고 생각하면 된다.)
WHERE 조건을 안 쓰면 전체가 다 날아감
77. TRUNCATE
용량이 줄어 들고, 인덱스 등도 모두 삭제 (비유하자면 껍데기를 제외하고 모두 삭제)
테이블은 삭제하지는 않고 데이터만 삭제
한꺼번에 다 지워야함
삭제 후 절대 되돌릴 수 없음
78. DROP TABLE
테이블 전체를 삭제, 공간, 객체를 삭제
삭제 후 절대 되돌릴 수 없음
79. DROP DATABASE
해당 데이터베이스를 삭제
'언어 > SQL' 카테고리의 다른 글
프로그래머스 SQL 고득점 kit 정답 - SELECT (0) | 2023.02.04 |
---|