반응형

🚀

 

테이블(Table) : 서로 연관된 레코드의 집합을 의미

레코드(Record) : 하나의 단위로 취급되는 자료의 집합. DB에서는 행(Row)에 해당

필드(Field) : 가장 작은 단위의 데이터를 의미. DB에서는 열(Column)에 해당

 

 

⭐️ 데이터베이스

데이터베이스 조회

SHOW DATABASES;

 

데이터베이스 사용

USE 데이터베이스명;

 

데이터베이스 생성

CREATE 데이터베이스명;

 

데이터베이스 삭제

DROP DATABASES 데이터베이스명;

 

 

⭐️ 테이블

테이블 생성

CREATE TABLE 테이블명(
	필드명 데이터타입(보이는 자리수) 조건;
        필드명 데이터타입 조건;
        필드명 데이터타입 조건;
        PRIMARY KEY(primary key로 정한 필드명)
 );
CREATE TABLE topic(
	id INT(11) NOT NULL AUTO_INCREMENT;
        title VARCHAR(100) NOT NULL;
        description TEXT NULL;
        created DATETIME NOT NULL;
        author VARCHAR(15) NULL;
        profile VARCHAR(200) NULL;
        PRIMARY KEY(id)
 );

 

테이블 정보 조회

DESCRIBE 테이블명; // or "DESC 테이블명;"

 

테이블 삭제

DROP TABLE 테이블명;

 

 

⭐️ 레코드

레코드 조회

SELECT * FROM 테이블명; // 와일드카드 * 를 사용해서 테이블의 모든 데이터 조회
SELECT 필드명1, 필드명2 FROM 테이블이름; // 필드명1,2만 조회
SELECT * FROM 테이블이름 WHERE 필드명 = '내용'; // 해당 필드에서 값이 '내용'인 레코드 조회
SELECT * FROM 테이블이름 WHERE 필드명 BETWEEN 00:00:00 AND 12:00:00 // 00시~12시 사이
SELECT * FROM 테이블이름 WHERE 필드명 IN (A, B); // 괄호 내의 일치하는 값이 있다면 조회
SELECT * FROM 테이블이름 WHERE 필드명 LIKE '%문자열%'; // 문자열 포함된 레코드 조회
SELECT * FROM 테이블이름 WHERE 필드명 IS NULL; // 또는 "NOT IS NULL"
SELECT COUNT(*) FROM 테이블명 WHERE 필드명='내용'; // 해당 필드에서 값이 '내용'인 레코드 개수
SELECT * FROM Customers WHERE country='KR';
SELECT * FROM Customers WHERE id='asd111';
SELECT * FROM Costomers ORDER BY age; // 오름차순 정렬
SELECT * FROM Costomers ORDER BY age DESC; // 내림차순 정렬
SELECT DISTINCT 필드명 FROM 테이블이름; // 해당 필드 기준으로 중복된 레코드제거
// Info 데이터베이스의 Users 테이블에서 userName이 'A'로 시작하는 레코드들의 userId, userName 필드 조회
SELECT userId, userName FROM Info.Users WHERE userName LIKE 'A%'
SELECT COUNT(*) FROM Customers WHERE age='25';

 

레코드 추가

INSERT INTO 테이블명 (필드명1, 필드명2) VALUES (필드값1, 필드값2); // 테이블에 새 레코드 추가
INSERT INTO 목적지테이블명 SELECT * FROM 출발지테이블명; // 모든 필드 복사
INSERT INTO 목적지테이블명 (필드1,필드2,필드3) SELECT 필드1,필드2,필드3 FROM 출발지테이블명; // 지정 필드 복사
INSERT INTO Customers (userName, age) VALUES ('John', '25'), ('coco', '27');

 

레코드 수정

UPDATE 테이블명 SET 필드명1=필드값1, 필드명2=필드값2 WHERE 조건;

 

레코드 삭제

DELETE FROM 테이블명 WHERE 조건;

 

 

⭐️ 조인

- 왼쪽 외부 조인 (left outer join)

 

SELECT * FROM A
LEFT JOIN B ON A.key = B.key

 

- 왼쪽 안티 조인 (left anti join)

SELECT * FROM A
LEFT JOIN B ON A.key = B.key
WHERE B.key IS NULL

 

- 오른쪽 외부 조인 (right outer join)

SELECT * FROM A
RIGHT JOIN B ON A.key = B.key

 

- 오른쪽 안티 조인 (right anti join)

SELECT * FROM A
RIGHT JOIN B ON A.key = B.key
WHERE A.key IS NULL

 

- 내부 조인 (inner join)

SELECT * FROM A
INNER JOIN B ON A.key = B.key

 

- 전체 조인 (full outer join)

SELECT * FROM A
FULL OUTER JOIN B ON A.key = B.key

 

- 전체 조인 변형 (full outer join 변형)

SELECT * FROM A
FULL OUTER JOIN B ON A.key = B.key
WHERE A.key IS NULL OR B.key IS NULL

 

 

 

📚 참고

https://zetawiki.com/wiki/SQL

반응형

+ Recent posts