database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Tutorials 16215 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 16215
Window용 SQL 이해 및 MySQL 서버 기초
작성자
정재익(advance)
작성일
2002-06-11 12:30
조회수
10,197

/*

조금이라도 MySQL 공부에 도움이 되었으면 하는 마음에 ^.^

 

허접 번역 작성 & 추가 : 투덜즈 suhoi@naver.com

 

2000 년 6월 05일 - 투덜이 PHP 강좌

http://myhome.naver.com/suhoi

*/

 

 

★ SQL 정복당할것인가? 정복할것인가? ★

 

SQL :Structured Query Language

SQL 은 데이터베이스를 효율적으로 관리할수 있는 언어 임다.

 

 

[[데이터베이스가 먼가요 샌님 ?]]

투덜투덜: 데이터 베이스 data base , 야구에는 1루 베이스 2루 베이스가 있는디,

고런거랑은 다른거당. 알았제 ?

데이터 베이스란 간단히 야그해서리 문서 내용을 다량으로 저장해 놓은 장치당.

 

더이상 물어보면 다친다 아그야 ..^^;;;

 

 

 

언어이기 때문에 공부 하셔야 겟죵 . 왜? 공부해야 할까요?

 

SQL 은 게시판,방명록 등을 만드는 데는 필수 거든요. 무조건 공부해야하는것임다.

 

 

◆우리반의 명단 테이블(Table) 이 아래 있습니다.

우리반 명단 테이블의 이름은 friends 입니다.

 

 

칼럼--> 세로

 

주민번호 name 주소 tel 수학점수

----------------------------------------------

73890 이영무 서울 9304932 100

29209 이진원 서울 2920222 90

92023 오영진 서울 2029281 80 ->레코드(★)--가로

29202 박태하 서울 2930304 80

 

 

아흑...요기서 투덜즈 본명이 나오네용 ^^

오늘의 퀴즈> 투덜이 본명이 무엇일까요? 아흑..투덜이는 공부도 잘행 ^^

아시는 분은 suhoi@naver.com 으로 멜 주세용^^

 

 

 

지금은 눈으로도 관리가 가능합니다. 4명이니까용. 바로 알수 있어요.

문제] 수학점수가 90점 이상인 사람의 이름은?

바로 답은 이영무,이진원 임다. 쉽죵.

 

그러나 위와 같은 데이터가 수백개, 수천개,수십만개 가 넘을 경우

관리하기는 쉽지 않습니다. 그래서 나온 언어가 SQL 입니다.

 

그렇게 어렵지 않으니 천천히 따라하시죵 ^^

데이터베이스를 다루는 서버 는 죄다 사용하니 알아야 함다.

오라클,mysql,sql7.0 등등 에서 사용함다.

 

 

☞DB ☞는 가장 큰범주의 데이터 베이스 임다. 학교 DB,홈페이지리스트DB,

성적 DB 등이 있겟죵. 그러나 보통 테이블과 비스므리 하게 사용됨다.

 

☞테이블☞은 위 같은 우리반 명단이 테이블 임다.

HTML 의 테이블 과 비슷하죵. 다른것이니 주의하시길 ^.^

 

☞컬럼☞은 세로줄임다. 주민번호 73890, 29209 등등이 주민번호 칼럼임다.

칼럼을 필드 라고도 하죵 ^^

 

☞레코드 ☞는 가로줄 임다. 한 개체의 데이터 모음이죵.

이영무 는 서울에 살고 몇년생이며, 전화번호는 머머다.가 레코드 임다.

 

 

◆ select 문장

문제> 전화번호와 이름만 선택 해서 보여주시용.

위와 같은 명단을 뽑을수 있죵. 보통 친구들끼리 저렇게 만들수 있잖아용.

그럴때는 아래 처럼 함다.

 

mysql] SELECT name,전화번호 FROM friends;

 

이렇게 하면 됩니다.

selcet 는 세로줄을 뽑습니다. from 은 테이블 이름임다.

friends 테이블에서 name 와 전화번호만 선택 해라 임다.

 

 

name tel

-------------------------------------

이영무 9304932

이진원 2920222

오영진 2029281

박태하 2930304

 

위 처럼 나오겟죵 ? 쉽죵?

그럼 우리반 명단 테이블에서 name 과 수학점수만 뽑아라?

select name,수학점수 from friends ;

입니다.

모두 선택 해서 뽑아라는 요?

select * from friends;

 

 

/* 이 저작물의 작성자는 이영무 ( suhoi@dreamX.net ) 임다.

배포하실때 맘대로 배포 가능 함다. 감사 함다. */

 

 

 

★ 테이블 만들기 ( create table )

그럼 우리반 명단 테이블을 직접 만들어 볼까요?

형식은

create table 테이블명( 컬럼명 변수형태 );

입니다.

 

create table friends ( 주민번호 integer ,name varchar(20),주소 varchar(50),

tel varchar(20),수학점수 integer,PRIMARY KEY

(주민번호));

 

 

이렇게 하면 우리반 테이블을 만들수 있습니다.

varchar(20) 은 영어로 20 문자 까지 만들수 있다 임다.

한글은 10개 죵. 이름이 10개 이상인것은 받을수 없슴다.

integer 은 숫자 입니다. 주민번호는 숫자다 임다.

 

 

◆ primary key 는 주키 임다. 절대 같아서는 안되는 것임다.

이영무란 이름은 많을 수 있어도 주민번호는 모두다 다르죵.

문론 전화번호도 모두다 다릅니다. 전화번호 로도 주키를 할수 있습니다.

수학점수로는 주키를 할 수 있나요? 80점 80 점 등 같은 점수가 있을 수

있기 때문에 주키로 선택 할 수 없습니다.

 

여기서는 주민번호를 주키로 지정 했습니다.

 

 

 

★ 데이터 입력 하기 (insert into 테이블명 values)

 

insert into friends values (73890,\이영무\,\서울\,\9304932\,100);

 

\ \ 는 문자열 , \ \ 가 없으면 정수 란것을 아시겟죵?

 

★ 데이터 삭제 하기

DELETE FROM friends WHERE name=\이진원\;

fiends 테이블에서 이진원인 학생을 삭제 하는것임다.

물론 레코드 를 삭제 함다.

 

where 문 은 조건 이며 name이 \이진원\ 인놈 만 잡아서 삭제하는 것이죵 ^.^

 

아싸리 비야..쉽죵 ^^

기본을 익히고 mysql 를 공부하러 이제 감다.^^

 

 

 

 

 

 

★★★★★★★★★★★★★★★★★★★★★★★★★★

윈도우용 SQL 이해 및 MySQL 서버 기초

★★★★★★★★★★★★★★★★★★★★★★★★★★

 

 

★★

리눅스도 거의 동일 하다. ^^ 리눅스 부분과 다른점은 / 와 \ 이다.

bin\mysql [윈도우]

./bin/mysql [리눅스,유닉스]

 

소개

 

/*

조금이라도 MySQL 공부에 도움이 되었으면 하는 마음에 ^.^

 

허접 번역 작성 & 추가 : 투덜즈 suhoi@naver.com

2000 년 6월 05일 - 투덜이 PHP 강좌

http://myhome.naver.com/suhoi

*/

 

MySQL 서버는 게시판 이나 방명록 등의 데이터 베이스 저장 장치로 사용된다. MySQL

서버의 명령은 모든 플랫폼에 거의 90% 이상 동일한 명령이 실행된다.

 

 

 

 

1.데이터베이스를 만들고 구조 살펴보기

 

시작버튼의 프로그램의 MS-DOS 창을 열어라.

열면 보통의 경우 디렉토리는 윈도우 아래 이다.

c:\windows> cd ..

c:\>cd mysql

c:\mysql>

 

 

 

2.MySQL 서버 구조 살펴보기 ★★★

 

MySQL < Database < Table < Record < Datatype

 

MySQL 서버안에 여러 데이터 베이스가 있고 , 디비안에 테이블 들이 있으며,

테이블안에는 레코드(가로줄) 가 있고 , 그안에는 데이터형(정수형,문자형,날짜형)

으로 구성된다.

 

테이블을 만들기 위해서는 반드시 디비를 선택하거나 , 디비를 만들어야 한다.

 

데이터 값이 저장 되는 것은 테이블 이며 , 테이블을 생성하기 위해서는 반드시 먼저

디비를 만들어야 한다.

 

 

2.MySQL 에 새로운 데이터베이스 만들기

 

새로운 데이터 베이스는 c:\mysql\data 아래 저장 된다.

 

C:\mysql>bin\mysqladmin create db01

Database \db01\ created.

db01 이란 데이터베이스를 만든것이다.

 

데이터베이스를 만들경우는 반드시 root 이어야 하며,

mysqladmin create 디비명 으로 만든다.

 

C:\mysql>

 

 

 

3.MySQL 를 시작하라

 

C:\mysql>bin\mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 22 to server version: 3.21.29a-gamma-debug

 

Type \help\ for help.

 

mysql>

 

 

3.MySQL 서버의 기본 데이터 베이스 보기

mysql> show databases;

+-------------+

| Database |

+-------------+

| mysql |

| test |

| db01 |

+-------------+

3 rows in set (0.06 sec)

 

MySQL 서버를 인스톨하면 기본적으로 2개의 디비가 있다. mysql 디비와 test 디비 가

있다.

mysql 은 MySQL 도 서버 이기때문에 서버안의 일반계정 과 디비와의 관계를 나타내는

왕초 디비 이고,

test 는 말그대로 test 를 하라는 디비 이다.

 

★★ mysql 왕초 디비에 관해서는 다음편에 자세히 설명 하겠다.

mysql 디비안에서 계정을 부여하며, 디비와 계정 과의 관계를 만들어 주어야

하는것이다. 각각의 디비는 소유주가 따로 있다는것으 명심하길 바란다.

 

 

4.사용할 데이터베이스 를 선택하라. db01 를 만들었으니 db01 를 선택한다.

mysql> use db01

Database changed

 

 

5.디비 안의 테이블을 만들어라. tb01 이란 테이블을 만든것이다.

mysql> create table tb01 (number integer,name char(10));

Query OK, 0 rows affected (0.00 sec)

 

테이블을 만드는 명령은 다음과 같다.

create table 테이블명 ( 칼럼1 데이터형,칼럼2 데이터형);

number integer 은 number 은 정수형 데이터 란 뜻이다.

name char(10) 은 name 는 문자열(char) 이며 자리수는 10 자리 안으로 제한한다.

 

한글은 1문자에 2바이트 므로 , char(10) 이면 5자리 이름밖에 들어가지 못한다.

실전에서 테이블을 구성시는 char(20) 정도로 하는 것이 좋다.

 

 

SQL 문장의 마지막은 ; 를 붙여서 명령을 실행하라고 시킨다.

; 를 안넣어도 실행하는 명령 도 있기는 하다. 예> use 명령, quit 명령

 

 

6. db01 디비 안에 어떤 테이블이 존재하는지 보자.

 

mysql> show tables;

+----------------------+

| Tables in database01 |

+----------------------+

| tb01 |

+----------------------+

 

show tables; 는 디비안의 테이블 리스트를 보여준다.

 

 

 

7.테이블 안의 항목을 보자.

 

mysql> show columns from tb01;

+---------+----------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+---------+----------+------+-----+---------+-------+

| number | int(11) | YES | | NULL | |

| name | char(10) | YES | | NULL | |

+---------+----------+------+-----+---------+-------+

 

NULL 값은 값이 없다 라는 의미이며 , 지정해 주지 않는한 null 값으로 들어간다.

값이 없어도 된다 라는 의미이다.

 

아래 명령도 같은 작동을 한다.

mysql> desc tb01;

 

 

 

8 . tb01 테이블 안에 데이터 를 넣어라.

mysql> insert into tb01 (number,name) values (1,\suhoi\);

Query OK, 1 row affected (0.00 sec)

 

테이블 안에 데이터를 저장 하기 위해서는 insert 명령을 사용한다.

insert into 테이블명 (칼럼1,칼럼2) values (칼럼1의값,\칼럼2의값\);

number 은 1 , name 는 suhoi 란 값을 tb01 테이블에 넣은것이다.

 

숫자는 \ \ 를 사용하지 않고 , 문자열은 반드시 \ \ 안에 넣어야 한다.

 

 

 

 

9. tb01 테이블 안에 모든 레코드를 보자

 

mysql> select * from tb01;

+---------+---------+

| number | name |

+---------+---------+

| 1 | suhoi |

+---------+---------+

 

 

 

 

 

★필드 추가하기

 

 

10.테이블 안에 필드 추가하기

 

tb01 테이블 안에 address 필드 를 추가해보자.

 

mysql> alter table tb01 add column address char(20);

Query OK, 1 row affected (0.04 sec)

Records: 1 Duplicates: 0 Warnings: 0

 

alter table 테이블명 add column 필드명 데이터형;

 

 

11. 1번에 두개의 필드를 추가하자

mysql> alter table tb01 add column wdate date,add column wtime time;

Query OK, 1 row affected (0.04 sec)

Records: 1 Duplicates: 0 Warnings: 0

 

wdate date 란것은 wdate 는 날짜 데이터 형이고

wtime time 란것은 wtime 는 시간 데이터 형이라는 뜻이다.

 

 

잘 추가 되었는지 확인해보자

mysql> select * from tb01;

+---------+---------+---------+---------+---------+

| number | name | address | wdate | wtime |

+---------+---------+---------+---------+---------+

| 1 | first | NULL | NULL | NULL |

+---------+---------+---------+---------+---------+

 

 

 

 

 

12. 다중입력

 

MySQL 은 한 라인에 모든 것을 넣을 수도 있지만 여러줄에 넣을 수도 있다.

여러줄에 넣을 려면 ; 를 마지막 줄에만 넣어야 한다. 예제를 바로 보면서 이해하라.

아래 두개의 다른폼은 같은 동작을 취한다.

 

 

한 라인 입력

mysql> create table table33 (number integer,name char(30));

 

다중 입력 1

mysql> create table table33

-> (number

-> integer,

-> name

-> char(30));

 

다중입력 2

mysql> create table table33

-> (number integer,

-> name char(30));

 

다중입력 1과 다중입력 2는 같은 동작을 취하며 ,아래는 잘못 만든 예 이다.

mysql> create table table33

-> (field01 inte

-> ger,

-> field02

-> char(30));

 

★ 쿼리도중에 명령이 틀렸을 경우 는 \c 를 하면 된다.

mysql> create table table33

-> (number inte,

-> \c

mysql>

 

☆ 관련 도움말을 볼려면 help 를 한다.

 

mysql> help

help (\h) Display this text

? (\h) Synonym for `help\

clear (\c) Clear command

connect (\r) Reconnect to the server. Optional arguments are db and host

edit (\e) Edit command with $EDITOR

exit (\) Exit mysql. Same as quit

go (\g) Send command to mysql server

print (\p) print current command

quit (\q) Quit mysql

rehash (\#) Rebuild completion hash

status (\s) Get status information from the server

use (\u) Use another database. Takes database name as argument

 

Connection id: 49 (Can be used with mysqladmin kill)

 

mysql>

 

 

 

13. 레코드 추가하기

mysql> insert into tb01 (number,name,address,wdate,wtime) values

-> (2,\second\,\another\,\1999-10-23\,\10:30:00\);

Query OK, 1 row affected (0.00 sec)

 

문자형은 (char) 반드시 \ \ 안에 넣어야 한다.

 

표준 날짜형은 \yyyy-mm-dd\ 이다.

표준 시간형은 \hh:mm:ss\ 이다.

☆ 날짜형과 시간형도 \ \ 안에 넣어야 한다.

\ \ 안에 넣지 않을 경우 yyyymmdd 이런식으로 붙여서 입력 해야 한다. hhmmss 도

마찬가지 이다.

 

 

 

 

14. 다른 데이터형 추가하기

화살표키 중 ↑를 누르면 전에 버퍼에 저장되어 있던 명령들이 나온다.

그것에서 데이터만 바꾸고 명령을 하면 다른 데이터가 추가 된다.

★ 98 은 되지 않으며, NT 와 2000 만 된다. 리눅스 도 당스 된다.

 

 

mysql> select * from tb01;

+---------+-----------+------------------+------------+----------+

| number | name | address | wdate | wtime |

+---------+-----------+------------------+------------+----------+

| 1 | suhoi | NULL | NULL | NULL |

| 2 | suhoi2 | address2 | 1999-10-23 | 10:30:00 |

+---------+-----------+------------------+------------+----------+

 

 

 

이것으로 끝인가? 그렇다, 우리는 이제 다했다 ^^

 

 

 

15. 입력된 데이터 업데이트 하기

 

하나의 필드 값 수정하기

 

여기서도 역시 \ \ 를 붙여주어야 한다. 어느곳에? 문자열 에는 반드시 \ \ 를 넣어야

한다.

 

mysql> update tb01 set address=\new add\ where number=1;

Query OK, 1 row affected (0.00 sec)

 

update 테이블명 set 필드명=\new add\ where 조건

number=1 인 레코드의 address 를 new add 로 수정 하는 명령이다.

number=1 은 조건 이며 가로줄을 선택한다.

 

 

16. 한번에 여러 필드 값 수정하기

 

mysql> update tb01 set wdate=19991022, wtime=062218 where number=1;

Query OK, 1 row affected (0.00 sec)

 

 

 

아래 처럼 보이는가?

 

mysql> select * from tb01;

+---------+-----------+------------------+------------+----------+

| number | name | address | wdate | wtime |

+---------+-----------+------------------+------------+----------+

| 1 | suhoi | new add | 1999-10-22 | 06:22:18 |

| 2 | suhoi2 | address2 | 1999-10-23 | 10:30:00 |

+---------+-----------+------------------+------------+----------+

 

 

한번 으로 여러개의 필드값 수정하기

 

mysql> update tb01 set wtime=152901 where wdate>19990101;

Query OK, 3 rows affected (0.00 sec)

 

날짜가 19990101 이후 인것의 wtime 는 모두 수정하는 것이다.

 

 

 

mysql> select * from tb01;

+---------+-----------+------------------+------------+----------+

| number | name | address | wdate | wtime |

+---------+-----------+------------------+------------+----------+

| 1 | suhoi | new add | 1999-10-22 | 15:29:01 |

| 2 | suhoi2 | address2 | 1999-10-23 | 15:29:01 |

+---------+-----------+------------------+------------+----------+

 

 

 

 

17. 레코드 지우기

 

 

 

mysql> delete from tb01 where number=2;

Query OK, 1 row affected (0.01 sec)

 

delete from 테이블명 where 조건

number=2 인것의 레코드를 지우는 명령이다.레코드는 가로줄이다.

 

 

mysql> select * from tb01;

+---------+-----------+------------------+------------+----------+

| number | name | address | wdate | wtime |

+---------+-----------+------------------+------------+----------+

| 1 | suhoi | new add | 1999-10-22 | 15:29:01 |

+---------+-----------+------------------+------------+----------+

 

 

 

18. 테이블 지우기

mysql> drop table tb01;

Query OK, 0 row affected (0.01 sec)

 

mysql> show tables;

 

 

19. 종료하기

mysql> quit

Bye

 

[Top]
No.
제목
작성자
작성일
조회
16490MySQL 기동시 자동 파일 복구 기능
정재익
2002-07-12
6491
16444MySQL에서 한글 정렬
정재익
2002-07-09
6893
16443해당 날짜에 DB update 하기
정재익
2002-07-09
6149
16215Window용 SQL 이해 및 MySQL 서버 기초
정재익
2002-06-11
10197
16214FILE Upload 와 MySQL BLOB 화일 입출력 [1]
정재익
2002-06-11
17560
16213MySQL Table Joins
정재익
2002-06-11
8630
15438mysqld_error code [1]
김순석
2002-03-12
11042
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.033초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다