[PRIMARY KEY] 각 테이블의 코드를 식별한다. 중복되지 않은 고유값을 포함한다. NULL 값을 포함할 수 없다. ( NOT NULL 을 안해도 NOT NULL이 된다. ) 테이블 당 하나의 기본키를 갖는다. ( 두 개 이상의 칼럼을 하나의 기본 키로서 가질 수도 있다. ) 어차피 하나의 기본키 이기 때문에 CONSTRAINT constraint_name 을 해줄 필요가 없다. 하나의 칼럼을 기본 키로 가질 때 CREATE TABLE person ( pid int NOT NULL, name varchar(16), age int, sex char, PIMARY KEY (pid) ) 두개 이상의 칼럼을 기본 키로 가질 때 CREATE TABLE animal ( name varchar(16) NOT N..
ORDER BY 없이 LIMIT을 쓸 때는 순서가 달라질 수 있다는 것을 감안하고 써야겠습니다. oil_price 테이블과 refueling 테이블을 주유소 상호를 기준으로 right join 하고, 테이블의 이름으로 정렬했을 때, 3번째 데이터의 상호는? SELECT r.이름, o.상호 FROM oil_price o RIGHT JOIN refueling r ON o.상호 = r.주유소 ORDER BY r.이름; SELECT r.이름, o.상호 FROM oil_price o RIGHT JOIN refueling r ON o.상호 = r. 주유소 ORDER BY r.이름 LIMIT 3; ORDER BY r.이름으로 조회했기 때문에, LIMIT 몇으로 두냐에 따라 상호명의 순서가 달라지는 것으로 보입니다. ..
select * from celeb c left join refueling r on c.name = r.이름 union select * from celeb c right join refueling r on c.name = r.이름; SELECT c.name FROM celeb c LEFT JOIN refueling r ON c.name = r.이름 UNION SELECT c.name FROM celeb c RIGHT JOIN refueling r ON c.name = r.이름; FULL OUTER JOIN 을 하기 위해 UNION을 사용 하였다. 예상 ) 자료 A와 자료 B를 LEFT JOIN 한 것과 자료 A와 자료 B를 RIGHT JOIN 한 것을 UNION 하므로 자료 A와 자료 B 사이에 겹치는..
ipython에서 sql을 다루다보면 내가 만든 sql 코드가 제대로 동작하는지 확인하기 위해 명령 프롬포트 창에서 sql을 통해 조회해야할 일이 생기는데 이따금씩 다음의 에러와 함께 sql이 동작 하지 않을 때가 있다. DatabaseError: 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 주로 반복문 통해 데이터 베이스에 데이터를 채울 때, 반복문이 중간에 끊겨서 코드를 수정후 데이터를 다시 채워줘야 할 때 명령 프롬포트 창에서 DELETE FROM 테이블 명 과 같이 데이터를 지운 후 채워주려고 할 때 이러한 에러 코드가 곧잘 뜬다. 쿼리가 엉켜서 그런걸로 생각되는데 사실 정확한 이유는 잘 모르겠다. 컴퓨터를 껏다 킬 필..