로그인
mysql -u [유저명] -p
💡 연습용 샘플 데이터베이스 추가 -접속 경로에 위치한 sql 스크립트 파일 실행
**mysql> source hr-schema-mysql.sql**
💡 mysql 클라이언트 접속 명령어 -mysql -u 계정명 -p
💡 데이터베이스 목록 조회 -기본으로 서비스 관리를 위한 시스템 데이터베이스들과 설치 시 추가 된 샘플 데이터베이스가 같이 있음.
**mysql> show databases;**
+--------------------+
| Database |
+--------------------+
| hr |
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
6 rows in set (0.01 sec)
파일복사후 파일탐색기에서 cmd→
C:\Users\ITWILL>mysql -u root -p
mysql> source hr-schema-mysql.sql
mysql> show databases;
⇒ hr이 생김. use hr;
💡 데이터베이스 선택 -데이터베이스 목록에서 사용할 데이터베이스의 이름확인하고 use 명령어와 작성 후 실행한다.
**mysql> use hr;**
Database changed
**mysql> show tables;**
+------------------+
| Tables_in_hr |
+------------------+
| countries |
| departments |
| emp_details_view |
| employees |
| job_history |
| jobs |
| locations |
| regions |
+------------------+
8 rows in set (0.01 sec)
💡 SELECT 문법
- 데이터베이스에 저장된 테이블 데이터를 조회할 때 사용하는 문법
- 필수 절로 SELECT, FROM이 있으나, MySQL 기준 리터럴 값만 출력하는 경우 FROM절은 생략가능하다.
- SELECT절은 순서에서 첫번째로 작성되어야 한다.
💡 DESCRIBE
- 테이블 오브젝트의 구조를 묘사해주는 명령어.
DESC[RIBE] 테이블명;
**mysql> DESCRIBE employees;
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| employee_id | int unsigned | NO | PRI | NULL | |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(25) | NO | | NULL | |
| email | varchar(25) | NO | | NULL | |
| phone_number | varchar(20) | YES | | NULL | |
| hire_date | date | NO | | NULL | |
| job_id | varchar(10) | NO | MUL | NULL | |
| salary | decimal(8,2) | NO | | NULL | |
| commission_pct | decimal(2,2) | YES | | NULL | |
| manager_id | int unsigned | YES | MUL | NULL | |
| department_id | int unsigned | YES | MUL | NULL | |
+----------------+--------------+------+-----+---------+-------+
11 rows in set (0.00 sec)**
-Field : 컬럼명
-Type : 자료
자료형 | |
int | 정수 |
varchar() | 가변문자(크기) |
char() | 고정문자(크기) |
date | 날짜(년월일) |
decimal(전체길이,소수점아래n자리) | 실수(정수,소수) |
💡 키워드(예약어) -문법에서 기능이 예약되어 있는 단어
SELECT : 컬럼의 목록 작성할 수 있다.
FROM : 테이블명을 작성할 수 있다.
키워드 + 요소 → 절
- SELECT + 컬럼 목록 → SELECT절
- FROM + 테이블명 → FROM절
절 + 절 → 문장
★SELECT절 + FROM절 → SELECT구문
[모든 컬럼 출력하기]
💡 select * from 테이블명
-SELECT절에 *(Asterisk)기호를 단독으로 작성하면 FROM절 테이블의 모든 컬럼을 순서대로 출력하게 된다.
-컬럼명이 될 수 없음.-(사칙)연산 기호를 보고 알 수 있다.
-사칙연산기호(+,-,*,/) 연산자 우선규칙에 유의
-*가 단독으로 쓰이면 all, 다른 요소와 같이 작성되는 경우 곱셈
mysql> SELECT first_name, hire_date, salary, department_id
-> FROM employees;
+-------------+------------+----------+---------------+
| first_name | hire_date | salary | department_id |
+-------------+------------+----------+---------------+
| Steven | 1987-06-17 | 24000.00 | 90 |
| Neena | 1989-09-21 | 17000.00 | 90 |
| Lex | 1993-01-13 | 17000.00 | 90 |
| Alexander | 1990-01-03 | 9000.00 | 60 |
| Bruce | 1991-05-21 | 6000.00 | 60 |
| David | 1997-06-25 | 4800.00 | 60 |
…
mysql> DESCRIBE departments;
+-----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| department_id | int unsigned | NO | PRI | NULL | |
| department_name | varchar(30) | NO | | NULL | |
| manager_id | int unsigned | YES | MUL | NULL | |
| location_id | int unsigned | YES | MUL | NULL | |
+-----------------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> SELECT department_id, manager_id
-> FROM departments;
+---------------+------------+
| department_id | manager_id |
+---------------+------------+
| 120 | NULL |
| 130 | NULL |
| 140 | NULL |
| 150 | NULL |
| 160 | NULL |
| 170 | NULL |
| 180 | NULL |
…
locations 테이블에서 컬럼 2~3개 선택해서
결과를 출력하는 코드를 작성.
mysql> SELECT location_id, city
-> FROM locations;
+-------------+---------------------+
| location_id | city |
+-------------+---------------------+
| 1000 | Roma |
| 1100 | Venice |
| 1200 | Tokyo |
…
💡 모든 컬럼 출력하기 -SELECT절에 *(Asterisk)기호를 단독으로 작성하면 FROM절 테이블의 모든 컬럼을 순서대로 출력하게 된다.
mysql> SELECT *
-> FROM departments;
+---------------+----------------------+------------+-------------+
| department_id | department_name | manager_id | location_id |
+---------------+----------------------+------------+-------------+
| 10 | Administration | 200 | 1700 |
| 20 | Marketing | 201 | 1800 |
| 30 | Purchasing | 114 | 1700 |
| 40 | Human Resources | 203 | 2400 |
| 50 | Shipping | 121 | 1500 |
| 60 | IT | 103 | 1400 |
💡 표현식
- 연산된 결과를 만들어 출력해주는 문법
- 산술 연산의 연산 우선순위와 동일하게 연산이 이루어진다.
💡 사칙연산 기호
- 곱셈 → * (다른 요소와 같이 작성되는 경우)
- 덧셈 → +
- 나눗셈 → /
- 뺄셈 → -
💡연산 우선 순위
() >> *,/ >> +,-
mysql> SELECT last_name, salary, 12*salary+100
-> FROM employees;
+-------------+----------+---------------+
| last_name | salary | 12*salary+100 |
+-------------+----------+---------------+
| King | 24000.00 | 288100.00 |
| Kochhar | 17000.00 | 204100.00 |
| De Haan | 17000.00 | 204100.00 |
| Hunold | 9000.00 | 108100.00 |
| Ernst | 6000.00 | 72100.00 |
()의 연산자 우선순위가 *(곱셈)보다 더 높기 때문에 괄호 안의 연산이 제일 먼저 실행된 후 곱셈의 연산이 실행되었다.
mysql> SELECT last_name, salary, 12*(salary+100)
-> FROM employees;
+-------------+----------+-----------------+
| last_name | salary | 12*(salary+100) |
+-------------+----------+-----------------+
| King | 24000.00 | 289200.00 |
| Kochhar | 17000.00 | 205200.00 |
| De Haan | 17000.00 | 205200.00 |
| Hunold | 9000.00 | 109200.00 |
| Ernst | 6000.00 | 73200.00 |
| Austin | 4800.00 | 58800.00 |
💡 NULL
- NULL값은 컬럼에 데이터를 입력하지 않은 경우 입력되는 논리적인 데이터이다.
- 숫자, 문자, 날짜 데이터 구분 없이 발생할 수 있다.
- NULL값에 대한 연산의 결과는 내용과 상관없이 NULL값이 된다.
-논리적인 데이터로 사용 불가한 값
NULL , 0, 공백은 다 다른 값
NULL이 있으면 무조건 NULL값 →무효처리
NULL은 최대한 안쓰는게 조으다
-commission_pct 컬럼에는 NULL값이 포함되어 있어 NULL이 연산에 사용된 행의 경우 결과값도 표현식의 내용과는 상관없이 NULL로 출력되는 것을 볼 수 있다.
mysql> SELECT last_name, job_id, salary, commission_pct
-> FROM employees;
+-------------+------------+----------+----------------+
| last_name | job_id | salary | commission_pct |
+-------------+------------+----------+----------------+
| King | AD_PRES | 24000.00 | NULL |
| Kochhar | AD_VP | 17000.00 | NULL |
| De Haan | AD_VP | 17000.00 | NULL |
…
| Russell | SA_MAN | 14000.00 | 0.40 |
| Partners | SA_MAN | 13500.00 | 0.30 |
| Errazuriz | SA_MAN | 12000.00 | 0.30 |
| Cambrault | SA_MAN | 11000.00 | 0.30 |
| Zlotkey | SA_MAN | 10500.00 | 0.20 |
commission_pct 컬럼에는 NULL값이 포함되어 있어 NULL이 연산에 사용된 행의 경우 결과값도 표현식의 내용과는 상관없이 NULL로 출력되는 것을 볼 수 있다.
mysql> SELECT last_name, commission_pct, salary*12 + 12*salary*commission_pct
-> FROM employees;
+-------------+----------------+--------------------------------------+
| last_name | commission_pct | salary*12 + 12*salary*commission_pct |
+-------------+----------------+--------------------------------------+
| King | NULL | NULL |
| Kochhar | NULL | NULL |
| De Haan | NULL | NULL |
| Hunold | NULL | NULL |
…
| Russell | 0.40 | 235200.0000 |
| Partners | 0.30 | 210600.0000 |
| Errazuriz | 0.30 | 187200.0000 |
| Cambrault | 0.30 | 171600.0000 |
| Zlotkey | 0.20 | 151200.0000 |
💡 Column alias
- 쿼리의 출력결과에 보여지는 컬럼의 이름을 바꿔 출력하는 문법
- 임시 별명의 문법. 구문이 실행되는 동안에만 별명이 유지된다.
-식은 같고, 출력명만 다름
-쿼리의 출력결과에 보여지는 컬럼의 이름을 바꿔 출력하는 문법
-임시 별명의 문법 → 영구적이 아닌, 구문 실행 범위 안에서 적용. 한번쓰면 없어짐.
💡 컬럼명 [AS] alias
- alias에는 공백, 특수문자를 포함 할 수 없다.
- AS 키워드는 별도의 추가 기능은 없으며, 생략가능한 키워드이다.
mysql> SELECT last_name AS name, commission_pct comm
-> FROM employees;
+-------------+------+
| name | comm |
+-------------+------+
| King | NULL |
| Kochhar | NULL |
| De Haan | NULL |
| Hunold | NULL |
| Ernst | NULL |
*MySQL 에서만 별칭으로 대+소문자 섞어쓸 수 있음. 대부분 나머지는 섞어서 쓰이지않음
- mysql의 경우 alias의 대소문자 형태를 그대로 유지해서 결과로 출력한다.
- 다만, 다른 데이터베이스의 경우 대부분 대문자로 변환된 결과를 출력한다.
mysql> SELECT last_name AS Name, commission_pct comM
-> FROM employees;
+-------------+------+
| Name | comM |
+-------------+------+
| King | NULL |
| Kochhar | NULL |
| De Haan | NULL |
💡 컬럼명 [AS] "Alias" alias를 ""(큰따옴표)로 묶는 경우 공백이나 특수문자를 포함한 alias값을 사용할 수 있다.
공백을 포함하고 싶은 경우 “” 이용
mysql> SELECT last_name AS "last name", commission_pct "comm pct"
-> FROM employees;
+-------------+----------+
| last name | comm pct |
+-------------+----------+
| King | NULL |
| Kochhar | NULL |
| De Haan | NULL |
| Hunold | NULL |
| Ernst | NULL |
'DB > MySQL' 카테고리의 다른 글
[Mysql] ORDER BY절(정렬) (0) | 2023.09.16 |
---|---|
[Mysql] where절과 연산자(2) (0) | 2023.09.14 |
[Mysql] ★where절(조건문)과 연산자(1) (0) | 2023.09.14 |
[Mysql] DISTINCT (0) | 2023.09.14 |
[Mysql] DBMS란? (0) | 2023.09.14 |