sql 코드카타
문제 29.
문제
상반기에 판매된 아이스크림의 맛을 총주문량을 기준으로 내림차순 정렬하고 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬하여 조회하는 SQL 문을 작성해주세요.
SELECT count(1)
from first_half
order by 1 desc, shipment_id
땡
SELECT flavor
from first_half
group by total_order
order by total_order desc, shipment_id
땡
SELECT flavor
from first_half
order by total_order desc, shipment_id
잠이 덜 깬 코드카타...
문제 30.
문제
CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해주세요. 이때 자동차 수에 대한 컬럼명은 CARS로 지정하고, 결과는 자동차 종류를 기준으로 오름차순 정렬해주세요.
SELECT count(1) as car
from car_rental_company_car
where in ('통풍시트') or in('열선시트') or in('가죽시트')
order by car_type
SELECT count(1) as car
from car_rental_company_car
where options in ('통풍시트', '열선시트', '가죽시트')
order by car_type
SELECT count(1) as car
from car_rental_company_car
where options in ('통풍시트', '열선시트', '가죽시트')
group by car_type
order by car_type
SELECT count(1) as car , options
from car_rental_company_car
where options in ('통풍시트') or options in ('열선시트') or options in ('가죽시트')
group by car_type
order by car_type
SELECT car_type, count(1) as cars
from car_rental_company_car
where options like ('%통풍시트%') or options like ('%열선시트') or options like ('%가죽시트%')
group by car_type
order by car_type
SELECT car_type, count(1) as CARS
from car_rental_company_car
where options like '%시트%'
group by car_type
order by car_type
in (,,) 나열로는 왜 안 되는지 아직 모르겠다.
sqld 강의
6주차
데이터베이스 구축
oracle live sql 사용
schema 테이블 정보
주석 -- (한줄) , /* */(여러줄)
nullable: 비어있는 값이 들어갈 수 있는가
데이터 추가
INSERT INTO TestUser (id, name, age)
VALUES (1, 'aiden', 22);
7주차
RDMS(relational database management system)
관계형 데이터베이스
sql => crud(create/read/update/delete) 를 위한
* 데이터 정의 언어 DDL(data definition language)
* 데이터 조작 언어 DML(data manipulation language)
* 데이터 제어 DCT(data control)
* 트랜젝션 제어어 TCL(transaction control language)
문법 syntax. select/ insert/ update 로 시작 ;(세미콜론)으로 끝남
statement(문) & clause(절)
문; 독립적 실행 가능
절; 하나의 문 안에 여러 절 들어갈 수 있음
SELECT col_name FROM table_name;
-- 위 문은 두개의 절로 구성
종류 | 설명 |
테이블(Table) | 행과 열로 구성된 2차원의 데이터 저장 구조 |
column/열/속성 | 테이블에 저장되는 데이터의 특징 더 이상 나눌 수 없는 하나하나의 속성 |
row/행/레코드 | 테이블에 저장되는 실제 데이터 (인스턴스) |
DDL 테이블에 관한 영역. 데이터 유형 정의. 숫자 문자 참/거짓(데이터 유형). 데이터 크기.
문자 고정길이(character) 가변길이(varchar)
number(p,s) precision 정밀도 scale 소수 자릿수
제약조건
not null 반드시 데이터를 해당 컬럼에 입력
unique 중복되면 안 됨
primary key 위 두가지를 모두
CONSTRAINT제약조건 PK_example제약조건이름 PRIMARY KEY제약조건(col1, col2, col3)
테이블 생성
CREATE TABLE table_name (
column_1 data_type constraints,
column_2 data_type constraints,
column_3 data_type constraints
);
이름, 데이터 타입, 제약조건
테이블 수정
column 추가
ALTER TABLE 테이블명 ADD 칼럼명 데이터_유형;
ALTER TABLE player ADD address VARCHAR2(80);
constraint 추가
ALTER TABLE 테이블_이름 ADD CONSTRAINT 제약_조건_이름 제약조건 (컬럼_이름);
ALTER TABLE player ADD CONSTRAINT player_fk FOREIGN KEY team_id
REFERENCES TEAM(team_id);
column 삭제
ALTER TABLE 테이블_이름 DROP COLUMN 삭제_할_컬럼_이름;
ALTER TABLE player DROP COLUMN address;
constraint 삭제
ALTER TABLE 테이블_이름 DROP CONSTRAINT 제약_조건_이름;
ALTER TABLE 테이블_이름 MODIFY (
컬럼_이름_1 데이터_유형 [DEFAULT 식] [NOT NULL],
컬럼_이름_2 데이터_유형 [DEFAULT 식] [NOT NULL]
...);
테이블 삭제 drop table. (제약 조건 참조테이블 먼저 삭제)
DROP TABLE 테이블_이름 [CASCADE CONSTRAINT];
테이블은 남기고 데이터만 삭제
TRUNCATE TABLE 테이블_이름;
8주차
DML 데이터 조작 구문 (삽입, 삭제, 조회)
insert 필요한 데이터 저장.
-- 칼럼 리스트 명시
INSERT INTO 테이블_이름 (컬럼1, 컬럼2, ...) VALUES (값1, 값2, ...);
-- 칼럼 리스트 명시 x
INSERT INTO 테이블_이름 VALUES (값1, 값2, ...);
update
UPDATE 테이블_이름 SET 수정_할_컬럼_이름 = 수정_할_새로운_값, ...;
UPDATE player SET back_no = 99;
delete
DELETE [FROM] 테이블_이름;
DELETE FROM player;
DELETE [FROM] 테이블_이름 WHERE 삭제할_조건;
DELETE FROM player WHERE back_no = 50;
별칭 alias 지정
유형 | 부여 방식 | 설명 |
칼럼 | 칼럼명 AS ALIAS(앨리어스)명 | 칼럼명과 앨리어스명 사이에 AS을 써도 되고 안 써도 됨 |
테이블 | 테이블명 ALIAS(앨리어스)명 | 테이블과 앨리어스명 사이에 AS 사용할 수 없음 |
distinct 중복 제거
SELECT DISTINCT first_name FROM employees;
산술연산자
합성연산자
Oracle || 이용 /SQL Server + 이용
SELECT 문자형1 || 문자형2 FROM 테이블_이름;
SELECT CONCAT(문자형1, 문자형2) FROM 테이블_이름;
sql 강의 복습
2주차
*합계 sum
*평균 avg
*count(1)/count(*) 테이블 내 모든 데이터 개수 세기
*distinct 중복 값 제외 후 컬럼 개수 세기
*함수 대소문자 구분 X
*group by
select 카테고리 칼럼, sum(계산 칼럼)
from 테이블명
group by 카테코리 칼럼(or 1)
*order by. 오름차순(작은 값부터)/ 내림차순 desc
* 순서 select -> from -> where -> group by -> order by
23122금_TIL (1) | 2023.12.29 |
---|---|
231228목_TIL (1) | 2023.12.28 |
231226화_TIL (1) | 2023.12.26 |
231222금_TIL (1) | 2023.12.22 |
231221목_TIL (1) | 2023.12.21 |