Citizen Developer : Lecture : SQL

Kakao Share

//1,2,3 일차 강의 요약 정리 노트본

SQL
	실습 2
		데이터 분석 
			select * from tableName limit 5;
			select * from shareholder limit 5;
		
		와일드 카드
			"%"를 사용하여 유사 검색어 찾기
				시작하는 검색
					select * from tablename where column like "%keyword"
				끝나는 검색
					select * from tablename where column like "keyword%"
				포함하는 검색
					select * from tablename where column like "%keyword%" 
			
		데이터 정렬하기
			order by column_name;
			order by column_name desc;

		데이터 삽입하기
			Insert into tableName(column_name1, column_name2)
			values ("value1", "value2");
			
		데이터 수정하기 
			update tableName 
			set columnName = "newValue"
			where columnName = "oldValue"
		
	실습 3
		데이터 숫자 세어보기
			count(*)
			count(column_Name)
			
		일부 데이터만 출력
			limit by number; 
			
		데이터 합 구하기 
			sum(column_name)
			
		데이터 평균 구하기 
			avg(column_name)
			
		데이터 최대 /최소 값 구하기
			max(column_name)
			min(column_name)
			
	실습 4
		집합 연산자 : UNION (합집합, 중복제거)
			(SELECT store_name
			FROM chicken_store
			WHERE available = 'Y') UNION
			(SELECT store_name
			FROM pizza_store
			WHERE available = 'Y') order by store_name;
			
		집합 연산자 : UNION ALL (합집합, 중복제거하지 않음)	
			SELECT lecture_name FROM lecture_basic 
			UNION ALL 
			SELECT lecture_name FROM lecture_special 
			order by lecture_name ;
		
		집합 연산자 : INTERSECT (교집합)
			 (SELECT name, email FROM student) 
			 INTERSECT 
			 (SELECT name, email FROM lecture_special);
			 
		 집합연산자 : EXCEPT (집합 A - 교집합)
			(SELECT student_number, student_name FROM lecture_special)
			EXCEPT 
			(SELECT student_number, student_name FROM lecture_basic) order by student_number;
			
		집합연산자 : 카티션 프로덕트 : CROSS JOIN
			 
	실습 5
		단일행 서브쿼리 
			select * from tableName 
			where column_name > (
				select column_name 
				from tableName 
				where column_name = value
			)
	
		다중행 서브쿼리 
			select * from tableName
			where column IN (
				select column_name 
				from tableName 
				where column_name = value
			)
			
			select * from tableName
			where column ALL (
				select column_name 
				from tableName 
				where column_name = value
			)
		
			select * from tableName
			where column ANY (
				select column_name 
				from tableName 
				where column_name = value
			)
			
			SELECT product_id, product_name
			FROM PRODUCT
			WHERE stock >= 1
			AND (product_id, product_name) IN (
				SELECT product_id, product_name
				FROM ELICE_MART
				WHERE stock = 0
			) order by product_id;
		
	실습 6 
		뷰
			CREATE VIEW EMPLOYEE_DEV AS
			SELECT employee_id, salary
			FROM EMPLOYEE
			WHERE department_name = '개발';
			
    연습장
		Left join : 왼쪽 데이블이 데이터 기준으로 검색되도록 수행
			SELECT *
			FROM salaries
			LEFT JOIN employees ON salaries.emp_no = employees.emp_no;
			
		Inner join : 양쪽 테이블 모두에 존재하는 데이터만 추출 
			SELECT *
			FROM salaries
			INNER JOIN employees ON salaries.emp_no = employees.emp_no;
		
		ColumnName In 다중행 서브쿼리 :
			SELECT book_id, book_name, book_writer, price
			FROM BOOK
			WHERE book_id IN (
				SELECT book_id
				FROM BOOK_STOCK
				WHERE stock >= 1
			);
			
	구문 복습 :
		DISTINCT column _name : 
			SELECT DISTINCT department
			FROM employees;
		
		column_name BETWEEN A and B :
			salary BETWEEN 50000 AND 80000;
		
		column_name IN 다중데이터 :
			 IN ('HR', 'Finance', 'Marketing');
		
		DML
			LIKE
			ORDER BY
			INSERT INTO , VALUES
			UPDATE
			DELETE
		
		HAVING : WHERE과 유사하나 Group by 된 결과에 대해서 추가 조건절로 사용 가능. 
			GROUP BY department HAVING AVG(salary) >= 60000;
			
		INNER JOIN / ON : On에서 조건을 넣어주어야 결합된 테이블이 생성 가능함. 
			JOIN departments d ON e.department_id = d.department_id;
		
		LEFT JOIN / RIGHT JOIN
			
		RANK / DENSE_RANK / ROW_NUMBER
			SELECT employee_id, employee_name, department_id, 
				RANK() OVER (PARTITION BY department_id ORDER BY employee_id) AS ranking
			FROM employees;

			select todo, target_date, 
				RANK() over (partition by todo order by target_date) as ranking 
            from park_todo_db;
			
			SELECT employee_id, employee_name, department_id, 
				DENSE_RANK() OVER (ORDER BY department_id) AS dense_rank
			FROM employees;
		
			SELECT employee_id, employee_name, department_id, 
				ROW_NUMBER() OVER (ORDER BY department_id) AS row_num
			FROM employees;
		
		FRIST_VALUE / LAST_VALUE / LAG / LEAD
			SELECT department, employee_name, salary,
				FIRST_VALUE(employee_name) OVER (PARTITION BY department ORDER BY salary DESC) AS highest_paid_employee
			FROM employees;
            
//시험 예상문제 (강사님 제공)

	SQL실습2 퀴즈2 : 데이터 정렬 (내림차순)
		Order by x DESC

	SQL실습3 퀴즈2 : 테이블 안에 있는 정보 5개만 조회
		select * from table_name limit 5;

	SQL실습3 퀴즈3 : 총점 / 평균 값 산정
		select sum(math) from table_name;

	Inner join 조인조건문 서술 :
		select * 
		from salaries 
		inner join employees on salaries.emp_no = employees.emp_no;

	having 빈칸채우기 :
		group by department having avg(salary) >= 6000

	any :
		where column any ('1', '2', '3')

	like 연산자 사용 :
		select * from table_name where column like "%keyword%"

	sql명령문 서술순서 :
		(select from where group by having order by)	
            

//Rank() 부분 관련 결과 보충 설명 :
– Rank() over (partiton by column_name order by column_name)


//SQL 실습 답안 : 나스카 이슈로 문서가 보이지 않는 것으로 보임.
SQL 실습 답안 (1)

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

카카오톡 채널 친구추가
0
Would love your thoughts, please comment.x
()
x