본문 바로가기
oracle

oracle(SQL기초)_2024-06-21

by 앵보몬 2024. 6. 21.
728x90
반응형

MySQL이란?

MySQL은 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템(RDBMS: Relational DBMS)입니다.

MySQL은 오픈 소스이며, 다중 사용자와 다중 스레드를 지원합니다.

또한, C언어, C++, JAVA, PHP 등 여러 프로그래밍 언어를 위한 다양한 API를 제공하고 있습니다.

MySQL은 유닉스, 리눅스, 윈도우 등 다양한 운영체제에서 사용할 수 있으며, 특히 PHP와 함께 웹 개발에 자주 사용됩니다.

MySQL은 오픈 소스 라이센스를 따르기는 하지만, 상업적으로 사용할 때는 상업용 라이센스를 구입해야만 합니다.

 

MySQL의 장점

MySQL이 가지는 장점은 다음과 같습니다.

1. 오픈 소스 라이센스를 따르기 때문에 무료로 사용할 수 있습니다.

2. 다양한 운영체제에서 사용할 수 있으며, 여러 가지의 프로그래밍 언어를 지원합니다.

3. 크기가 큰 데이터 집합도 아주 빠르고 효과적으로 처리할 수 있습니다.

4. 널리 알려진 표준 SQL 형식을 사용합니다.

5. MySQL 응용 프로그램을 사용자의 용도에 맞게 수정할 수 있습니다.

SQL(Structured Query Language)이란 데이터베이스에서 자료를 처리할 때 사용하는 구조화된 질의어를 의미합니다.

 

 

MySQL의 역사

MySQL은 1995년 5월에 MySQL AB사에 의해 첫 번째 버전이 발표됩니다.

그리고 1998년에는 윈도우 버전(Windows 95와 NT)의 MySQL이 발표됩니다.

2008년에 썬 마이크로시스템즈사가 MySQL AB를 인수함과 동시에 5.1 버전을 발표합니다.

이후 2009년에 썬 마이크로시스템즈사가 오라클과 인수 합병됨에 따라 MySQL에 대한 권리가 오라클로 넘어가게 됩니다.

https://www.tcpschool.com/mysql/mysql_intro_intro

 

DB 생성

--drop table members;
--drop table buy;
-- 회원 테이블 생성
CREATE TABLE members
( mem_id      VARCHAR2(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
  mem_name    VARCHAR2(20) NOT NULL, -- 이름
  mem_number  NUMBER(3) NOT NULL,  -- 인원수
  addr        VARCHAR2(10) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
  phone1      CHAR(3), -- 연락처의 국번(02, 031, 055 등)
  phone2      CHAR(8), -- 연락처의 나머지 전화번호(하이픈제외)
  height      NUMBER(3),  -- 평균 키
  debut_date  DATE  -- 데뷔 일자
);

-- 구매 테이블 생성
CREATE TABLE buy
( num         NUMBER(8) PRIMARY KEY, -- 순번(PK)
  mem_id      VARCHAR2(8) NOT NULL, -- 아이디(FK)
  prod_name   VARCHAR2(20) NOT NULL, -- 제품이름
  group_name  VARCHAR2(10), -- 분류
  price       NUMBER NOT NULL, -- 가격
  amount      NUMBER(5) NOT NULL, -- 수량
  CONSTRAINT fk_members FOREIGN KEY (mem_id) REFERENCES members(mem_id)
);

-- member 테이블에 데이터 삽입
INSERT INTO members VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, TO_DATE('2015-10-19', 'YYYY-MM-DD'));
INSERT INTO members VALUES('BLK', '블랙핑크', 4, '경남', '055', '22222222', 163, TO_DATE('2016-08-08', 'YYYY-MM-DD'));
INSERT INTO members VALUES('WMN', '여자친구', 6, '경기', '031', '33333333', 166, TO_DATE('2015-01-15', 'YYYY-MM-DD'));
INSERT INTO members VALUES('OMY', '오마이걸', 7, '서울', NULL, NULL, 160, TO_DATE('2015-04-21', 'YYYY-MM-DD'));
INSERT INTO members VALUES('GRL', '소녀시대', 8, '서울', '02', '44444444', 168, TO_DATE('2007-08-02', 'YYYY-MM-DD'));
INSERT INTO members VALUES('ITZ', '잇지', 5, '경남', NULL, NULL, 167, TO_DATE('2019-02-12', 'YYYY-MM-DD'));
INSERT INTO members VALUES('RED', '레드벨벳', 4, '경북', '054', '55555555', 161, TO_DATE('2014-08-01', 'YYYY-MM-DD'));
INSERT INTO members VALUES('APN', '에이핑크', 6, '경기', '031', '77777777', 164, TO_DATE('2011-02-10', 'YYYY-MM-DD'));
INSERT INTO members VALUES('SPC', '우주소녀', 13, '서울', '02', '88888888', 162, TO_DATE('2016-02-25', 'YYYY-MM-DD'));
INSERT INTO members VALUES('MMU', '마마무', 4, '전남', '061', '99999999', 165, TO_DATE('2014-06-19', 'YYYY-MM-DD'));

-- buy 테이블에 데이터 삽입
INSERT INTO buy VALUES(1, 'BLK', '지갑', NULL, 30000, 2);
INSERT INTO buy VALUES(2, 'BLK', '맥북프로', '디지털', 10000, 1);
INSERT INTO buy VALUES(3, 'APN', '아이폰', '디지털', 200000, 1);
INSERT INTO buy VALUES(4, 'MMU', '아이폰', '디지털', 20000, 5);
INSERT INTO buy VALUES(5, 'BLK', '청바지', '패션', 50000, 3);
INSERT INTO buy VALUES(6, 'MMU', '에어팟', '디지털', 80000, 10);
INSERT INTO buy VALUES(7, 'GRL', '노트북2', '서적', 1500, 5);
INSERT INTO buy VALUES(8, 'APN', 'e-사전', '서적', 2500, 2);
INSERT INTO buy VALUES(9, 'APN', '청바지', '패션', 3800, 1);
INSERT INTO buy VALUES(10, 'MMU', '지갑', NULL, 1500, 1);
INSERT INTO buy VALUES(11, 'APN', '모두의 sql', '서적', 150, 1);
INSERT INTO buy VALUES(12, 'MMU', '지갑', NULL, 300, 4);

-- member 테이블 조회
SELECT * FROM members;

-- buy 테이블 조회
SELECT * FROM buy;

 

select MEM_NAME, ADDR, DEBUT_DATE from members;
SELECT * FROM members;

select *
from members
where addr = '서울';

select *
from members
where MEM_NAME = '트와이스';

select *
from members
order by MEM_number desc;

select employee_id, first_name, last_name
from employees;
select num as 순번, MEM_ID as 회원아이디, PROD_NAME as 제품이름, GROUP_NAME as 상품목록, PRICE as 상품가격, AMOUNT as 상품수량, (price*amount)*0.8 as "할인금액(20%)"
from buy
order by "할인금액(20%)" desc,
            "회원아이디" desc,
            "제품이름" desc,
            "상품목록" desc,
            "상품가격" desc,
            "상품수량" desc,
            "순번" desc;

 

select a.department_id, a.department_name, b.min_salary, b.max_salary, c.country_name
from departments a, jobs b, countries c

 

 

728x90
반응형

'oracle' 카테고리의 다른 글

oracle(subquery)_2024-06-26  (2) 2024.06.26
oracle(JOIN)_2024-06-25  (0) 2024.06.25
oracle(집계함수)_2024-06-25  (2) 2024.06.25
oracle(문자열)_2024-06-24  (0) 2024.06.24
oracle(기본문법)_2024-06-24  (0) 2024.06.24