본문 바로가기
Study/Database

SQL (Database) 명령어-기본명령어

by Answer Choi 2015. 10. 2.
반응형

mySQL을 기준으로 하였습니다.


workbench를 이용하면 ui기반으로 쉽게 할 수 도 있지만, 커맨드 창이나 프로그래밍을 하려면 


명령어들을 알아야 하기에 자주쓰는 것들을 적어봅니다.


커맨드창에 하는걸 기준으로 하겠습니다.


mySQL이 깔려있다는 가정하에 하겠습니다.


1. SQL접속


1
mysql -uroot -p0000 -hlocalhost
cs


-u : username


-p : password


-h : hostname


username과 password는 처음 설치할때 적었던 걸 적으면 됩니다. 


hostname은 현재 접속하는 PC에 mySQL이 깔려있는 경우 localhost를 다른PC의 경우 ip를 적습니다.


성공적으로 접속이 되면 아래의 화면이 뜨게 됩니다.



2. Database 보기



SHOW {DATABASES | SCHEMAS}
    [LIKE 'pattern' | WHERE expr]


1
show databases;
cs


현재 생성된 database를 볼 수 있습니다.



기본적으로 몇가지가 생성되어 있네요.


3. Database 만들기



CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name


1
create database answerofgod;
cs


answerofgod 이라는 이름의 database를 생성했습니다.



4. Database 선택


만든 Database를 사용하려면, 그 Database를 선택해줘야 합니다.


USE db_name


1
use answerofgod;
cs



5. Table 만들기


DB까지 생성했으니 table을 만들어야 겠죠?


CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]
    [partition_options]

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options]
    [partition_options]
    select_statement

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    { LIKE old_tbl_name | (LIKE old_tbl_name) }


table을 만들때에는 table명과 column도 같이 만들어 줘야 합니다.


저는 blog 주소와 description column을 만들었습니다.


그리고 id는 primary key로 auto increment 옵션을 줬습니다.


1
2
3
4
5
6
create table blog(
    id int not null auto_increment
    url text not null
    description text null
    constraint pk primary key(id) 
);
cs


6. Table 보기


Table을 만들었으니 있는지 확인해 보겠습니다.


SHOW [FULL] TABLES [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]


1
show tables;
cs


정상적으로 table이 만들어진 걸 볼 수 있습니다.


7. Table 자세한 정보 보기


{EXPLAIN | DESCRIBE | DESC}
    tbl_name [col_name | wild]

{EXPLAIN | DESCRIBE | DESC}
    [EXTENDED] SELECT select_options


1
desc blog;
cs



생성한 table에 대한 자세한 정보가 나타납니다.


8. Data 입력하기


INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)] 
    [(col_name,...)]
    {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]


데이터를 입력할때는 입력할 column과 값을 같이 적어줘야 합니다.


1
insert into blog (url,description) value ('answerofgod.tistory.com','my tistory blog');
cs


url과 description은 text이기 때문에 작은따음표(' ')를 해줘야 합니다.




하나 더 넣어보겠습니다.


1
insert blog (url,description) value ('answerofgod.blogspot.kr','my google blog');
cs


into를 빼도 data가 입력됩니다.





9. Database에 저장된 data 보기


SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [MAX_STATEMENT_TIME = N]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
      [PARTITION partition_list]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
      | INTO DUMPFILE 'file_name'
      | INTO var_name [, var_name]]
    [FOR UPDATE | LOCK IN SHARE MODE]]


table에 저장된 모든 data를 보려면


1
select * from blog;
cs


하시면 됩니다.



만약 특정 data만 보시려면, 필터를 만들 수 있습니다.


select문 뒤에 where를 사용해서 필터를 만들 수 있습니다.


1
select * from blog where id=2;
cs



또는 필요한 정보만 보고싶으면 * 대신 보고싶은 column명을 쓰면 됩니다.


1
select url from blog;
cs



물론 필터도 같이 쓸 수 있습니다.


그리고 정렬도 가능합니다.


url을 오름차순으로 정렬하고, description이 null이 아닌경우 url만 가져오는 경우 입니다.


1
select url from blog where description!='NULL' order by url ASC ;
cs



url이 blogspot이 위로 올라갔습니다.


10. Data update하기


저장된 데이터의 값을 변경해야 할 경우도 있는데요.


이 경우에는 update를 사용합니다.


UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]


먼저 data를 하나 insert 하면서 description을 공백으로 넣었습니다.



3번 데이터의 description을 채워보겠습니다.


1
update blog set description='my naver blog' where id=3;
cs



실제로 변경되었는지 확인하면



성공적으로 변경되었습니다.


11. Data 삭제하기


필요가 없는 data를 삭제할 때 사용합니다.


DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
    [PARTITION (partition_name,...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]


3번째 data를 삭제해 보겠습니다.


1
delete from blog where id=3;
cs



3번째 데이터가 삭제되었습니다.


PS. 이때 만약에 새로운 데이터를 넣으면 id의 값은 4부터 시작합니다.



id가 primary key로 생성되었기 때문에 3번은 지웠어도 쓸 수 없게 됩니다.


12. Table 삭제하기


DROP [TEMPORARY] TABLE [IF EXISTS]
    tbl_name [, tbl_name] ...
    [RESTRICT | CASCADE]


만들었던 table을 삭제해 보겠습니다.


1
drop table blog;
cs



한번에 모든 데이터들과 table이 날라갑니다.


주의 해서 써야 합니다.


12. Database 삭제하기


DROP {DATABASE | SCHEMA} [IF EXISTS] db_name


database 역시 삭제방법은 table과 같습니다.


1
drop database blog;
cs



database answerofgod 가 삭제된 걸 확인할 수 있습니다.


자주사용하는 SQL명령어만 봤습니다.


자세한건 http://dev.mysql.com/doc/refman/5.7/en/ 에 가시면 많습니다.^^








반응형

'Study > Database' 카테고리의 다른 글

SQL (DATABASE) 명령어3-group by  (0) 2016.07.27
SQL (DATABASE) 명령어2-수식및 연산자  (0) 2016.07.26
SQLite 사용하기!!  (0) 2015.10.15
mysql 5.6 service 시작이 안될때  (0) 2015.09.01
mySQL 설치  (0) 2015.07.29

인기글