'SQL'에 해당되는 글 18건

  1. 2010.03.18 외부 키
  2. 2010.03.18 열 구성 변경
  3. 2010.03.17 TRANSACTION
  4. 2010.03.17 INDEX
  5. 2010.03.17 한정 술어
  6. 2010.03.17 VIEW
  7. 2010.03.17 JOIN
  8. 2010.03.16 Sub Query
  9. 2010.03.16 DELETE
  10. 2010.03.16 UPDATE
  11. 2010.03.16 INSERT
  12. 2010.03.12 기타 연산자
  13. 2010.03.12 문자 처리 연산자
  14. 2010.03.12 논리 연산자
  15. 2010.03.12 비교 연산자
  16. 2010.03.12 산술 연산자
  17. 2010.03.12 WHERE절
  18. 2010.03.12 SQL의 기본

외부 키

old/SQL 2010. 3. 18. 14:17
; 서로 다른 테이블의 열끼리 동기화

1) 정의하기


(외부키가 될)열이름 데이터 형 REFERENCES 부모 테이블명(부모 열이름)

2) 테이블 제약 조건

FOREIGN KEY (외부키 열이름) REFERENCES 부모 테이블명(부모 열이름)


3) 나중에 설정하기

(SQL server, MySQL)
ALTER TABLE
자식 테이블 명 ADD FOREIGN KEY (외부 열이름)
                                                  REFERENCES 부모 테이블명(부모 열이름);

(PostgreSQL)
ALTER TABLE
자식 테이블명 ADD FOREIGN KEY (외부 열이름)
                                             REFERENCES 부모 테이블명 부모 열이름;

'old > SQL' 카테고리의 다른 글

Command Line Shell For SQLite  (0) 2010.07.06
열 구성 변경  (0) 2010.03.18
용어  (0) 2010.03.17
TRANSACTION  (0) 2010.03.17
INDEX  (0) 2010.03.17
Posted by jazzlife
,

열 구성 변경

old/SQL 2010. 3. 18. 11:48

1) 열 추가

ALTER TABLE 테이블명 ADD 열이름 데이터형;

(Oracle)
ALTER TABLE 테이블명 ADD (열이름 데이터형);

(PostgreSQL)
ALTER TABLE 테이블명 ADD COLUMN 열이름 데이터형;

* 기본값 갖기
ALTER TABLE 테이블명 ADD 열이름 데이터형 DEFAULT 기본값;


2) 열 삭제

ALTER TABLE 테이블명 DROP COLUMN 열이름;

(Oracle)
ALTER TABLE
테이블명 DROP (열이름);

(PostgreSQL)
ALTER TABLE
테이블명 DROP 열이름;


3) 제약 조건 추가 (PRIMARY KEY, UNIQUE, CHECK 제약 조건)

ALTER TABLE 테이블명 ADD PRIMARY KEY(열이름);

ALTER TABLE 테이블명 ALTER COLUMN 열이름 데이터형 NOT NULL;

(Oracle)
ALTER TABLE
테이블명 MODIFY (item NOT NULL);

(PostgreSQL)
ALTER TABLE
테이블명 ALTER COLUMN 열이름 SET NOT NULL;


4) 테이블 이름 변경

EXEC sp_rename 원래 테이블명, 새 테이블 명

(Oracle)
RENAME
  원래 테이블명TO 새  테이블명;

(MySQL, PostgreSQL)
ALTER TABLE
 원래 테이블명 RENAME TO 새 테이블명;


5) 열 이름 변경

EXEC sp_rename 테이블명.[원래 열이름]', 새 열이름

(MySQL)
ALTER TABLE
 테이블명 HANGE code b_no INTEGER;

(PostgreSQL)
ALTER TABLE
 테이블명 RENAME COLUMN 원래 열이름 TO 새 열이름;


6) 설정 추가

(Oracle)
ALTER TABLE
 테이블명 MODIFY (열이름 DEFAULT 100);

(MySQL, PostgreSQL)
ALTER TABLE
 테이블명 ALTER COLUMN 열이름 SET DEFAULT 100;


7) 설정 해제

ALTER TABLE 테이블명 ALTER 열이름 DROP DEFAULT


8) 열 데이터형 변경

(Oracle)
ALTER TABLE
 테이블명 MODIFY (열이름 변경 후 데이터명);

(MySQL)
ALTER TABLE
 테이블명 MODIFY 열이름 변경 후 데이터형 NOT NULL;


9) 제약 조건 해제

ALTER TABLE
 테이블명 ALTER 열이름 DROP CONSTRAINT UNIQUE;

'old > SQL' 카테고리의 다른 글

Command Line Shell For SQLite  (0) 2010.07.06
외부 키  (0) 2010.03.18
용어  (0) 2010.03.17
TRANSACTION  (0) 2010.03.17
INDEX  (0) 2010.03.17
Posted by jazzlife
,

TRANSACTION

old/SQL 2010. 3. 17. 17:21
; 일련의 수행과정을 하나로 묶는 것

1) COMMIT : 처리 과정을 확정

BEGIN TRANSACTION;
SELECT...
INSERT...
INSERT...
.
.
.
COMMIT;



2) ROLLBACK : 처리 과정을 취소

BEGIN TRANSACTION;
SELECT...
INSERT...
INSERT...
.
.
.
ROLLBACK;


'old > SQL' 카테고리의 다른 글

열 구성 변경  (0) 2010.03.18
용어  (0) 2010.03.17
INDEX  (0) 2010.03.17
한정 술어  (0) 2010.03.17
집합 연산자  (0) 2010.03.17
Posted by jazzlife
,

INDEX

old/SQL 2010. 3. 17. 17:17
; INDEX SCAN을 위해서 만드는 목차 같은 개념


CREATE
INDEX 인덱스명 ON 테이블명(열이름);
.
.
.
DROP INDEX 인덱스명;

'old > SQL' 카테고리의 다른 글

용어  (0) 2010.03.17
TRANSACTION  (0) 2010.03.17
한정 술어  (0) 2010.03.17
집합 연산자  (0) 2010.03.17
VIEW  (0) 2010.03.17
Posted by jazzlife
,

한정 술어

old/SQL 2010. 3. 17. 17:05

; Sub Query의 결과를 비교 조건으로 사용하고 싶을 때 이용

1) ALL


SELECT menu FROM tbl_menu1 WHERE price > ALL
             (SELECT price FROM tbl_menu1 WHERE menu LIKE '%닭%');


2) EXISTS, NOT EXISTS

SELECT * FROM tbl_menber WHERE EXISTS
               (SELECT name FROM tbl_member WHERE no = 5);

SELECT * FROM tbl_menber WHERE NOT EXISTS
               (SELECT name FROM tbl_member WHERE no = 5);

3) ANY

SELECT name, price FROM tbl_stock WHERE price = ANY (SELECT price FROM tbl_stock WHERE country LIKE 'america');

'old > SQL' 카테고리의 다른 글

TRANSACTION  (0) 2010.03.17
INDEX  (0) 2010.03.17
집합 연산자  (0) 2010.03.17
VIEW  (0) 2010.03.17
JOIN  (0) 2010.03.17
Posted by jazzlife
,

VIEW

old/SQL 2010. 3. 17. 15:58
; 자주 사용하는 SELECT문을 등록하여 가상으로 만든 표

테이블 명만 'viw_xxx'로 바꿔주면 된다.

뷰 삭제하기
DROP VIEW viw_tea;

'old > SQL' 카테고리의 다른 글

한정 술어  (0) 2010.03.17
집합 연산자  (0) 2010.03.17
JOIN  (0) 2010.03.17
Sub Query  (0) 2010.03.16
DELETE  (0) 2010.03.16
Posted by jazzlife
,

JOIN

old/SQL 2010. 3. 17. 14:24

; 여러 개의 테이블이나 뷰를 연결


1) CROSS JOIN

SELECT * FROM tbl_a CROSS JOIN tbl_b;
(= SELECT * FROM tbl_a, tbl_b;)

 
id price id name id price id name
1 100 + 1 연필 = 1 100 1 연필
2 250 2 지우개 2 250 1 연필
1 100 2 지우개
2 250 2 지우개
                                                                                       
* 열 지정은 '.'피리어드로 한다. ex) tbl_a.name


2) INNER JOIN

SELECT * FROM tbl_name INNER JOIN tbl_age ON id = no;
(= SELECT * FROM tbl_name, tbl_age WHERE tbl_name.id = tbl_age.no;)

id name no age id name id age
1 kkoma 1 16 1 kkoma 1 16
2 ran + 2 7 = 2 ran 2 7
3 alex 4 14


3) LEFT, RIGHT JOIN

SELECT * FROM tbl_name LEFT JOIN tbl_age ON id = no;
SELECT * FROM tbl_name RIGHT JOIN tbl_age ON id = no;


id name id name id name id age
1 kkoma 1 16 1 kkoma 1 16
2 ran + 2 7 = 2 ran 2 7
3 alex 4 14 3 alex NULL NULL
id name id name id name id age
1 kkoma 1 16 1 kkoma 1 16
2 ran + 2 7 = 2 ran 2 7
3 alex 4 14 NULL NULL 4 14


4) FULL JOIN

SELECT * FROM tbl_name FULL JOIN tbl_age ON id = no;


id name id name id name id age
1 kkoma 1 16 1 kkoma 1 16
2 ran + 2 7 = 2 ran 2 7
3 alex 4 14 NULL NULL 4 14
3 alex NULL NULL

* 예외

(SQL SERVER)
SELECT * FROM tbl_name, tbl_age WHERE  id *= no; <- LEFT JOIN
SELECT * FROM tbl_name, tbl_age WHERE  id =* no; <- RIGHT JOIN

(ORACLE)
SELECT * FROM tbl_name, tbl_age WHERE  id = no(+); <- LEFT JOIN
SELECT * FROM tbl_name, tbl_age WHERE  id = (+)no; <- RIGHT JOIN

'old > SQL' 카테고리의 다른 글

집합 연산자  (0) 2010.03.17
VIEW  (0) 2010.03.17
Sub Query  (0) 2010.03.16
DELETE  (0) 2010.03.16
UPDATE  (0) 2010.03.16
Posted by jazzlife
,

Sub Query

old/SQL 2010. 3. 16. 14:58

1) WHERE 절에서 사용

SELECT * FROM tbl_cake WHERE price >= (SELECT AVG(price) FROM tbl_cake);


2) HAVING 절에서 사용

SELECT code, MIN(arrival) FROM tbl_stock GROUP BY code
            HAVING MIN(arrival) < (SELECT AVG(shipment) FROM tbl_stock);



3) FROM 절에서 사용

SELECT MIN(price)
            FROM (SELECT * FROM tbl_cake WHERE price >= 2500) AS c_price;



* 응용

INSERT INTO tbl_advance SELECT * FROM tbl_results
    WHERE point1 + point2  > (SELECT AVG(point1 + point2) FROM tbl_results);

UPDATE tbl_allowance SET total = (overtime + travel)
     WHERE overtime + travel < (SELECT MAX(overtitme) FROM tbl_allowance);

DELETE FROM tbl_allowance WHERE travel > (SELECT AVG(travel)
            FROM tbl_allowance WHERE overtime >= 40000);

'old > SQL' 카테고리의 다른 글

VIEW  (0) 2010.03.17
JOIN  (0) 2010.03.17
DELETE  (0) 2010.03.16
UPDATE  (0) 2010.03.16
INSERT  (0) 2010.03.16
Posted by jazzlife
,

DELETE

old/SQL 2010. 3. 16. 14:44

1) 조건과 일치하는 데이터 삭제

DELETE FROM tbl_tel WHERE name = '박화정';



2) 모든 데이터 삭제하기

DELETE FROM tbl_tel;

'old > SQL' 카테고리의 다른 글

JOIN  (0) 2010.03.17
Sub Query  (0) 2010.03.16
UPDATE  (0) 2010.03.16
INSERT  (0) 2010.03.16
변환 함수 (CAST)  (0) 2010.03.15
Posted by jazzlife
,

UPDATE

old/SQL 2010. 3. 16. 14:17
; 등록된 값을 수정하기 위해서 사용한다.

1) 하나의 값 수정하기

UPDATE tbl_lunch SET price=7600 WHERE code = 2;


2) 여러 값 수정하기

UPDATE tbl_lunch SET menu='오늘의 런치', price=7900 WHERE code = 1;



'old > SQL' 카테고리의 다른 글

Sub Query  (0) 2010.03.16
DELETE  (0) 2010.03.16
INSERT  (0) 2010.03.16
변환 함수 (CAST)  (0) 2010.03.15
집합 함수 (AVG, SUM, COUNT, MAX, MIN)  (0) 2010.03.15
Posted by jazzlife
,

INSERT

old/SQL 2010. 3. 16. 14:09

1) 열 이름 생략하고 등록하기

INSERT INTO tbl_tea VALUES (2, '홍차', 8500);




2) 특정 열에만 값 등록하기

INSERT INTO tbl_tea (name, code) VALUES ('구기자차', 3);




3) 다른 테이블에 있는 자료 가져오기

INSERT INTO tbl_petlist (id, name) SELECT no, name FROM tbl_cat;

'old > SQL' 카테고리의 다른 글

DELETE  (0) 2010.03.16
UPDATE  (0) 2010.03.16
변환 함수 (CAST)  (0) 2010.03.15
집합 함수 (AVG, SUM, COUNT, MAX, MIN)  (0) 2010.03.15
날짜함수 (GETDATE, DAY, MONTH, YEAR, DATEADD, DATEDIFF  (0) 2010.03.15
Posted by jazzlife
,

기타 연산자

old/SQL 2010. 3. 12. 21:00


; 영어에 가까운 표현을 할 수 있는 기능의 연산자


1) BETWEEN ~ AND


SELECT score FROM tbl_game WHERE (score >= 10) AND (score <= 100); 을 바꾸면?
ex)
SELECT score FROM tbl_game WHERE score BETWEEN 10 AND 100;
* 코드의 길이를 줄일 수 있다.


2) IS NULL , IS NOT NULL

ex)
SELECT * FROM tbl_bookprice WHERE price IS NOT NULL;

SELECT * FROM tbl_bookprice WHERE price IS NULL;

* 열 이름 = NULL 같은 수식은 사용할 수 없다.


3) IN , NOT IN
    ; 지정한 값과 일치하는 데이터만 가져온다.

SELECT player FROM tbl_team WHERE (backno = 5) OR (backno != 10);
SELECT player FROM tbl_team WHERE (backno != 5) AND (backno != 10);
ex)
SELECT player FROM tbl_team WHERE backno IN (5, 10,..);

SELECT player FROM tbl_team WHERE backno NOT IN (5, 10,..);
* 코드의 길이를 줄일 수 있다.




S

'old > SQL' 카테고리의 다른 글

문자열 함수 (LEN, LENGTH, SUBSTRING, SUBSTR, LTRIM, RTRIM, UPPER, LOWER)  (0) 2010.03.15
수치 함수 (CEILING, CEIL, FLOOR, RAND, ROUND)  (0) 2010.03.15
문자 처리 연산자  (0) 2010.03.12
논리 연산자  (0) 2010.03.12
비교 연산자  (0) 2010.03.12
Posted by jazzlife
,

문자 처리 연산자

old/SQL 2010. 3. 12. 20:47


; 문자를 다루기 위해서 사용


1) 문자 연결

SELECT 열이름1 || 열이름2 FROM 테이블명;


* SQL 서버의 경우 '||' 대신 '+'를 사용한다.


2) 문자열 비교

SELECT 열이름 FROM 테이블명 WHERE 비교할 열 이름 LIKE 조건;


* LIKE : 특정 문자를 가져오고 싶을 때 사용

* 조건지정
 기호           기능  사용법                          의미
  % 0~임의수의 문자열  %산% 설악산, 산촌 등 '산'이 들어간 문자열
  _ 한 문자에 해당  _해준 이해준, 민해준 등 임의의 한 문자가 들어간 문자열


ex) '이'로 시작하는 문자열을 골라내는 명령.

SELECT name FROM tbl_namecard WHERE name LIKE '이%;


'old > SQL' 카테고리의 다른 글

수치 함수 (CEILING, CEIL, FLOOR, RAND, ROUND)  (0) 2010.03.15
기타 연산자  (0) 2010.03.12
논리 연산자  (0) 2010.03.12
비교 연산자  (0) 2010.03.12
산술 연산자  (0) 2010.03.12
Posted by jazzlife
,

논리 연산자

old/SQL 2010. 3. 12. 20:08



; 여러 개의 조건을 조합하여 복잡한 조건식을 만들기 위해 사용

사용 가능한 논리 연산자 : AND , OR , NOT



ex1)

SELECT * FROM tbl_exam WHERE ((id%2)<1) AND (score_eng >= 80);


ex2)

SELECT * FROM tbl_exam WHERE (score_kor >= 90) OR (score_eng >= 90);


ex3)

SELECT * FROM tbl_exam WHERE ((score_kor + score_eng) > 150);

'old > SQL' 카테고리의 다른 글

기타 연산자  (0) 2010.03.12
문자 처리 연산자  (0) 2010.03.12
비교 연산자  (0) 2010.03.12
산술 연산자  (0) 2010.03.12
WHERE절  (0) 2010.03.12
Posted by jazzlife
,

비교 연산자

old/SQL 2010. 3. 12. 20:07



; 조건식을 만들 때 사용한다.

사용 가능한 연산자 : = , < , <= , > , >= , <> (!=)


ex1)

SELECT id, name, score_eng FROM tbl_exam WHERE score_eng > 90;


ex2)

SELECT id, name, score_kor FROM tbl_exam WHERE score_name = '김상택';

'old > SQL' 카테고리의 다른 글

문자 처리 연산자  (0) 2010.03.12
논리 연산자  (0) 2010.03.12
산술 연산자  (0) 2010.03.12
WHERE절  (0) 2010.03.12
SQL의 기본  (0) 2010.03.12
Posted by jazzlife
,

산술 연산자

old/SQL 2010. 3. 12. 19:51


; SQL에서 수치 계산을 하기 위해 사용하는 기호

사용 가능한 연산자 : + , - , * , / , %



ex1)
SELECT name, (score_kor + score_eng) AS sum FROM tbl_exam;


ex2)
SELECT name, (score_kor + score_eng) AS sum FROM tbl_exam ORDER BY average DESC;

'old > SQL' 카테고리의 다른 글

논리 연산자  (0) 2010.03.12
비교 연산자  (0) 2010.03.12
WHERE절  (0) 2010.03.12
SQL의 기본  (0) 2010.03.12
MSDE 설치 및 시동  (0) 2010.03.12
Posted by jazzlife
,

WHERE절

old/SQL 2010. 3. 12. 19:45


; 특정 조건에 맞는 데이터만 가져오고 싶을 때 사용.


ex1)
SELECT 열이름 FROM 테이블명 WHERE 조건식;


ex2)
SELECT 열이름 FROM 테이블명 ORDER BY 열이름 조건;


'old > SQL' 카테고리의 다른 글

비교 연산자  (0) 2010.03.12
산술 연산자  (0) 2010.03.12
SQL의 기본  (0) 2010.03.12
MSDE 설치 및 시동  (0) 2010.03.12
OSQL의 시동  (0) 2010.03.12
Posted by jazzlife
,

SQL의 기본

old/SQL 2010. 3. 12. 19:38
1. DB 만들기
  
CREATE DATABASE 데이터베이스명;


2. DB 지정

USE 데이터베이스명;


3. TABLE 만들기

CREATE TABLE 테이블명 (열이름 데이터형 ,.....,);

* 데이터형 :
   (정수형)    INT, SMALLINT
    (실수형)    DECIMAL, NUMERIC, REAL, FLOAT, DOUBLE PRECISION
   (문자열형) CHAR(N), VARCHAR(N), TEXT, NCHAR(N), NVARCHAR(N), NTEXT



4. 제약 조건 지정


제약조건 의미
PRIMARY KEY 데이터 중복, NULL 금지
UNIQUE 한가지 값만 갖는다
CHECK 조건식에 안 맞으면 금지
NOT NULL NULL 값 금지
DEFAULT=값 지정한 값을 초기값으로 지정

ex)
CREATE TABLE tbl_test (code INT UNIQUE, name VARCHAR(30),
                                    height FLOAT, id INT UNIQUE NOT NULL);  



5. 데이터 등록

INSERT INTO 테이블명(열이름,...,..) VALUES (열값,....,..);



6. 데이터 가져오기


   1) 테이블 전체 가져오기

SELECT * FROM 테이블명;


   2) 한열 가져오기

SELECT 열이름 FROM 테이블명;


   3) 여러열 가져오기

SELECT 열이름... FROM 테이블명;



7. 데이터 정렬

   1) 오름차순

SELECT * FROM 테이블명 ORDER BY 열이름 ASC;


   2) 내림차순

SELECT * FROM 테이블명 ORDER BY 열이름 DESC;



8. 기타 옵션


   1) 데이터 그룹화 (지정한 열을 하나로 묶기)

SELECT 열이름,... FROM 테이블명 GROUP BY 열이름;



   2) 중복 데이터 제거

SELECT DISTINCT 열이름 FROM 테이블명;



   3) 열이름 바꿔서 출력

SELECT (구)열이름 AS (신)열이름 FROM 테이블명;

'old > SQL' 카테고리의 다른 글

산술 연산자  (0) 2010.03.12
WHERE절  (0) 2010.03.12
MSDE 설치 및 시동  (0) 2010.03.12
OSQL의 시동  (0) 2010.03.12
adb op for sqlite3  (0) 2010.02.09
Posted by jazzlife
,