attribute list : 질의어를 통해 검색하고자 하는 attribute table list : 질의어를 통해 찾으려는 relation 이름 condition : 질의어를 통해 찾으려는 검색조건
SQL에서 테이블의 집합성질
-SQL에서 테이블은 꼭 집합일 필요가 없어서 중복 튜플 생성되어도 자동으로 제거가 안됨(너무 비싼 연산 ㅠ, external sort) -유저가 중복튜플에 대한 정보를 원할 수 도 있음 -집단함수의 경우 중복을 제거 하면 안됨 그래서 SQL은 중복을 제거할지 말지 유저에게 선택권을 준다!
SQL 질의어에서 패턴매칭 표현, 산술연산 , 결과 정렬
쿼리결과 순서 정렬
부서별 정렬, 같은 부서내에선 이름순 정렬을 하라고 조건이 주어질때 ORDER BY 절을 이용 => 정렬키들을 명세 한다. ( 부서 번호별 정렬후, 마지막 이름 순서로 정렬후, 첫번째 이름순으로 정렬) 결국 ORDER BY절은 결과값에 대한 정렬이기 때문에 SELECT와 같은 subset을 가진다.
SQL내에서 삽입,삭제,갱신
U1 은 모든 EMPLOYEE에 새로운 행을 새로 삽입한다 모든 Attribute값 다 들어감! U1A 는 삽입하되 몇개의 정보만 넣기때문에 table옆에 삽입할 Attribute명을 써주어야한다. -명세되지 않은 값은 DEFAULT값이나 NULL값을 가짐 -Attribute 순서와 값은 순서가 맞아야함 -table 옆 Attribute의 갯수만큼 써주었다면 추가적으로 같은 방식으로 추가적 튜플 삽입가능
U2 : 참조 무결성 위배, 삽입 거부당함
U2A : PK값이 NULL이 된채로 삽입되는 경우에도 거부당함
U3A : 테이블 생성! U3B : INSERT INTO를 이용해 SELECT의 결과 값을 table에 집어 넣는것이 가능하다
삭제명령 -Lname이 Brown인 employee 삭제 -Ssn이 123456789인 employee 삭제 -5번 부서 직원 삭제 -EMPLOYEE 전부 삭제(전체 table삭제) propagated deletion(연쇄 삭제) - referential triggered actions 문제가 발생할 수 있음 ㅠ
마지막으로 SQL의 3가지 문장은 한번에 한 table만 수정이 가능하다!! 여러개의 table에 대해 적용하는건 불가능,,ㅠ