SELECT status FROM my_contacts
GROUP BY status
ORDER BY status;
ORDER BY는 항상 맨 마지막에 온다.
문자열 추출
UPDATE my_contacts
SET interests = SUBSTR(interests, LENGTH(interest1)+2);
3개 쿼리는 같은 결과
1)
CREATE TABLE profession
(
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
profession varchar(20)
);
INSERT INTO profession (profession)
SELECT profession FROM my_contacts
GROUP BY profession
ORDER BY profession
2)
CREATE TABLE profession AS
SELECT profession FROM my_contacts
GROUP BY profession
ORDER BY profession;
ALTER TABLE profession
ADD COLUMN id INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (id);
3)
CREATE TABLE profession
(
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
profession varchar(20)
) AS
SELECT profession FROM my_contacts
GROUP BY profession
ORDER BY profession
별명(Alias) 사용
열이름을 간단하고 사용하기 쉽게 한다.
CREATE TABLE profession
(
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
profession varchar(20)
);
INSERT INTO profession (profession)
SELECT profession AS mc_prof FROM my_contacts
GROUP BY mc_prof
ORDER BY mc_prof
결과 테이블의 열의 이름이 alias값, 즉 mc_prof로 나온다.
원래 열의 이름은 변하지 않음. 저렇게만 보여주는 것임.
테이블 별명
SELECT profession AS mc_prof
FROM my_contacts AS mc
GROUP BY mc_prof
ORDER BY mc_prof;
AS는 생략 가능하다.
Inner join(내부 조인)
1) Cartesian 조인
한 테이블의 모든 행과 다른 테이블의 모든 행을 짝지워 반환한다.
SELECT t.boy, b.boy
FROM toys AS t
CROSS JOIN
boys AS b;
다음 쿼리도 같은 결과
SELECT toys.toy, boys.boy
FROM toys, boys;
2) equijoin(동등 조인)
같은지를 테스트하는 내부 조인
SELECT boys.boy, toys.toy
FROM boys
INNER JOIN
toys
ON boys.toy_id = toys.toy_id;
3) non-equijoin(비동등 조인)
내부 조인이 같지 않은지를 테스트.
SELECT boys.boy, toys.toy
FROM boys
INNER JOIN
toys
ON boys.toy_id <> toys.toy_id
ORDER BY boys.boy
4) natural join (자연조인)
두 테이블에 같은 이름의 열이 있을 때
SELECT boys.boy, toys.toy
FROM boys
NATURAL JOIN
toys;
GROUP BY status
ORDER BY status;
ORDER BY는 항상 맨 마지막에 온다.
문자열 추출
UPDATE my_contacts
SET interests = SUBSTR(interests, LENGTH(interest1)+2);
3개 쿼리는 같은 결과
1)
CREATE TABLE profession
(
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
profession varchar(20)
);
INSERT INTO profession (profession)
SELECT profession FROM my_contacts
GROUP BY profession
ORDER BY profession
2)
CREATE TABLE profession AS
SELECT profession FROM my_contacts
GROUP BY profession
ORDER BY profession;
ALTER TABLE profession
ADD COLUMN id INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (id);
3)
CREATE TABLE profession
(
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
profession varchar(20)
) AS
SELECT profession FROM my_contacts
GROUP BY profession
ORDER BY profession
별명(Alias) 사용
열이름을 간단하고 사용하기 쉽게 한다.
CREATE TABLE profession
(
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
profession varchar(20)
);
INSERT INTO profession (profession)
SELECT profession AS mc_prof FROM my_contacts
GROUP BY mc_prof
ORDER BY mc_prof
결과 테이블의 열의 이름이 alias값, 즉 mc_prof로 나온다.
원래 열의 이름은 변하지 않음. 저렇게만 보여주는 것임.
테이블 별명
SELECT profession AS mc_prof
FROM my_contacts AS mc
GROUP BY mc_prof
ORDER BY mc_prof;
AS는 생략 가능하다.
Inner join(내부 조인)
1) Cartesian 조인
한 테이블의 모든 행과 다른 테이블의 모든 행을 짝지워 반환한다.
SELECT t.boy, b.boy
FROM toys AS t
CROSS JOIN
boys AS b;
다음 쿼리도 같은 결과
SELECT toys.toy, boys.boy
FROM toys, boys;
2) equijoin(동등 조인)
같은지를 테스트하는 내부 조인
SELECT boys.boy, toys.toy
FROM boys
INNER JOIN
toys
ON boys.toy_id = toys.toy_id;
3) non-equijoin(비동등 조인)
내부 조인이 같지 않은지를 테스트.
SELECT boys.boy, toys.toy
FROM boys
INNER JOIN
toys
ON boys.toy_id <> toys.toy_id
ORDER BY boys.boy
4) natural join (자연조인)
두 테이블에 같은 이름의 열이 있을 때
SELECT boys.boy, toys.toy
FROM boys
NATURAL JOIN
toys;
'공부 > 데이터베이스' 카테고리의 다른 글
2장 introduction to Database Design (0) | 2011.08.06 |
---|---|
9. 서브 쿼리 (subqueries) (0) | 2011.07.19 |
7. 테이블이 여러개인 데이터베이스 설계 (0) | 2011.07.17 |
6. 고급 SELECT문 (0) | 2011.07.17 |
5장 ALTER (0) | 2011.07.16 |