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;