DB - DataBase(책) DBMS(DataBaseManagementSystem) - 엄마(책정리) -MYSQL등
DB | DB | sql 클라이언트 |
---|---|---|
———-> | <———- | |
root | DB | |
DB괸리 DB | ||
dbms :3306 |
시작부터..
- 서버 스타트 : mysql.server start
- Root 로그인 : mysql -uroot -p 비밀번호를 입력합니다.
- Database 생성 : CREATE database db이름 DEFAULT CHARACTER SET utf8;
- DB 확인 : show databases;
-
DB사용자 생성 : CREATE USER username@localhost IDENTIFIED BY ‘userpassword’
-
생성된 사용자 권한 설정 : GRANT SELECT,INSERT,UPDATE,DELETE ON db이름.* TO ‘username’@’localhost’;
- 사용자 확인 : use mysql; select User,Host from user;
-
DB사용자 계정 접속 : mysql -uroot -p db이름
- TABLE 생성 : create table freeboard.freeposts( id INT NOT NULL auto_increment, title VARCHAR(20) not null, user VARCHAR(45) not null, password VARCHAR(45) not null, date DATETIME not null, contents longtext, view INT not null, primary key(id));
(워크벤치 사용시 생성 후 리스트를 refresh)
-
만약 수정하고 싶다면 : ALTER TABLE freeboard.freeposts CHANGE COLUMN date date VARCHAR(45) NOT NULL ;
-
insert로 자료넣기 : insert into freeposts(title,user,password,date,contents,view)values( ‘게시판 오픈’,’김대용’,’123456’,’2019-01-10’,’게시판이 오픈되었습니다. 감사합니다’,’999’);
-
컬럼 확인 : SELECT * FROM freeboard.freepost;
-
SELECT * FROM : 테이블의 모든 컬럼 확인
기본 명령어
- 데이터베이스 만들기
- create database 데이터베이스이름;
- 테이블 만들기
- create table 테이블명( 열이름1 데이터형, 열이름2 데이터형, 열이름3 데이터형, … );
- 테이블 표시
- select * from 테이블명;
- 한열만 표시
- select 표시할열이름 from 테이블명;
- 여러열 가져오기
- select 열이름1, 열이름2 from 테이블명;
- 제약조건 지정
Ex)
create table 테이블명(
id int primary key, //pk 지정
name varchar(255) not null // not null
);
- 데이터 정렬
- select * from 테이블명 order by 열이름 asc; //오름차순으로 정렬
- select * from 테이블명 order by 열이름 desc; //내림차순으로 정렬
- where절 - 특정 조건에 맞는 데이터만 가져오고 싶을 때 사용 // 데이터 수정등에선 무조건 넣어야 한다!!!!
- select 열이름 from 테이블명 where 조건식;
- 문자열 비교
- select 열이름 from 테이블명 where 열이름 like ‘%문자열%’;
- 올림 함수
- sql server, mysql : ceiling 함수
- oracle : ceil 함수
- 내림 함수
- floor 함수
Ex)
select rating, ceiling(rating) as result 1, floor(rating) as result2 from table;
- rand함수 - 0이상 1미만의 난수를 구하는 함수, mySQL과 sql Server에서 사용
- rand(); //매번 다른 결과
- rand(숫자); //매번 같은 결과
- 문자열 수를 반환
- sql Server : len함수
- oracle, mySQL : length함수
- CHAR_LENGTH : 글자 수
- LENGTH : 바이트 수
- BIT_LENGTH : 비트 수(1Byte는 8bit)
Ex)
select name, len(name) as result from table;
- 문자열로부터 지정된 부분만큼 문자열을 가져와서 반환
- sql Server : substring함수
- oracle, mySQL : substr함수
Ex)
substring('문자열',2,1) //'문자열'을 왼쪽에서 2번째부터 1개를 가져옴
- 문자열 왼쪽공백 삭제
- ltrim(‘ AA’) -> ‘AA’
- 문자열 오른쪽공백 삭제
- rtrim(‘AA ‘) -> ‘AA’
- upper함수 - 문자열을 대문자로 변환
Ex)
select name, upper(name) as result1 from table;
- lower함수 - 문자열을 소문자로 변환
Ex)
select name, lower(name) as result1 from table;
- 현재 날짜와 시간 구하기
- sql Server : getdate함수
- oracle, mySQL : sysdata함수
Ex) sysdate()
- 함수
- avg함수 : 열에 포함된 모든 값의 평균
- sum함수 : 열에 포함된 모든 값의 합
- count함수 : 열의 개수를 구하는 함수, ()안에 열이름이나 *가 들어간다, 열이름의 경우 null값 제외. *의 경우 null값 포함 모든행 개수
Ex)
select avg(num) as average, sun(num) as total, count(name) as game from table;
- max함수 : 열중에서 가장 큰 값을 구하는 함수
- min함수 : 열중에서 가장 작은 값을 구하는 함수
where절 안에는 집합 함수를 못쓴다, 집합함수 처리 결과를 조건으로 할 때는 group by절과 having절을 이용
Ex)
select no, max(price) from table group by no having (max(price)>100);
- 열 수정
- update 테이블명 set 수정할열이름=수정할값 where 조건식;
- 열 삭제
- delete from 테이블명 where 조건식;
- 열 등록
- insert into 테이블명(열이름1, 열이름2….) values(값1, 값2….)
- 뷰 생성
- create view 뷰이름 as select 열이름 from 테이블명 where 조건식;
- 뷰에 열 등록
- insert into 뷰이름(열1, 열2, 열3…) values(값1, 값2, 값3…);
- 뷰에 열 수정
- update 뷰이름 set 열이름=수정할값 where 조건식;
- 뷰의 값 삭제
- delete from 뷰이름 where 조건식;
- 뷰 삭제
- drop view 뷰이름;
-
*Join(조인) - 여러개의 테이블이나 뷰를 연결하는 것, 교차조인, 내부조인, 외부조인이 있다.
- Cross Join(교차 조인) - 여러개의 테이블이나 뷰에 있는 모든 행을 단순히 조인하는 방법
Ex)
select * from tab1 cross join tab2
= select * from tab1, tab2; //cross join or ','
- Inner Join(내부 조인) - 지정한 열의 값이 일피하는 행만 가져오는 방법, 조인하고 싶은 테이블끼리 inner join으로 연결하고 on이하에서 어떤 열을 기준으로 데이터를 일치시킬지 지정
Ex)
select * from tab1 inner join tab2 on id=no;
= select * from tab1, tab2 where tab1.id=tab2.no;
-
외부조인 - 내부조인의 결과에 덧붙여 일치하지 않는 데이터도 가져오는 방법(왼쪽외부조인, 오른쪽외부조인, 전체 외부조인이 있다.)
-
Left Join(왼쪽 외부조인)
Ex)
select * from tab1 left join tab2 on id=no;
- Right Join(오른쪽 외부조인)
Ex)
select * from tab1 right join tab2 on id=no;
- Full Join(전체 외부조인)
Ex)
select * from tab1 full join tab2 on id=no;