dict1.add('베트남')
dict1.update(['한국', '태국'])
>> : 오른쪽으로 비트 이동. >>1 연산 시, /2와 같은 결과
<< : 왼쪽 비트 이동. <<1 연산 시, *2와 같은 결과
a = "R AND %s" % "STR"
이면 %s 자리에 STR 넣기
a = "R AND STR"
TestList = [1, 2, 3, 4, 5]
TestList = list(map(lambda num:num+100, TestList))
TestList = [101, 102, 103, 104, 105]
break가 없다면 이후 순서대로 전부 실행함
a++: a를 인자로 넘겨주고 a에 1 증가
++a: a에 1 증가 후 a를 인자로 넘겨줌
int a = 0;
printf("%d %d %d %d", ++a, ++a, ++a, ++a);
4 3 2 1
printf 실행 시 우측부터 실행됨
가장 우측에 있는 항의 a는 1 증가 후 출력 → 1
char *s1 = "Hello";
포인터(*s1)에 문자열의 주소 저장
포인터 배열 : 배열 안의 값이 주소값
int *arr[3];
&a: a의 주소값
*arr[1]: arr[1]의 값 (예. 20번지의 값)
**arr: arr의 값의 값 (예. 100번지의 값의 값)
continue 만나면 다음을 실행하지 않음
char n[30];
char *getname() {
gets(n);
return n;
}
char *n1 = getname();
char *n2 = getname();
char *n3 = getname();
printf(n1, n2, n3);
return 0;
마지막에 입력된 애가 전부 출력
n[30]이 전역변수로 선언되어 입력 받을 때마다 새로운 값을 가르키게 됨
인덱스 생성
CREATE INDEX idx_name ON student(name);
인덱스 선언 시 중복도 낮은, 카디널리티 높은 칼럼부터 우선순위로 둬야 함
중복도가 낮으면 카디널리티 상대적으로 높고, 중복도 높으면 카디널리티가 상대적으로 낮음
HAVING: 집계함수를 이용한 필터링이 가능. 그룹을 나타내는 결과집합에 적용
FROM/JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
ALTER TABLE 학생 ADD 주소 VARCHAR(20);
ALTER TABLE 학생 DROP COLUMN 주소;
ALTER TABLE 학생 RENAME 주소 TO 도로명주소;
ALTER TABLE 학생 (MODIFY/ALTER COLUMN/MODIFY COLUMN) 주소 VARCHAR(30);
UPDATE 학생 SET 이름="길동" WHERE 학번=1;
카디널리티: 튜플의 수, 행의 수
디그리: 열의 수
ANY: 조건을 만족하는 값이 하나라도 있으면 결과를 리턴한다
ALL: 모든 조건을 만족하는 결과를 리턴한다
COUNT(col2)를 반환할 때 col2 값에 NULL이 있으면 포함 안 됨
SELECT: sigma 조건식(릴레이션)
PROJECT: π 속성리스트 (릴레이션)
row 삭제 시 연결된 테이블의 자식 row도 함께 삭제함
REFERENCES 직원(부서코드) ON DELETE CASCADE
CREATE VIEW 뷰이름 AS SELECT 컬럼1, 컬럼2 FROM 테이블이름 WHERE 조건;
CREATE OR REPLACE VIEW 뷰이름 AS SELECT 컬럼1, 컬럼2 FROM 테이블이름 WHERE 조건;
DROP VIEW 뷰이름;
DROP VIEW 로 뷰를 삭제할 때 CASCADE 옵션을 넣어 해당 뷰와 의존성 관계가 있는 뷰도 함께 삭제