[MySQL] SQL

2019. 3. 4. 00:50DataBase

SQL(Structured Query Language) 



SQL은 데이터를 보다 쉽게 검색/추가/삭제/수정 같은 조작을 할 수 있도록 고안된 컴퓨터 언어입니다.

관계형 데이터베이스(RDBMS)에서 데이터를 조작하고 query하는 표준 수단입니다.

SQL은 Query라고 읽고, 이 Query는 DBMS에 명령하는 문장이라고 생각하면 좋습니다.


SQL 명령어 종류

1) DML(Data Maniplation Language) : 데이터 조작어

데이터를 조작하기 위해서 사용합니다. [ INSERT / UPDATE / DELETE / SELECT 등이 있습니다 ]

2) DDL(Data Definition Language) : 데이터 정의어

DB의 스키마를 정의하거나 조작하기위해 사용합니다. [ CREATE / DROP / ALTER 등이 있습니다 ]

3) DCL (Data Control Language) : 데이터 제어어

데이터를 제어하는 언어입니다. 권한을 주거나 파기하거나 데이터의 보안, 무결성 등을 정의합니다. [ GRANT / REVOKE 등이 있습니다 ]


MySQL접속

mysql/bin/ 에서

mysql -u root -p

다음과 같이 입력하면 관리자 계정인 root로 DBMS에 접속하겠다는 것입니다.


DB 생성(DDL - CREATE)

mysql> create database DB이름;


DB 사용자 권한 주기 (DCL - GRANT)

DB를 생성 후, 해당 DB를 사용하는 계정을 만들어야 합니다.

또, 해당 계정이 DB을 이용하도록 권한을 줘야겠죠

GRANT명령어를 통해 사용자 생성과 권한을 부여할 수 있습니다!

계정이름 뒤에 

    • @'%' 는 어떤 클라이언트에서든 접근 가능하다는 의미고
    • @'localhost'는 해당 컴퓨터에서만 접근 가능하다는 의미입니다.

mysql> GRANT 권한 on DB이름.테이블 to 계정이름@'%' identified by '암호'



예시) 사용자 계정이름은 root/ 암호는 123456 / 사용자가 사용하는 DB는 firstDB로 계정을 생성

mysql> GRANT all priviliges on firstDB.* to root@'localhost' identified by '123456';



flush privileges는 DBMS에 적용을 하라는 의미입니다.(반드시 해줘야 합니다.)

mysql> flush privileges


MySQL 연결 끊기

quit나 exit라고 입력하면 연결을 끊을 수 있습니다.

mysql> quit

mysql> exit


MySQL 버전과 현재 날짜 구하기

mysql> select version(), current_date; +-----------+--------------+ | version() | current_date | +-----------+--------------+ | 5.7.20 | 2019-03-03 | +-----------+--------------+ 1 row in set (0.01 sec)


// MySQL은 Query의 결과의 전체 row를 출력하고 마지막에 전체 row의 수와 쿼리실행의 수행시간을 알려줍니다.


Query를 이용해 계산식 결과도 구할 수 있습니다

mysql> select sin(pi()/4),(4*3)+1; +--------------------+---------+ | sin(pi()/4) | (4*3)+1 | +--------------------+---------+ | 0.7071067811865476 | 13 | +--------------------+---------+ 1 row in set (0.00 sec)


여러 문장을 한 줄 연속으로 붙여서 실행할 수도 있습니다.

mysql> SELECT VERSION();SELECT NOW(); +-----------+ | VERSION() | +-----------+ | 5.7.20 | +-----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2019-03-03 18:27:07 | +---------------------+ 1 row in set (0.00 sec)



DBMS에 존재하는 DB 확인하기

mysql> show databases;


사용중인 DB 전환하기

use DB이름;

mysql> use myDB;


Table

MySQL은 관계형DB(RDBMS)인데 이 RDBMS는 Table형태로 데이터를 저장합니다. DB를 SQL로 생성하면 그 테이블을 정의하고 데이터를 저장하기 위한 SQL을 또 사용해야합니다.

Table : Table은 한 개 이상의 column(key)과 0개 이상의 row(record)로 구성하고 있습니다.

Column(열) : 테이블에서  단일 종류의 데이터입니다. 특정 타입( INT/STRING/... ) 및 크기를 가집니다.

Row(행) : Column들의 값의 조합으로 record라고도 불립니다. 기본키(Primary Key)에 의해서 구분됩니다.

 * 기본키는 row를 고유하게 식별하는 유일한 키입니다. 

Field : Row와 Column의 교차점으로 Field는 데이터를 포함할 수 있고 없을 때는 NULL 값을 가집니다.



DB의 table들 확인하기

mysql> show tables;

Table 구조를 확인하기

DESCRIBE 명령을 사용하면 구조를 확인할 수 있습니다. (짧게 DESC로 사용해도 됩니다)

mysql> desc products; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | category | char(3) | NO | | NULL | | | name | varchar(20) | NO | | NULL | | | quantity | int(11) | NO | | NULL | | | price | float | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 5 rows in set (0.01 sec)



[ edwith - 웹프로그래밍 부스트코스 ] 를 개인적으로 공부하고 정리한 공간입니다. 잘못된 부분은 피드백 주시면 감사하겠습니다

'DataBase' 카테고리의 다른 글

[MySQL]DDL  (0) 2019.03.05
[MySQL] DML  (0) 2019.03.04
[MySQL] DB vs DBMS  (0) 2019.03.02