상세 컨텐츠

본문 제목

231227수_TIL

TIL

by 30303 2023. 12. 27. 20:55

본문

728x90

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

'TIL' 카테고리의 다른 글

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

관련글 더보기