Database(Select)

손원진·2023년 1월 25일
0

[데이터베이스]

목록 보기
1/5

Database

목차
0. database & DBMS
1. MySql 간단 소개
2. 자료형
3. select로 데이터 불러오기
4. patern매칭 조회
5. orderby
6. 결과행 제한하기 limit
7. 연산자

0.DataBase

데이터란 컴퓨터에 기록되어있는 숫자 , 이러한 데이터의 집합이 데이터베이스이다. 넓은 의미에선 컴퓨터에 기록된 모든 것이 데이터베이스 입니다.

DBMS는 데이터 베이스 관리 시스템으로,DB를 다루는 기능을 제공합니다.

  1. mySQL

데이터베이스를 조작하는 언어 SQL
DBMS를 이용해서 데이터를 삭제 추가 조회등에 기능을 수행할 수 있는데, 이때 DBMS와 대화에 필요한 것이SQL입니다.

SQL에 3종류

  1. DML - 데이터를 새롭게 추가하거나 갱신하는등 조작시 사용

  2. DDL - 데이터는 데이터 객체(Object)라는 그릇을 이용해 데이터를 관리 이같은 객체를 만들거나 삭제하는 명령어 입니다.

  3. DCL 데이터를 제어하는 명령어 - 데이터의 접근권한과 트렌젝션을 제어하는 명령이 포함되어 있습니다.

  1. 자료형
  1. Integer - 수치형 - 정수값을 저장할 수 있는 자료형

  2. char - 문자열형의 하나로 문자열을 저장할 수 있는 자료형 char(10)이면 10개의 문자로 된 문자형 저장 가능 11개 문자는 저장 x 길이보다 낮은 문자형일 경우 나머지는 공백으로 채움

  3. varchar - 문자열형이지만 char와는다르게 가변형으로 최대길이를 지정하는 것은 같지만 데이터에 맞춰서 저장공간 크기가 변경됨

  4. date - 날짜를 저장할 수 있는 자료형 2022-10-23

  5. time - 시간을 저장할 수 있는 자료형 10:10:22

  1. select 검색 (조회)

데이터베이스에 저장된 데이터를 sql언어로 조회하기 위해서
select라는 약속어를 사용합니다.

select의 예시

select * from hername-- *은  hername이라는 테이블에 모든 컬럼을 조회하는 것을 의미 

select * from hername where nara <> 20; -- 나라라는 컬럼에 yun을 제외한 모든 셀값을 조회 



select a,b,c,d from alphabet; -- 여러개의 컬럼을 조회 

select * from a=0 or b=0 and c=1 or a=2; -- 우선순위는 and 가 높기 때문에 a=0 or (b=0 and c=1) or a=2(a가 0이거나 b가0이고 c는1이거나 a가 2인 셀값을 조회 

select * from contry where name is null; -- 값이 존재하지 않는다는 의미인 null을 표기하려면 is를 이용해서 표기 null이 아닌 것은 is not null로 표기

select * from gram where ours not(a<>0 and b<>1);-- not뒤엔 조건식이 옵니다, a가 0이 아니고 b가 1이 아닌 것이 아니니까 0이 아니고 1이 아닌 것이 아닌 모든 것이라고 할 수 있겠네요 

  1. patern매칭 조회

=로 검색할 때는 셀의 데이터값이 완전히 동일한지를 비교,
특정 문자나 문자열이 포함되어 있는지를 비교할 때는 like를 사용합니다.

이경우 사용하는 방법을 패턴매칭이라고 합니다.

like (술어) 열값이 부분적으로 일치하는 경우에도 참이됩니다.
like는 수치형 상수를 지정할 수 없고

메타문자(와일드카드) 임의의 문자 또는 문자열에 매치하는 부분을 지정하기 위해서 쓰이는 특수분자입니다.

%는 임의의 문자열 _은 임의의 문자 하나를 의미합니다.


select * from men like 'me%'; %(전방일치)전방에 있는 값이 일치하면 셀 출력 

select * from men like '%\%%' 퍼센트를 출력하고 싶다면 escape문자로 불리는 \를 앞에 먼저 넣어주면 됩니다. 

select * from men like ```` --`문자열 상수 출력을 위한 `를 출력하고 싶으면 앞에 escape문자로 `를 붙이면 됩니다.

  1. 정렬 orderby

order by- select로 검색한 행의 순서를 바꾸기 위해서 사용

select * from age order by age desc; --(descendant)내림차순으로 정렬 
--10,9,8,7

select * from age order by age asc; -- (ascendant)오름차순으로 정렬 
--7,8,9,10


select * from years order by yearN asc; --1999 -> 2000 오래된 순서별 조회
select * from years order by yearN desc; --2000 -> 1999 최신순서별 조회


select * from gender order by male, female --복수의 열을 정렬하고 싶다면 ,로 구분해서 정렬하면 됩니다. 

--null은 가장 작은숫자로 구분되어 표기된다 
  1. 결과행 제한하기 limit

쿠팡을 하다보면 모든 상품이 한번에 나오는 것이 아니라, 몇개씩 끊어서 나옵니다. 이처럼 행을 제한할 때 limit을 사용합니다.


--사용법 
select * from sample limit 3;

select * from sample order by number desc limit 4 ; 


offset - limit을 사용할 때 다음에 나올 숫자에 위치를 정하는 것
간단하게 시작할 셀 -1 을 한 후 출력한다고 생각하면 됨

select * from sample limit 3 offset 0; 
-- 1번부터 3번째까지 sample 셀 값을 부름

select * from sample limit 3 offset 3;
--4번 부터 6번까지 sample 셀 값을 부름
  1. 연산자

--연산자는 *,/,%,+.- 사칙연산이 있다 

select * , quantity*money from billion; --처럼 컬럼을 곱한 값을 컬럼으로 나타낼 수 있다. 

--select 구에서 별명 붙이기 
select *,price * quantity as amount from money -- price*quantity를 amount로 별명을 붙여서 컬럼명이 나타나게 만들 수 있다. 

select price * quantity amount -- as를 생략할 수 있다 

select price + amount 가격더하기 -- price + amount뒤에 '가격더하기'는 as를 생략할 수 없다(한글로 짓는 경우 여러가지 오작동이 많기때문) 

select price + amount "가격더하기" -- ""로 as생략 가능합니다. 

--이름에 absII외에 문자를 포함할 경우 ""로 지정한다. 

TIP-
1 select from where ~에서 우선순위는 where를 우선순위로 하고 select로 조회한다 따라서 select price * quantity as amount where amount > 10000;
은 성립하지 않는다.
2 null값에 1을 더해도 sql에선 1이아닌 그대로 null이다.

3 통상적인 사칙연산에선 1/0은 division by zero로 에러가 발생하지만
1/null은 그대로 sql에서 null입니다.

4 order by는 셀렉트 문보다 나중에 처리되기 때문에 select 에서 사칙연산한 결과를 order by로 정렬 할 수 있습니다.

함수


--round 반올림 
select amount,round(amount) from sample; -- amount 가 5.6이면 round에 의해 반올림 되어 6으로 출력됨 

select amount,round(amount,1),round(amount,-1), round(amount,-2),round(amount,0) --1은 소수점 둘째, -1은 일에자리 ,-2는 십에자리 , 0은 소수점 첫째자리 숫자를 반올림 

--SIN(삼각함수) COS(삼각함수)
select sin(ab) from sample;
--루트 (SQRT)
select sqrt(ab) from sample;
--대수 (LOG) 
select log(ab) from sample;
--합계 (SUM) 
select sum(ab) from sample;

profile
매일 한 걸음

0개의 댓글