MySQL

MySQL_MySQL

ssmm95 2024. 9. 9. 17:44

◆ SQL을 배워야 하는 이유 
1) 대부분의 데이터는 SQL을 사용할 수 있는 RDBMS에 저장됨
2) RDBMS에 저장된 데이터를 추출하여면 SQL 문법을 사용해 컴퓨터에 명령을 내려야함
3) RDBMS가 아닌 시스템에도 SQL과 비슷한 문법을 사용해 데이터를 추출 할 수 있음
4) 데이터 분석의 시작은 데이터 추출

 

 

● DBMS에 따른 SQL명칭
- SQL Server : Transaction - SQL(T-SQL)
- Oracle : PL/SQL
- MySQL : SQL
- 국제표준 : ANSI SQL

 


●  관계형데이터베이스의 구성
1) 열 : 각 열은 고유한 이름을 가지며 자신만의 타입을 가짐. 필드 또는 애트리뷰트 라고 함


2) 행 : 관계된 데이터의 묶음을 의미하며 한 테이블의 모든 행은 같은 수의 열을 가짐
튜플, 또는 레코드 라고도 함 


3)테이블 :  행과 열 값들의 모음을 나타내며, 도메인 특성에 따라 데이터를 논리적으로 그룹화 해놓은 것


* SQL에서 부울 표현식(Boolean expression)은 참(True) 또는 거짓(False)의 값을 가지는 논리적 표현식
키워드는 모두 대문자 표현 , 테이블 이름, 열 이름은 소문자 표현

 

*키워드 (keyword) : SQL에서 키워드는 데이터베이스에서 특정 작업이나 명령을 수행하기 위해 예약된 단어 (예약어)

예) SELECT , CREATE TABLE , INSERT INTO, DELETE, UPDATE, WHERE 등.. 

 

● WHERE 문에서 논리 연산자 사용
1) ALL : 모든 비교집합이 TRUE(참)이면 TRUE
2) AND : 두 부울 표현식이 모두 TRUE이면 TRUE
3) ANY : 비교 집합 중 하나라도 TRUE이면 TRUE
4) BETWEEN : 피연산자가 범위 내에 있으면 TRUE
5) EXISTS : 하위 쿼리에 행이 포함되면 TRUE
6) IN : 피연산자가 리스트 중 하나라도 포함되면 TRUE
7) LIKE : 피연산자가 패턴과 일치하면 TRUE
8) NOT : 부울 연산자를 반대로 실행
9) OR : 하나의 부울식이 TRUE 이면 TRUE
10) SOME : 비교 집합 중 일부가 TRUE이면 TRUE

 

예) 2010~2011범위에 해당하는 값을 검색
> SELECT * FROM nasdaq_company
WHERE ipo_year BETWEEN 2010 AND 2011

예) 심볼 열에 'A'와 'B'를 제외한 나머지 검색
> SELECT * FROM nasdaq_company
WHERE symbol NOT BETWEEN 'A' AND 'B'

예)  sector가 'Finance' 이면서 industry가 'Major Banks'인 데이터를 검색
> SELECT * FROM nasdaq_company
WHERE sector = 'Finance' AND industry = 'Major Banks'

예)  last_crawl_date가 2021년 3월 17일 ~ 2021년 3월 19일을 포함한 날짜 검색
1. SELECT * FROM nasdaq_company
WHERE 'last_crwal_date' BETWEEN 2021-03-17 AND 2021-03-19

2. SELECT * FROM nasdaq_company
WHERE last_crwal_date >= '2021-03-17' AND last last_crwal_date <= '2021-03-19'

- SELECT * FROM nasdaq_company
WHERE (sector = 'Technology' OR sector = 'Consumer Service')
AND symbol IN ('MSFT', ' AMD' , 'AMZ')
>( ) 가 우선순위
Technology Consumer Service 중에 sybol에 msft amd amzn 값이 있는 걸 출력,,,? 

-SELECT * FROM nasdaq_company
WHERE sector IN ('Technology' ,'Consumer Service')
AND symbol IN ('MSFT', ' AMD' , 'AMZ')


한 행 주석문 : --
여러 행 주석문 : /* 주석입력 
주석입력
         */ 




https://cafe.naver.com/thisisMySQL

_________________________
20240906


◆ MySQL Server 8.0 안에 있는 폴더들
1) bin : MySQL 서버 프로그램, 클라이언트 프로그램 및 유틸리티 프로그램 파일
2) docs : 도움말 또는 설정파일
3) etc : 설정 파일 샘플
4) include : 응용프로그램을 개발 할 떄 필요한 헤더파일
5) lib : MySQL 관련 라이브러리 파일
6) share : 기타 지원 파일. 각 언어별 오류 메시지 파일 등

_______________________________________________

-데이터베이스 구축 절차 
데이터베이스 생성 > 테이블 생성 > 데이터 입력 > 데이터조회/활용

_____________________________________________

-index (인덱스)
: 대부분의 책의 제일 뒤에 붙어있는 '찾아보기' 와 같은 개념
즉, 책의 내용 중에서 특정 단어를 찾고자 할 때 책의 첫 페이지부터 마지막까지 한 페이지씩 전부를 찾아보는 것보다는 
책 뒤의 '찾아보기' 를 찾아보고 색인에 나와있는 페이지로 바로 찾아거는 것이 훨씬 빠름

: 실무에서 사용되는 많게는 수천만~수억~ 건 이상의 데이터에서 인덱스 없이 전체 데이터를 찾아본다는 것은
MySQL 입장에서는 엄청난 부담스러운 일이 됨 > 성능이 느려짐

-@데이터베이스 튜닝 :  데이터베이스 성능을 향상시키거나 응답하는 시간을 단축시키는 것 
특히 쿼라에 대한 응답을 줄이기 위해서 가장 집중적으로 보는 부분 중 하나가 이 '인덱스' 부분임 
즉, 인덱스를 적절히 활용하고 있느냐에 따라서 시스템의 성능이 몇 배, 크게는 몇 십 배 이상 차이가 날 수있음

__________________________________

- 뷰 : 가상의 테이블 (이라고 생각하기)
즉 , 사용자의 입장에서는 테이블과 동일하게 보이지만, 뷰는 실제 행 데이터를 가지고 있지 않음
예) 기존에 구축된 쇼핑몰을 운영하다가 회원의 주소를 대량으로 변경해주는 작업이 필요하다고 가정하기
그래서 새로운 알바생을 고용해서 회원의 다른 정보는 그대로 두고 '주소'만 변경하는 일을 시키려고 함
만약 이 알바생에게 회원 테이블을 사용한 권한을 준다면회원의 주소 외에 주민등록번호, 전화번호 , 등의 
중요한 개인정보를 열람하게됨 . 그럴경우 고의든 실수든  개인정보 유출이라는 심각한 상황이 발생됨

- 스토어드 프로시져 : MySQL에서 제공해주는 프로그래밍 기능
즉 , SQL문을 하나로 묶어서 편리하게 사용하는 기능
실무에서는 SQL문을 매번 하나하나 수행하기 보다는 스토어드 프로시저로 만들어 놓은 후에 
스토어드 프로시저를 호출하는 방식을 많이 사용
쿼리문의 집합, 어떠한 동작을 일괄적으로 처리하기 위한 용도로 사용

DELIMITER $$ 
CREATE PROCEDURE 스토어드_프로시저_이름(IN 또는OUT 매개변수) 
BEGIN 
       이 부분에 SQL 프로그래밍 코드 작성
END $$
DELIMITER ; 

DELIMITER : '구분 문자' 의미 . 뒤에 // 가 아노면 기존의 세미콜론 (;)울 //로 대신한다는 의미
CREATE PROCEDURE ~~ END 까지를 하나의 단락으로 묶어주는 효과를 갖는다는 정도로 기억
그리고 다시 제일 마지막 행에서 세미콜론(;)으로 돌려놓아야 한다

예시) 

DELIMITER // 
CREATE PROCEDURE myProc()
BEGIN
SELECT * FROM membertbl where memberName = '당탕이';
SELECT * FROM producttbl where productName = '냉장고';
END //
DELIMITER ;
CALL myProc() ;  

>> 결과 result 1개씩 따로나옴 ㅜㅜ 

-MySQL 유틸리티 사용법 
 Workbench의 주요한 기능
1) 데이터베이스 연결기능 
2) 인스턴스 관리
3) 위저드를 이용한 MySQL의 동작 
4) 통합된 기능의 SQL 편집기 5) 데이터베이스 모델링 기능 6) 포워드/리버스 엔지니어링 기능
7) 데이터베이스 인스턴스 시작/종료 8) 데이터베이스 내보내기/가져오기 
9) 데이터베이스 계정관리

</manager server connections>
>> MySQL 워크벤치 처음 실행하면 뜨는 MySQL Connections 밑에 
Local instance MySQL80 네모박스 오른쪽 클릭 2번쨰 Edit Connection 누르면 나옴

- [MySQL Connections] 창
[Connection] 탭 
 Connection Method는 Standard(TCP/IP), Local Socket/Pipe,Standard TCP/IP over SSH
이렇게 3개 중 선택학 수 있는데 대부분 Standard(TCP/IP)를 사용함

[Parameters] 탭
 Hostname에 localhost는 자신의 컴퓨터(MySQL이 설치된 컴퓨터)를 의미함
접속한 컴퓨터가 외부에 있다면 접속할 서버 컴퓨터의 IP 주소를 적어주면 됨
Port는 접속 할 MySQL 포트 번호를 적어주는데 특별한 경우가 아닌이상 3306 사용함
보안을 위해서 서버 컴퓨터에서 포트를 변경할 수도 있음
Password에서  를 클릭하면 미리 사용자의 비밀번호를 저장할 수 있음</store in vault ...>
 를 클릭하면 저장해 둔 비밀번호를 지움
Default Schema는 접속 후에 기본적으로 선택되는 데이터베이스 이름
이 부분을 비워두면 접속 후에 사용할 데이터베이스를 별도로 지정해야함

[SSL] 탭
 보안을 위한 암호 규약으로 서버와 클라이언트 통신할 떄 암호화 통해서 비밀을 유지시켜주고 보안을 강화시킴
서버에서 특별히 설정하지 않았다면 그대로 두면 됨

[Advanced] 탭 
 프로토콜의 압축, 인증 방식 등을 설정할 수 있음

[Remote Management] 탭
 원격 관리를 위해 설정하는 부분 이 부분잉 활성화 되기 위해서는 Hostname 부분이 127.0.0.1 을 제외한
실제 IP 주소로 설정되어 있어야 함
'Native Windows remove Management' 를 선택하면 MySQL 서버가 
설치된 OS가 Windows 경우에만 설정 가능
'SSH login based management' 는 SSH 서버 기반으로 원격 접속이 됨

[System Profile] 탭
 접속할 서버의 OS 종류 및 MySQL 설정 파일의 경로 등을 설정함
이 부분이 활성화 되기 위해서는 'Native Windows remove Management' 나
'SSH login based management' 가 선택되어 있어야 함

-Navigator (네비게이터) : MySQL의 관리 및 운영을 위한 강력한 도구 
네비게이터를 통해서 MySQL의 많은 작업이 가능, MySQL 명령문이나  SQL문을 모르더라도
대부분의 작업을 수행할 수 있음 
 
- 네비게이터에서 할 수 있는 역할
(MySQL 워크벤치 실행 후 왼쪽 네비게이터 칸 살피기)

[Schemas] 탭
1) 데이터베이스 생성 및 삭제
2) 데이터베이스 개체(테이블, 뷰, 인덱스, 저장 프로시저, 함수 등) 생성하고 관리
3) 데이터베이스의 속성을 조회

[Adminstration] 탭
- MANAGEMENT
1) MySQL 서버의 가동상태, 설치된 폴더 등을 확인
2) MySQL 서버에 연결되어 있는 클라이언트의 정보를 확인
3) 사용자의 생성, 삭제 및 권한 관리
4) 서버 변수값의 확인
5) 데이터 보내기/가져오기 가능

- INSTANCE
1) MySQL 연결 정보 관리
2) MySQL 인스턴스의 중지. 시작
3) Server에 기록된 로그 조회
4) MySQL 옵션 파일의 설정 정보 확인 및 변경

- PERFORMANCE
1) 네트워크 상태 및 MySQL의 성능 상태를 확인
2) 성능 상태의 보고서 작성
3) 성능 구성의 설정


_________________
대소문자 관계없음
예약어 소문자를 대문자로 바꾸기 
상단 메뉴 Edit > Format > upcase keywords 
lowercase keywords 
주석처리 Edit > Format > un/coments selection

SSMS(SQL Server Management Studio) 단축키
대문자 변환 : Ctrl + Shift + U
소문자 변환 : Ctrl + Shift + L


자동예약어 대문자 설정
 Edit > preferences > sql editor > Query Editor > productivity > use uppercase keywords~ 체크

__________
쿼리를 csv로 저장해서 엑셀 또는 메모장에서 보기가능

'MySQL' 카테고리의 다른 글

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