SQL 기본

2023. 8. 1. 17:21SQL

DB 준비

apt -y update

apt dist-upgrade -y

apt install mariadb-server mariadb-client -y

 

 

DB 확인

root@ubuntu:~# mysql
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.001 sec)

 

DB 사용

MariaDB [(none)]> use testdb;
Database changed

 

 

사용 중인 DB 확인

MariaDB [testdb]> select database();
+------------+
| database() |
+------------+
| testdb     |
+------------+
1 row in set (0.000 sec)

 

 

DB의 기본적인 정보 확인

mysql의 버전, 등 여러 정보를 확인할 수 있다



Data Definition Language

DB에 대한 간단한 조작법들(create, alter, drop)에 대해 알아보자.

DB 생성 및 확인

 

DB제거 및 확인

 

 

DB가 준비됐다면 table을 본격적으로 다뤄보자.

테이블 생성 이때 각 열들의 속성들을 구체적으로 적어줘야 한다

 

테이블의 스키마를 확인

 

테이블 삭제

 

테이블명 바꾸기

 

테이블에서 열 추가

 

테이블 컬럼 삭제

 

컬럼의 속성 및 이름 수정

 

동일 이름도 가능하다

 

modify를 이용한 컬럼 속성의 수정

 

 

Data Manipulation Language

앞에서 간단하게 DDL에 대해 알아봤다. 이번에는 select, insert, update, delete와 같은 DML에 대해 알아보자.

 

테이블의 스키마르 확인 후 각 데이터를 기입한다. 문자와 숫자를 잘 구별하자

 

모든 것을 나타낼 때는 * 을 사용한다

 

필요한 열만 볼 수 있고, where을 사용하면 제한적으로 출력할 수 있다

 

데이터를 수정할 때는 update  set  where  구문을 기억하자

 

데이터 삭제 시에는 delete from 구문을 사용

 

출력되는 컬럼을 제한할 때 limit을 사용

 

 

좀 더 상세한 명령어들을 알아보기 위해 아래와 같이 테이블을 준비하자.

 

열의 중복을 제거할 때 distinct를 사용, 이때 기준이 되는 것이 여러 개라면 기준이 하나일 때와 다르다

 

패턴 검색 시에는 like 사용, %d: d로 끝나는 것을 검색 d%: d로 시작하는 것을 검색 %d%: d가 들어있는 것을 검색

 

데이터가 null이 아닌 것은 is not null

 

연산이나 and, or을 사용하여 조건을 줄 수도 있다

 

등호도 가능

 

정렬 시에는 order by 기준되는 열, asc은 오름차순, desc은 내림차순이다. 이때 default는 asc

 

출력되는 것을 as 이후의 명칭으로 변경이 가능하다

 

열을 임의로 추가도 가능

 

위에서 배운 것을 이와 같이 응용할 수 있다

 

컴럼에 직접 사칙연산도 가능

 

 

이제 집계함수에 대해서도 알아보자.

count는 데이터의 개수를 세고, sum은 합을 나타낸다

 

avg는 평균

 

최댓값은 max, 최솟값은 min

 

같이 데이터끼리 묶을 때는 group by를 사용한고, 이때 group by를 사용하면 그룹별로 집계함수가 적용된다

 

group by에 조건을 추가할 때는 where이 아닌 having을 사용한다

 

between A and B 고등학교 때 자주 배운 영어 형태도 나온다ㅎㅎ 이때, A 이상 B 이하임을 주의

 

파이썬에서와 비슷하게 in은 멤버 연산이 가능하다

 

데이터의 일부만을 추출할 때는 subsrting을 사용한다 사용한 DB는 mariaDB인데 oracle에서는 substr로 쓰는 것 같다

 

offset 기능으로 일부만 사용할 때는 'limit 첫째번숫자, 열거할숫자'로 출력이 가능하다

 

 

연습문제
nameaaa인 레코드를 출력하시요
nameaaa인 레코드의 email을 출력하시요
nameaaa인 레코드의 emailage를 출력하시요
nameaaa 또는 bbb인 레코드를 출력하시요
nameaaa , bbb가 아닌 레코드를 출력하시요
uid2이상 5미만인 레코드
uid1 또는 3 또는 5 인 레코드
named로 시작하는 레코드
name:사용자명(이름) 형식으로 나이와 함께 출력하시요 [concat 함수 사용]
save 기준으로 내림차순 정렬 후 4번째 이후 레코드만 출력하기
해당 문제들을 고민해서 데이터를 조회해보자.
답안은 아래 스크린 샷으로 첨부했다!

 

 

 
 
 
 

'SQL' 카테고리의 다른 글

MySQL Workbench 8.0 CE  (0) 2023.08.04
SQL 총연습  (0) 2023.08.03
SQL 기타  (0) 2023.08.02
JOIN  (0) 2023.08.02
SQL 연습  (0) 2023.08.02