본문 바로가기

.주제별/SQL,DB

[요약] MySQL 간단한 문법들

1. MySQL에 연결하기
$mysql -u <mysql 계정명> -p

    '-u' : 계정명 받아들이기
    '-p' : 비밀번호를 입력하기

2. DB 생성
    mysql에 접속후..
    가. DB확인
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| sonsy    |
| test        |
+----------+
2 rows in set (0.00 sec)
  
    'sonsy' : 계정 db
    'test'    : MySQL을 배우거나 테스트 목적의 테스트용 DB

    나. DB 생성, 사용, 삭제
       - DB생성
mysql> CREATE DATABASE TEMPDB;    //TEMPDB생성
       - DB사용
mysql> USE TEMPDB;
      - DB삭제
mysql> DROP DATABASE TEMPDB;

3. DB 관리
    가. 테이블 목록 출력
mysql> USE test;    //test DB 선택
mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| OUTRUN         |
+----------------+
1 row in set (0.00 sec)

    나. 특정 테이블 구성
mysql> describe OUTRUN;
+-------+----------+------+-----+---------+-------+
| Field  | Type      | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| OUT   | longblob | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
1 row in set (0.00 sec)

    다. 테이블 만들기 (예제)
       구성할 테이블 구조을 결정한다.

people

name

char(10) not null

address

test(100)

id

int


       - 기본 테이블 만들기 포맷
CREATE TABLE table_name (
                   column_name1 type [modifiers]
                   [,column_name2 type [modifiers]
)

       - 위 테이블 구조에 맞는 테이블 만들기 예
CREATE TABLE USER (
    USER_ID             BIGINT UNSIGNED NOT NULL PRIMARY KEY,
    USER_NAME       CHAR(10)         NOT NULL,
    LAST_NAME        VARCHAR(30),
    OFFICE               CHAR(2)   NOT NULL DEFAULT 'NY'
);

          다음은 결과 화면이다.
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| OUTRUN         |
| USER           |
+----------------+
2 rows in set (0.00 sec)

mysql> describe USER;
+-----------+---------------------+------+-----+---------+-------+
| Field     | Type                | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+-------+
| USER_ID   | bigint(20) unsigned |      | PRI | 0       |       |
| USER_NAME | varchar(10)         |      |     |         |       |
| LAST_NAME | varchar(30)         | YES  |     | NULL    |       |
| OFFICE    | varchar(2)          |      |     | NY      |       |
+-----------+---------------------+------+-----+---------+-------+
4 rows in set (0.01 sec)


4. 데이터 관리
    1) 삽입
          가. 메소드
mysql> INSERT INTO table_name (column1, column2, ..., columnN)
mysql> VALUES (value1, value2, ...., valueN)
          나. 예제
mysql> INSERT INTO address ( name, address, city, age)
mysql> VALUES ('Yong Ga Ri', '123 Samsung-dong', 'Seoul', 29 )
          다. 작은 따옴표나, 이스케이프 문자는 이스케이프 문자(\)를 앞에 붙임

          라. 다른 Table로부터 데이터 삽입
mysql> INSERT INTO foods (name, fat)
mysql> SELECT food_name, fat_grams FROM recipes

    2) 갱신
          가. 메소드
mysql> UPDATE table_name
mysql> SET column1=value1, column2=value, .... , columnN=valueN
mysql> [WHERE 절]
               WHERE절에서는 갱신할 행을 선택한다. 생략시 모든 행을 갱신한다.

          나. WHERE 절 (예제)
mysql> UPDATE bands
mysql> SET lead_singer = 'Ian Anderson'
mysql> WHERE band_name = 'Jethro Tull'
             band_name 이 'Jechro Tull'인 행에 대해서만 lead_singer 열을 바꾸도록 한다.

    3) 삭제
        가. 메소드
mysql> DELETE FROM table_name [WHERE 절]

mysql> DELETE table1, table2, ... , tableN
mysql> FROM table1, table2, .. , tableN
mysql> [WHERE 절]

5. 질의

mysql> SELECT column1, column2, ... , columnN
mysql> FROM table1, table2, ... , tableN

    1) 연결
       연결은 어떤 테이블에 있는 데이터를 다른 테이블에 있는 데이터와 연관시켜주는 기능으로,
       관계형 데이터베이스의 핵심이라고 할 수 있다.
       가. 예제
mysql> SELECT book.title, author.name
mysql> FROM author, book
mysql> WHERE book.author = author.id

    2) 별칭
       테이블 및 열 이름이 너무 긴 경우, 별칭(alias)를 이용하여 간단하게 바꿀수 있다.
       가. 열 별칭
mysql> SELECT long_field_name_are_annoying As myfield
mysql> FROM table_name
mysql> WHERE myfield = 'Joe'

       나. 테이블 별칭
mysql> SELECT people.names, tests.score
mysql> FROM tests, really_long_people_table_name AS people



    3) 정렬 및 분류

    4) 결과 제한

6. Tip

(출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=12800&sca=DBMS&page=6 )

1. 쿼리 결과 정렬방식

  mysql> use mysql
  mysql> select * form user where user = 'root' ;
  이런식으로 사용했을경우 결과가 좌우로 길게 나와 보기가 불편하다구요?
  그럼 이렇게 사용해보세요.
  mysql> select * from user where user='root' \G
  그럼 세로로 결과를 출력합니다.
  설명) ; 와 \g 는 가로출력 \G 세로 출력입니다.

2. 쿼리 에디터

  길게 입려한 쿼리의 이부분만 고치고 싶은데 수정이 불편한가요?
  mysql > use mysql
  mysql > select * from user where user='root'
  mysql > and host='localhost' and Select_priv = 'Y'
  mysql > and Insert_priv = 'Y' ;
  자 이렇게 길게 쿼리를 날렸는데 이중에 일부분만 수정해야 한다면
  mysql> \e
  그러면 vi 에디터가 실행됩니다. 여기서 적절히 수정하신후 저장후 종료 (:wq) 하시고
  mysql> \G
  ; \g \G 를 넣어주시면 편집한 내용이 실행됩니다.

3. 쿼리 기록
  mysql> tee ./temp.txt  (파일로 저장)

  mysql> notee (해제)