SQL이란 데이터를 주고받기 위한 언어
sql은 대소문자 가리지 않는다.
데이터베이스:
C(추가)R(조회)U(수정)D(삭제)
프로그램을 만드는 것은 데이터를 처리하는 것이다.
ex. 고객데이터 (한사람의 데이터) : 이름, 아이디, 주소 등 데이터는 여러개의 속성값들로 이루어져있다.
관계형 데이터베이스: 표 형식으로 데이터를 관리하는 데이터베이스
ex. 쇼핑몰에서 데이터가 필요하다면 고객의 데이터, 주문관련된 데이터, 제조사 등이 필요하다. 프로그램의 규모가 커지면 필요한 데이터가 많아진다. 데이터 하나하나가 표가 된다. 데이터와 데이터간에 데이터가 생긴다.(relational data. 관계형데이터)
테이블형태로 관리했을때 정형data라고 한다.
비정형데이터는 사람손길이 들어가면 잘 안나온다!
Entity를 구현한게 Table (같은것)
DBMS (서버프로그램)
: mysql가 DBMS이고 workbench 가 클라이언트 인것이다.
클라이언트는 요청하는 일을 한다. dbms에 요청. sql이라는 언어로 요청하는것!
데이터베이스는 dbms가 관리하는 저장장치. 응답할때도 표형태로 응답한다.
사용자들은 네트워크를 통해서 dbms서버와 연결. (네트워크 연결=입출력하는것)
서로 다른 컴퓨터에 있는것이고 인터넷 선으로 연결되는 것이다. 각 컴퓨터에 제공해주는 프로그램이 있어야 한다.
네트워크를 하는 이유는 무엇일까?
한 사람이 아니라 여러사람(전세계)이 썼으면 좋겠다고 생각. 전부 인터넷은 되니까 데이터는 여기 있으니까 연결해서 가져가라.
그렇다면, 많은 사람들이 접속하기 때문에 서버 컴퓨터는 성능이 좋아야한다.
DML: SELECT(=DQL이라고도 한다). 데이터처리
insert에서 commit할때, 그 시작과 끝을 transaction이라고 한다. 정상적으로 처리하면 commit, 취소하고 돌아가는 것을 rollback.
ex. a계좌에서 b계좌로 100만원을 송금하려고 하면 a에서 빼서 b로 넣어야한다(한번에 처리) : 정상적으로 처리하는 것commit, 취소하여 되돌아가는것 rollback. 이러한 과정들을 transaction.(일의 단위)
DDL: 데이터를 만들면서 객체를 생성하고 삭제하는 것들을 한다. 트랜잭션이랑 관련X. 테이블 만들려면 바로 만들수 있다.
DCL: 사용자에게 권한을 주는것(GRANT),권한을 뺏는것(REVOKE). 데이터 관리자 역할
DDL에는 create, alter, drop이 있다. create(, alter, drop)______ 어떤걸 만들것인지? data, user, DB 등이 올수있다.
사용자 계정생성
구문)
CREATE USER 계정명(id)@HOST IDENTIFIED BY ‘PASSWORD’
# 계정을 관리할때는 @%를 써야한다.
--주석의 시작
하나의 명령문이 끝나면 세미콜론(;)을 쓴다.
char(character) 고정길이 문자열은 공백을 채워버린다. 10글자 이면 공백으로 채운다. ~ ab이면 ab앞에 공백으로 채운다.
ex. char(10)이면 2글자넣어도 10글자만들어준다. 이미 정해져있는 글자수에는 char를 쓴다. ex. 시리얼번호, 주민번호..
varchar( 변경될 수 있다.): 문자열. 최대 글자수 varchar(10)이면 최대 10글자. 글자수를 정할수있다.
그때그때 데이터에 따라 글자를 늘렸다 줄였다 한다. 그렇기 때문에 속도가 char에 비해 떨어진다. 최대크기만 잡아놓는다.
text : 글자 수를 정할수 없다.
<실수>
실수에는 DECIMAL, FLOAT, DOUBLE이 있다.
float 과 double중에는 double을 쓰는게 낫다.
소수점이 두자리 세자리가 정해져있지 않다면 double을 쓰기
계산의 정확도가 필요할땐 decimal쓰기
null = None (값이 없어도 된다). 놓친 값. 모르는값 / not null: 값이 없으면 안된다.
unique key + not null = primary key . 값은 가져야하지만 중복된 값을 가질순없다.
DML: 데이터의 컬럼값을 변경하는것 insert, delete, update.
DQL: select조회. select는 보기만 하는것. 그래서 가장 기본적인 권한
select(조회)
table은 행/열로 이루어져있다.
구문) select 컬럼명 from 테이블명 (from 뒤 테이블에서 select 뒤 컬럼명을 선택해서 보겠다 생각하면 됨)
컬럼명[as 별칭] : 별칭은 생략가능
'데이터 분석일기 > sql' 카테고리의 다른 글
SQL: 조인(JOIN) (0) | 2023.09.05 |
---|---|
SQL: 함수 (0) | 2023.09.01 |
SQL Basic (0) | 2023.08.31 |