/** SQL기초
// 테이블 생성
CREATE TABLE IF NOT EXISTS users ( 테이블을 생성, if 그 전에 users테이블이 없었으면
id int(11) NOT NULL AUTO_INCREMENT, id 는 int(정수) (11)개의 자리 NULL값은 안됨. AUTO_INCREMENT === i++
name varchar(255) NOT NULL, varchar(문자)
age int(11) NOT NULL,
PRIMARY KEY (id) 각 행을 고유하게 식별하게 끔 정의, insert로 건들 수 없음!(건들면 에러)
);
// 데이터 삽입
INSERT INTO users (name, age) VALUES users 의 name과 age에 각각 삽입 values는 저기 아래
('이용우', 29); <<--
// 데이터 조회
SELECT * FROM users; 전부다 조회 users에서
**/
/** SQL 제약조건
Unique : 중복된 키를 가질수 없음. ID나 Email 같은 정보.
NULL : NULL 아무런 값도 받지 않음. NOT NULL : 그반대. NULL 조건을 넣으면 DEFAULT는 NULL
Primary Key : 각 행을 고유하게 식별하게 끔 정의.
Foreign Key : 테이블 간의 관계를 설정. 한 컬럼이 다른 테이블의 특정 행을 참조하도록 설정.
**/
/** SQL 외부참조 (Foreign Key)
create 다 작성하고, create
FOREIGN KEY (컬럼명) REFERENCES 참조테이블명 (참조컬럼명) REFERENCES 이후의 참조 테이블이
ON DELETE NO ACTION 삭제 되었을 때, 아무것도 하지 않는다.(에러발생) 만약 삭제시 내역이 존재하면 삭제를 막음.
ON UPDATE CASCADE, 업데이트 되었을 때, 따라감! CASCADE 는 참조테이블명 (참조컬럼명) 의 행방을 따라감.
**/
/** SQL 의 변경, 삭제시 조건
ON DELETED 삭제시
ON UPDATE 업데이트시
CASCADE 변경/삭제를 따라감.
NO ACTION 아무것도 안함.
SET NULL 기본값을 NULL로 변경
SET DEFAULT 현재 데이터를 기본값으로 변경 (DEFAULT의 DEFAULT는 NULL)
**/
/** SQL 의 JOIN
SELECT JOIN 을 하면 연결되어있는 테이블까지 한꺼번에 SELECT한다는 것
SELECT 테이블(P아니면U).컬럼이름,테이블(P아니면U).컬럼이름...
FROM POSTS AS P (AS === CONST랑 비슷하다. CONST POSTS = P)
JOIN USERS AS U (AS === CONST랑 비슷하다. CONST USERS = U)
ON P.USERID = U.USERID; (P.USERID와 U.USERID 가 연관관계를 맺고있으므로, 써줘야함. ON 쓰면 중복 삭제.)
**/