/*
조금이라도 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