MySQL

MySQL 기본문법

ssmm95 2024. 9. 9. 15:17

<SQL기본>

**왼쪽 스키마 쪽에 내가 사용할 DB 확인
1. SELECT문
1) 원하는 데이터를 가져와 주는 기본적인 <SELECT ... FROM> 
데이터 베이스 내의 테이블에서 원하는 정보를 추출하는 명령 
SELECT문은 다양한 옵션으로 많이 사용되는 형태로 요약한 구조 

SELECT 열_이름
          FROM 테이블_이름
          WHERE 조건
          GROUP BY 
          HAVING
          ORDER BY

- USE 구문

USE 데이터베이스_이름;

이렇게 지정해 놓은 후에는 특별히 다시 USE문을 사용하거나 다른 DB를 사용하겠다고 명시하지 않는 이상 

모든 SQL문은 '데이터베이스_이름' 에서 수행됨.

*있고 없고를 떠나서 실행은 되지만 그 안에 있는 쿼리 실행 안 됨

 

- Output 부분

1) 초록색 아이콘 : 정상적으로 쿼리가 실행된 상태를 나타냄 . 오류인 경우 빨간색 아이콘 나타남

2) #1 : 실행한 쿼리의 순번을 나타냄 . 실행한 궈키락 여러개라면 1,2,3, ... 순서로 증가함

3) Action : 실행된 쿼리문이 나옴

4) Message : SELECT문은 조회된 행의 갯수가 나옴. 오류인경우 오류 번호 및 오류 메시지가 나타남

5) Duration/Fetch : Duration은 SQL문이 실행 되는데 걸린 시간 (초) , Fetch는 데이터를 테이블에서 

가져오는데 걸린 시간(초) 표시됨

 

원래 테이블의 전체이름은 '데이터베이스_이름.테이블_이름' 형식으로 표현됨

 

(shopdb;로 되어있더라도 다른테이블 확인가능   '데이터베이스_이름.테이블_이름' 형식 으로)

 

여려개의 열을 가져오고 싶으면 콤마(,)로 구분하면 됨. 또한 열 이름의 순서는 사용자 마음대로 바꿔도 스키마 쪽에 내가 사용할 DB 확인

1. SELECT문

1) 원하는 데이터를 가져와 주는 기본적인 <SELECT ... FROM> 

데이터 베이스 내의 테이블에서 원하는 정보를 추출하는 명령 

SELECT문은 다양한 옵션으로 많이 사용되는 형태로 요약한 구조 

 

SELECT 열_이름

          FROM 테이블_이름

          WHERE 조건

          GROUP BY 

          HAVING

          ORDER BY

 

- USE 구문

 

USE 데이터베이스_이름;

 

이렇게 지정해 놓은 후에는 특별히 다시 USE문을 사용하거나 다른 DB를 사용하겠다고 명시하지 않는 이상 

 

모든 SQL문은 '데이터베이스_이름' 에서 수행됨.

 

*있고 없고를 떠나서 실행은 되지만 그 안에 있는 쿼리 실행 안 됨

 

 

 

- Output 부분

 

1) 초록색 아이콘 : 정상적으로 쿼리가 실행된 상태를 나타냄 . 오류인 경우 빨간색 아이콘 나타남

 

2) #1 : 실행한 쿼리의 순번을 나타냄 . 실행한 궈키락 여러개라면 1,2,3, ... 순서로 증가함

 

3) Action : 실행된 쿼리문이 나옴

 

4) Message : SELECT문은 조회된 행의 갯수가 나옴. 오류인경우 오류 번호 및 오류 메시지가 나타남

 

5) Duration/Fetch : Duration은 SQL문이 실행 되는데 걸린 시간 (초) , Fetch는 데이터를 테이블에서 

 

가져오는데 걸린 시간(초) 표시됨

 

 

 

원래 테이블의 전체이름은 '데이터베이스_이름.테이블_이름' 형식으로 표현됨

 

 

 

(shopdb;로 되어있더라도 다른테이블 확인가능 '데이터베이스_이름.테이블_이름' 형식 으로)

 

 

 

여려개의 열을 가져오고 싶으면 콤마(,)로 구분하면 됨. 또한 열 이름의 순서는 사용자 마음대로 바꿔도 됨

SELECT first_name, last_name, gender from employees;
SELECT first_name, gender,last_name  from employees;

 

실습1) 데이터베이스 이름, 테이블 이름, 필드 이름이 정확히 기억나지 않거나 또는 각 이름의 철자가 확실하지 않을 떄 

찾아서 조회하는 방법을 실습. 지금 조회하고자 하는 내용이 employees 데이터 베이스에 있는 

employees 테이블의 first_name 및 gender열이라고 가정

name이 테이블

 

________________

열 이름의 별칭 : 열 이름을 별도의 별칭으로 지정할 수 있음

열 이름 뒤에 AS 별칭 형식으로 붙임 

하지만 , 별칭의 중간에 공백이 있따면 꼭 작음 따옴표('')로 별칭을 감싸줘야 함, 

또, AS는 붙이거나 생략 가능. 

권장하기로는 별칭을 붙일 경우에도 되도록 작음 따옴표('') 안에  별칭을 사용하기를 권장함

예) SELECT first_name AS 이름, gender 성별, hire_date '회사 입사일' from employees;

 

 

primary key ; 기본키 (중복값 나올 수 없음) >  기본키 선택된 곳은 무조건 not null일 필요함

 

<데이터 타입>

1) int

종류의 크기 비교 

tinyint< samllint < int < bigint

tinyint의 크기 : 0 ~ 255 > 용량이 1바이트

smallint의 크기 : -32,768 ~ 32,7767 > 용랑이 2바이트

int의 크기 : 용량이 4바이트

bigint의 크기 : 룡량이 8바이

 

2) char , varchar 차이

char와 varchar는 영문자를 기준으로 1byte 할당.  영문자를 입력할 계획이라면 이것을 선택

NChar와 NVarchar는 유니코드를 기준으로 2byte 할당함. 한글을 입력할 계획이라면 이것을 선택

MySQL 8.0dms char 와 varchar 모두 UTF-8 코드 사용

UTF-8코드는 영문/숫자/기호를 입력하면 내부적으로 1바이트를 할당, 한글/중국어/일본어 등을 입력하면

내부적으로 3byte 할당되므로 특별히 NChar와 NVarchar 사용할 필요가 없음

 

결론적으로 char(10)으로 설정하면 영문이든 한글이든 10글자까지 입력할 수 있으며, 

내부적으로는 MySQL이 공간을 할당하므로 사용자는 특별히 신경쓸 필요는 없음

>결론 char 사용하자

 

- 데이터베이스 개체의 이름 규칙 : 데이터베이스(=스키마) 개체의 이름을 식별자라고함

데이터베이스 개체 : 데이터베이스, 테이블, 인덱스 , 열, 뷰, 트리거 , 스토어드 프로시저 등과 같은 객체들을 의미

알파벳 a~z, A~Z, 0~9 , $, _ 를 사용할 수 있음 하지만 기본 설정은 영문 대문자나 소문자 어떤것을 사용해도 소문자로 생성

 

-개체 이름은 최대 64글자로 제한됨

-예약어 사용하면 안 됨 , 예로 CREATE TABLE select ... 안 됨 > select는 예약어 

-개체 이름은 원칙적으로 중간에 공백이 이으면 안되지만 , 중간에 공백을 꼭 사용하려면 백택(``)으로 묶기

예로 CREATE TABLE 'My Table' ... 가능

-개체에 이름을 줄 때는 되도록 알기 쉽게 주는 것이 좋고, 너무 길게 주는 것보다는 짧으면서ㅗ도 이름만으로도 

어떤 것인지 파악할 수 있는 것이 바람직함

다음은 나쁜 예)

CREATE TABLE abc 어떤 테이블인지 의미파악할 수 없음

CREATE TABLE sales ('Price of Priduct' int, ...) > 열 이름의 의미 파악은 쉽게 되지만 너무 길다

-Linux에서는 데이터베이스 이름과 테이블 이름은 모두 소문자로 사용해야함

그러므로 Windows와 Linux 모두 동일한 코드 사용하려면 개체 이름을 모두 소문자로 사용하는 것이 더 편리함

(대부분 db는 Linux 에 설치되어있음)

 

*쿼리 저장할때 한글폴더 사용 하지말고 따로 영문이름폴더사용해서 저장

 

 

'MySQL' 카테고리의 다른 글

MySQL_Connection 창  (0) 2024.09.10
MySQL_비교연산자, 논리연산자  (0) 2024.09.09
MySQL_MySQL  (0) 2024.09.09
MySQL_NoSQL  (0) 2024.09.09
MySQL SELECT. 02 문법  (2) 2024.09.09