PRIMARY KEY(PK)
가 반드시 필요한 것은 아님
PK
를 따로 지정해주지 않은 경우, rowid
로 접근이 가능하다
구문이 끝나는 마지막에 ;
를 사용해준다
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT
);
DROP TABLE users;
ALTER TABLE <기존 table명> RENAME TO <변경하고 싶은 table명>;
ALTER TABLE <table명> ADD COLUMN <추가할 column명> <column 타입> <옵션>;
이 때 column 옵션을 NOT NULL로 설정 시
column 생성 전, 이미 테이블 내에 레코드가 존재했다면 해당 값이 NULL로 되어 에러 발생
해결방법
1. NOT NULL 설정 없이 추가
2. 기본 값(default) 설정해서 추가
ALTER TABLE <table명> RENAME COLUMN <기존 column명> TO <변경하고 싶은 column명>;
INSERT INTO users (name, age) VALUES ('홍길동', 23);
table의 column에 있는 모든 VALUE를 넣을때에는 column명을 적어주지 않아도 됨
ex ) table column이 name, age, address인 경우
INSERT INTO users VALUES ('홍길동', 30 '서울');
*
rowid 까지 보고 싶을 때
SELECT rowid, * FROM users;
rowid name age address
----- ---- --- -------
1 홍길동 30 서울
2 김하나 26 대전
3 가나다 23 부산
* 말고 특정 column값 특정해주면 그 값만 출력됨
SELECT rowid,name FROM users;
rowid name
----- ----
1 홍길동
2 김하나
3 가나다
위에서 N 개의 데이터
// N=2
SELECT rowid,name FROM users LIMIT 2;
rowid name
----- ----
1 홍길동
2 김하나
앞에 N 개 제거
// N=2 (2개 제거하고 한 개 출력)
SELECT rowid,name FROM users LIMIT 1 OFFSET 2;
rowid name
----- ----
3 가나다
특정 값을 가지는 레코드 선택
SELECT rowid,name FROM users WHERE address='서울';
rowid name
----- ----
1 홍길동
특정 값을 중복 없이 조회
SELET DISTINCT age FROM users;
age
---
30
26
23
DELETE FROM users WHERE rowid=2;
SELECT rowid, * FROM users;
rowid name age address
----- ---- --- -------
1 홍길동 30 서울
3 가나다 23 부산
UPDATE users SET name="홍길동", address="제주도" WHERE rowid='3'
SELECT rowid, * FROM users;
rowid name age address
----- ---- --- -------
1 홍길동 30 서울
3 홍길동 23 제주도
// users 테이블 전체 레코드 갯수
SELECT COUNT(*) FROM users;
// 30살 이상인 사람들 나이의 평균
SELECT AVG(age) FROM users WHERE age>=30;
// 나이가 가장 많은 사람과 그 나이를 조회
SELECT name, MAX(age) FROM users;
%
이 자리에 문자열이 존재할 수도 아닐 수도 있다
_
무조건 단일 문자 들어가야 한다
SELECT * FROM 테이블 WHERE 컬럼 LIKE '와일드카드패턴';
// 이름이 '동'으로 끝나는 사람만 조회
SELECT * FROM users WHERE name LIKE '%동';
SELECT * FROM 테이블 ORDER BY <컬럼> <정렬기준>;
ORDER BY 1;
ORDER BY 1 DESC;
그룹화해서 보여줌
DISTINCT
를 사용한 것과 같은 중복제거 효과를 볼 수 있다
WHERE 절이 사용되면 무조건 그 뒤에 작성
// users에서 각 나이마다 몇개의 레코드가 있는지 조회
SELECT age, COUNT(*) FROM users GROUP BY age;
age COUNT(*)
---- --------
30 1
23 1
도움이 되었습니다 ^^ ~