mySQL

[mySQL] 데이터베이스

로돌씨 2024. 3. 24. 20:13

data : 정석적인 실제 값

정보 : 데이터를 기반으로 의미를 부여

 

ex) 에베레스트의 높이 = 8848 → data

에베레스트는 세계에서 가장 높은산 → 정보

 

database :

논리적으로 연관된 데이터를 모으고 중복되는 데이터를 최소화하여 구조적으로 통합 / 저장 해놓은것

 

계층형 데이터베이스 :

트리형태의 계층적 구조를 가진 데이터베이스로 최상위계층의 데이터부터 검색

네트워크형 데이터베이스:

하위데이터들끼리의 관계까지 정의 , 설계 및 구현이 복잡하고 어려움

 

SQL:

Structures Query Language :

구조화된 질의 언어

DDL:

Data Definition Language

데이터 정의 언어

DML:

Data Manipulation Language

데이터 조작 언어

DCL:

Data Control Language

데이터 제어 언어

 

실습 : 데이터베이스 만들기 , 데이터 삽입 , 추가 , 조회 , 특정조건 조회 , 갯수확인 , 테이블 삭제

mysql -u root -p
1234


create database multi;

show databases;
use multi;

show tables;

-- STUDENTS란 이름의 테이블 생성
CREATE TABLE STUDENTS(
ID INT,
NAME VARCHAR(100),
PHONE CHAR(20),
ADDR VARCHAR(1000)
);

SHOW TABLES;

-- 해당 테이블에 저장된 정보 전체 조회
SELECT * FROM STUDENTS;

-- 데이터 삽입
INSERT INTO STUDENTS
VALUES(1,'GILDONG','010-1111-1234', 'KOREA');

SELECT * FROM STUDENTS;

-- 데이터 추가
INSERT INTO STUDENTS
VALUES(2,'LEE','010-2222-1234','USA');

-- STUDENTS 테이블에서 
-- ID, NAME 컬럼만 조회
SELECT ID, NAME FROM STUDENTS;

-- ID값이 2인 데이터만 조회
SELECT * FROM STUDENTS WHERE ID=2;

-- ID가 2인 학생의 ID와 NAME 조회
SELECT ID, NAME FROM STUDENTS WHERE ID=2;

--FUNCTION COUNT()를 이용하여 갯수 확인
SELECT COUNT(*) FROM STUDENTS;

-- 테이블 STUDENTS 삭제
-- DROP TABLE STUDENTS;

SHOW TABLES;

 

 

-- 한줄주석 
/* 여러줄 주석 */

show TABLES;

SELECT * FROM EMPLOYEE; 

-- SELECT : 조회용 sql문장 
-- select *(조회용 컬럼)   : 조회하려는 내용(컬럼) 
-- from : 테이블 명  	    : 조회하려는 테이블
-- where 조건				    : 특정조건
-- order by 컬럼 			  : 정렬 
-- ;

-- 모든 행과 컬럼 출력 
select * from EMPLOYEE ; 

-- 모든 사원의 id와 사원명 , 연락처 조회
select EMP_ID , EMP_NAME , PHONE from EMPLOYEE ;

-- 실습 1--
-- 모든 사원의 아이디,사원명,이메일,연락처,부서번호(dept_code),직급코드(job_code) 조회 
 SELECT EMP_ID , EMP_NAME , EMAIL , PHONE , DEPT_CODE , JOB_CODE FROM EMPLOYEE ;

-- WHERE 구문(절)
-- 테이블에서 조건을 만족하는 행을 따로 선택하여 조회 .
-- 여러 개의 조건을 선택하려면 
-- and, or 명령어로 조건을 작성

-- 부서코드가 'D6'인 사원 정보를 모두 조회 
select * from EMPLOYEE  WHERE DEPT_CODE = 'D6';

-- 실습 2 ----
-- 직급이 'j1'인 사원의 사번 , 사원명 , 직급코드 , 부서코드 조회

select  EMP_ID , EMP_NAME , JOB_CODE , DEPT_CODE FROM EMPLOYEE WHERE JOB_CODE = 'J1';

-- 실습 3 --
-- 급여 (샐러리) 가 300만원 이상인 사원의 아이디 사원명직급코드 급여를 조회

SELECT  EMP_ID , EMP_NAME , JOB_CODE , SALARY FROM EMPLOYEE WHERE SALARY >= 3000000;

-- 조건이 2개 이상일 경우 and , or 
-- 부서코드가 d6 이면서 이름이 유재식인 사원의 모든정보 조회 

select * from EMPLOYEE WHERE DEPT_CODE = 'D6' and EMP_NAME  = '유재식' ;

-- 컬럼명에 별칭 달아 조회
-- 1.AS(alias) 표현 
select emp_id as "사원번호" , emp_name as '사원명'
from EMPLOYEE;

-- 2.as 생략 
select emp_id "사원번호" , emp_name '사원명'
from EMPLOYEE;

-- 다생략하고 사용 가능 하지만 띄어쓰기 ',' 같은건 사용 불가능 되도록 as만 생략하고쓸것 
SELECT emp_id 사원번호 , emp_name 사원명
from EMPLOYEE;

-- 실습 4 -- 
-- employee 테이블에서 사원번호가 205번인 사원의 사원명 이메일 급여 입사일자를 조회 단 조회하는 컬럼에 별칭 각각부여
SELECT EMP_NAME 사원명 , EMAIL  이메일 , SALARY 급여 , HIRE_DATE 입사일자  
from EMPLOYEE 
WHERE EMP_ID  = '205';

-- 컬럼값을 이용하여 계산식 적용 
SELECT  EMP_NAME "사원명"  , (SALARY*12) "연봉" , BONUS "보너스" ,(SALARY + (SALARY*BONUS))*12 "연봉총합"  
from EMPLOYEE ;

-- ifnull() : 만약 조회한 컬럼의 값이 null일경우 별도설정한 값으로 변경
SELECT  EMP_NAME "사원명"  , (SALARY*12) "연봉" , BONUS "보너스" ,(SALARY + (SALARY*ifnull(BONUS,0)))*12 "연봉총합"  
from EMPLOYEE ;


-- 컬럼에 일반값 사용하기 
select emp_name , salary*12 , '원' 단위  
from EMPLOYEE ;

-- distinct
-- 만약 해당하는 값이 컬럼에 여러개 존재할경우 중복 제거하고 하나만 조회 
select dept_code from EMPLOYEE ;
select DISTINCT dept_code from EMPLOYEE ;

-- 실습 5번 -- 
-- employee 테이블에서 해당 부서(해외영업 2부) 의 사원들 중 급여를 200 만원보다 많이받는 직원의
-- 사번 ,사원명 , 급여를 조회 

-- 1) "해외영업 2부' 부서코드 찾기 디파트먼트테이블 
SELECT elect * from DEPARTMENT ;
-- 2) 임플로이 테이블에서 문제내용에 맞춰 조회하기  

SELECT EMP_ID 사번 , EMP_NAME 사원명 , SALARY 급여
from EMPLOYEE 
WHERE SALARY >= 2000000 and DEPT_CODE = 'D6';

'mySQL' 카테고리의 다른 글

[mySQL] FOREIGN KEY /삭제 옵션 / IUD  (0) 2024.04.07
[mySQL]그룹에 관련된 명령어  (0) 2024.04.01
[mySQL]연산자 , 함수  (0) 2024.03.29