Database_SQL_CRUD

CRUD

테이블 생성 및 삭제

  • CREATE TABLE
    • 데이터베이스에서 테이블 생성
CREATE TABLE classmates (id INTEGER PRIMARY KEY, name TEXT);
  • DROP TABLE
    • 데이터베이스에서 테이블 제거
DROP TABLE classmates;

테이블 생성 실습해보기

  • 다음과 같은 스키마를 가지고 있는 classmates 테이블을 만들고 스키마를 확인해보세요.
columndatatype
nameTEXT
ageINT
addressTEXT
-- PK 작성시에는 무조건 integer로 해야함 . 
CREATE TABLE classmates (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  age INT NOT NULL, 
  adress TEXT
);

INSERT

  • 테이블에 단일 행 삽입
    • 모든 열에 데이터가 있는 경우 column을 명시하지 않아도됨
    • SQLite는 따로 PRIMARY KEY 속성의 컬럼을 작성하지 않으면 값이 자동으로 증가하는 PK 옵션을 가진 rowid 컬럼을 정의
#각 value에 맞는 column들을 명시적으로 작성 
INSERT INTO classmates (
name,age,adress)
values ('홍길동', 30, '서울');
#모든 벨류 작성
INSERT INTO classmates 
VALUES 
('홍길동',30,'서울');
  • 여러개 행 삽입
INSERT INTO classmates 
VALUES 
('홍길동',30,'서울'),
('김철수', 30, '대전'),
('이라라', 26, '광주'),
('박대박', 29, '구미'),
('최고다', 28, '부산');

SELECT statement

  • SELECT
    • "query data from a table"
    • 테이블에서 데이터를 조회
    • SELECT 문은 SQLite에서 가장 복잡한 문이면 다양한 절(clause)와 함께 사용
      • ORDER BY, DISTINCT, WHERE, LIMIT, GROUP BY ...

SELECT와 함께 사용하는 clause

LIMIT
  • "constrain the number of rows returned by a query"
  • 쿼리에서 반환되는 행 수를 제한
  • 특정 행부터 시작해서 조회하기 위해 OFFSET
WHERE
  • "specify the search condition for rows returned by the query"
  • 쿼리에서 반환된 행에 대한 특정 검색 조건을 지정
SELECT DISTINCT
  • "remove duplicate rows in the result set"
  • 조회 결과에서 중복 행을 제거
  • DISTINCT 절은 SELECT 키워드 바로 뒤에 작성해야 함
  • 나이를 중복 없이 조회
 select DISTINCT age from classmates ;
  • ID와 컬럼만 조회
SELECT rowid, name FROM
 classmate;
  • ID와 컬럼 1개만 조회
SELECT rowid, name FROM
 classmate LIMIT 1 ;
  • 특정 부분에서 원하는 수 만큼 데이터 조회하기(5개 컬럼 중 3번째 조회하기)
 SELECT rowid, name FROM
 classmates LIMIT 1 OFFSET 2;
OFFSET
  • 동일 오브젝트 안에서 오브젝트 처음부터 주어진 요소나 지점까지의 변위차(위치 변화량)을 나타내는 정수형

  • 예시

    • 문자열 'abcdef'에서 문자 'c'는 시작점 'a'에서 2의 OFFSET을 지님
  • 6번째 행부터 10개 행을 조회

SELECT * FROM MY_TABLE LIMIT 10 OFFSET 5;
WHERE
  • 특정 데이터(조건) 조회하기
 SELECT rowid,name FROM classmates 
 WHERE address = '서울' ;

DELETE statement

  • "remove rows from a table"

  • 테이블에서 행을 제거

  • 조건을 통해 특정 레코드 삭제하기

    • 어떤 기준으로 데이터를 삭제하면 좋을까?
    • 중복 불가능(UNIQUE)값인 rowid를 기준으로 삭제 !
  • id가 5인 레코드를 삭제해보기

DELETE FROM classmates WHERE rowid=5;

AUTOINCREMENT

  • Column attribute
  • SQLite가 사용되지 않은 값이나 이전에 삭제된 행의 값을 재사용하는 것을 방지
CREATE TABLE 테이블이름 (
id INTEGER PRIMARY KEY AUTOINCREMENT,
...
)

UPDATE

  • "update data of existing rows in the table"

  • 기존 행의 데이터를 수정

  • SET clause에서 테이블의 각 열에 대해 새로운 값을 설정

  • classmates 테이블에 id가 5인 레코드를 수정하기. 이름을 홍길동으로, 주소를 제주도로 바꿔주세요!

UPDATE classmates 
set name = '홍길동',
address = '제주도'
WHERE rowid = 5;

CRUD 정리하기

구문예시
CINSERTINSERT INTO 테이블이름 (컬럼1, 컬럼2, ...) VALUES (값1, 값2);
RSELECTSELECT * FROM 테이블이름 WHERE 조건;
UUPDATEUPDATE 테이블이름 SET 컬럼1=값1, 컬럼2=값2 WHERE 조건;
DDELETEDELETE FROM 테이블이름 WHERE 조건;

좋은 웹페이지 즐겨찾기