자료넣기 insert
-만든 테이블에 자료를 넣을때

INSERT INTO 테이블이름 (컬럼이름1, 컬럼이름2...) VALUES ('값1', '값2'...);

<?
$connect=mysql_connect("localhost", "asdf", "1234"); //mySQL에 접속
$mysql = mysql_select_db ("asdf_db", $connect); //db선택
$query="INSERT INTO student (no, name, year) VALUES (1, '김민철', 1996);";//레코드넣기

mysql_query ($query, $connect); //쿼리문입력
mysql_close($connect); //접속끊기

?>

여기서 주의할 점은
바로 "와 '의 사용인데 다음의 경우
INSERT INTO notice (message) VALUES ('Don't touch'); 와 같은쿼리문은
제대로 실행되지 않는다
이럴때는 '대신에 \'를 넣어주면 된다
INSERT INTO notice (message) VALUES ('Don\'t touch');

이것은 방명록,게시판을 만드는데 꼭 필요한 작업으로
특수문자에 \를 추가하는 addslashes와
\를 제거하는 stripslashes라는 함수를 사용하여 구현할 수 있다.




레코드삭제
DELETE FROM 테이블이름
예. DELETE FROM student 라고 하면 스튜든트테이블을 모조리 지워버린다

여기서 특정 레코드만 지우려면 조건을지정해야 하는데, 그것이 where이다
WHERE 라는 것은
쿼리문이 실행될 레코드를 지정해 주는 것으로 DELETE문이나, UPDATE, SELECT문 등에서
사용되는 조건절이다
실행쿼리문 WHERE 조건

DELETE FROM student WHERE no =1
-> no컬럼이 1인 레코드를 삭제

WHERE의 조건으로는 = 이외에도
>, >=, <,<= 와 같은 비교 연산자가 올수도 있고
추가적으로 <> 라는 연산자가 사용되는데 이것은 != 와 같은 것으로 서로 같지 않다는 것이다




컬럼 BETWEEN '값1' AND '값2'
-값이 허용될 범위를 정해주는 조건문으로,
값1, 값2의 사이에 있는 레코드를 선택하여 쿼리문이 실행하도록 해준다.

예를들어 student테이블의 year컬럼에 해당하는 값이 1996~1998 사이에 있는 레코드를 삭제하려면
DELETE FROM student WHERE year BETWEEN 1996 AND 1998




컬럼 LIKE '%값%'
-LIKE는 주로 검색에 이용되는 것으로 해당 컬럼에 값에 해당하는 문자가 있다면
실행대상에 포함시키는 조건식이다.

예로, student테이블의 name컬럼에 '송'이라는 문자가 있는 컬럼의 내용을 삭제하려면
DELETE FROM student WHERE name LIKE '%송%'

여기서 %는 *의 기능으로, 모든 문자가 올 수있다는 의미인데, 여기서 %송%으로 해주면 '송'이라는 문자 앞뒤에 다른 어떤 모든 문자가 있을 수 있다는 것이 된다

만약 '송'으로 시작하는 레코드만 선택하려면 '송%'와 같이 하며
'송'으로 끝나는 레코드만 선택할면 '%송'으로 해주면 된다




AND와 OR
여러개의 조건을 논리 연산자로 연결하여 사용

실행쿼리문 WHERE 조건1 AND 조건2
->조건1과 2를 모두 만족하는 레코드를 선택하여 실행

실행쿼리문 WHERE (조건1 AND 조건2) OR 조건3
->조건1,2를 모두 만족하거나 조건3을 만족하는 레코드를 선택하여 실행

이때 AND, OR대신에 &&, ||를 사용가능하다

DELETE FROM student WHERE (no=2 AND LIKE '송%') OR year BETWEEN 1996 AND 1997
와 같이 복합적으로 사용도 가능하다





UPDATE
-입력된 내용을 변경

UPDATE 테이블이름 SET 컬럼이름1='값1', 컬럼이름2='값2' ... WHERE 조건

예를들어
UPDATE student SET name='철 수', year='2000' where no=2
-> no가 2인 레코드에서 name컬럼을 한혁으로 year컬럼을 2000으로 변경하라는 구문

추가
ALTER TABLE 테이블이름  ADD 컬럼이름

student테이블에 나이라는 컬럼을 추가해보자
ALTER TABLE student ADD age tinyint NOT NULL

<?
$connect=mysql_connect("localhost", "asdf", "1234"); //mySQL에 접속
$mysql = mysql_select_db ("asdf_db", $connect); //db선택
$query="ALTER TABLE student ADD age tinyint NOT NULL";
 //테이블생성쿼리
mysql_query ($query, $connect); //쿼리문입력
mysql_close($connect); //접속끊기

?>

이때 컬럼의 이치를 정해줄 수 가 있는데 마지막에 AFTER를 사용한다
ALTER TABLE student ADD age tinyint NOT NULL AFTER name


기본값으로 변경해 주려면
ALTER TABLE student ADD primary key (no)


컬럼을 삭제하려면
ALTER TABLE student DROP 컬럼이름

ALTER TABLE student DROP age






변경
-컬럼의 이름이나 내용을 변경
ALTER TABLE 테이블이름 CHANGE 컬럼이름1 컬럼이름2

ALTER TABLE student CHANGE name name varchar (30) NOT NULL

<?
$connect=mysql_connect("localhost", "asdf", "1234"); //mySQL에 접속
$mysql = mysql_select_db ("asdf_db", $connect); //db선택
$query="ALTER TABLE student CHANGE name name varchar (30) NOT NULL";
 //테이블생성쿼리
mysql_query ($query, $connect); //쿼리문입력
mysql_close($connect); //접속끊기

?>











 학번no 이름name  입학년도year 
 정수형 int  문자형 char (20)  정수형 year


CREATE TABLE student(
no int,
name char (20),
year year
);


테이블삭제하기
mysql_query ("쿼리문", 접속구분자);
->접속이 끝난후 쿼리문을 mysql로 보내주는 함수

<?
$connect=mysql_connect("localhost", "asdf", "1234"); //mySQL에 접속
$mysql = mysql_select_db ("asdf_db", $connect); //db선택

mysql_query ("DROP TABLE student", $connect); //student 테이블삭제
mysql_close($connect); //접속끊기
?>


테이블생성
<?
$connect=mysql_connect("localhost", "asdf", "1234"); //mySQL에 접속
$mysql = mysql_select_db ("asdf_db", $connect); //db선택
$query="CREATE TABLE student(
no int,
name char(20),
year year
);"; //테이블생성쿼리
mysql_query ($query, $connect); //쿼리문입력
mysql_close($connect); //접속끊기

?>


제약조건
1.기본키 primary key
-기본키 역할을 할 컬럼을 정함

CREATE TABLE student(
no int,
name char(20),
year year,
primary key (no)
);


CREATE TABLE student(
no int primary key,
name char(20),
year year
);



2.유일한 값, 유일키(unique key)
-중복된 값의 입력을 허용하지 않겠다는 것

CREATE TABLE student(
no int,
name char(20),
year year
unique (no)
);


CREATE TABLE student(
no int unique,
name char(20),
year year
);


3.NOT NULL
-반드시 값이 입력되어야 함

CREATE TABLE student(
no int,
name char(20) NOT NULL,
year year
);
기본키로 설정된 컬럼이라면 굳이 NOT NULL을 설정해주지 않더라도  NULL값은 입력되지 않는다



4. 기본값 default
-널값이 입력될 경우를 대비하여 기본적으로 입력될 값을 정해줄 수 있다. DEFAULT '기본값'

CREATE TABLE student(
no int,
name char(20),
year year DEFAULT '2002'
);
단, text와 같은 자료형에는 기본값을 설정할 수 없다




5. auto_increment
-자동증가, 해당컬럼에 아무런 값을 넣지 않아도 자동으로 일련번호를 매겨가며 값을 넣어주게 됨

CREATE TABLE student(
no int primary key auto_increment,
name char(20),
year year
);
이때 해당컬럼은 기본키나 유일키로 지정되어 있어야만 한다






문자형
1.char
-문자형에서 가장 기본적인 형태의 자료형으로 영문,숫자,한글,특수기호 등의 문자를 입력할 수 있으며
범위는 1-255자(byte)까지이다
컬럼이름 char (크기)

예를들어 char (20)이라고 하였다면, 영문과  숫자를 기준으로 20자까지 입력이 가능하다

2.varchar
-char와 같은 자료형을 갖지만 차지하는 크기면에서 가변적인 성질을 갖는 자료형으로

char (20)인 컬럼에 "a"라는 문자만 입력했을 때 설정된 20byte를 차지하지만,
varchar (20)인 커럼에 "a"라는 문자만 입력했다면 a에 해당하는 1byte의 크기만 차지한다

용량에서는 경제적이지만 char보다 속도가 느리다는 단점이 있다.


3.text
-게시판의 본문등을 저장할때 사용되는 자료형으로,
장문형태의 문자열을 저장할때 사용되며, 크기의 지정없이 사용되지만 65536자까지만 저장이 가능하다


4.기타
- BLOB, TINYTEXT, LONGTEXT 등의 자료형이 더 있지만
실제로는 char, varchar, text 이 세가지 만으로도 모든 문자형 자료처리가 가능하므로 위의 것을 거의 쓰지 않는다




숫자형
1.int
-정수형 -2147483648~ 2147483647 까지 표현가능하며
int unsigned라고 해주면 양수인 0~4294967295까지 입력이 가능하다

컬럼이름 int
컬럼이름 int unsigned

[팁]
int (5) 라고 하면 5자리 숫자를 입력할 수 있다고 생각할 수 있지만, 그건 아니고
int는 크기를 제한해 주려면 int (크기) zerofill 이라고 해줘야 가능하다
또한 int (5) zerofill 컬럼에 2라는 자료형을 입력하였다면 2가 아닌 00002라는 값이 채워진다

컬럼이름 int (크기) zerofill



2.tynyint
-int보다 작은 범위의 정수형 입력할 때 사용
범위는 -128~127

tinyint unsigned라고 해주면 0~255까지 입력가능

컬럼이름 tinyint
컬럼이름 tinyint unsigned
컬럼이름 tinyint (크기) zerofill

3.기타
smallint -> -32768~32767
mediumint -> -8388608~8388607
bigint -> -9223372036854775808~9223372036854775807
double -> -1.7976931348623157E+308~-2.2250738585072014E-308
real -> -1.7976931348623157E+308~-2.2250738585072014E-308
float -> -3.402823466E+38 ~ -1.175494351E-38



날짜형
-거의 사용하지 않는다 (유닉스타임스탬프를 활용하면 어떠한 날짜로든 가공할 수 있기에)
하지만 날짜에 대한 전문적인 데이터를 다룰때 필요할 수도있다
date -> yyyy-mm-dd
datetime -> yyyy-mm-dd hh:ii:ss
timestamp -> yyyymmddhhiiss
time -> hh:ii:ss
year -> yyyy




열거형
-제한된 값 중 선택하도록 하는 자료형
선택가능한 값으로는 최대 65535개 까지가능

컬럼이름 enum ('값1', '값2', .......)

예를들어, test라는 컬럼에 Y, N이라는 값만 저장가능하도록 한다면
test enum ('Y', 'N')
으로 설정하면 된다

mysql_connect
-mySQL에 접속하는 함수
접속구분자 = mysql_connect ("호스트이름", "사용자id", "비밀번호");

mySQL에 성공적으로 접속하였다면, 접속구분자에 해당하는 변수에 해당 접속정보가 저장된다.
기본적으로 한페이지에서 mySQL에 대한 하나의 접속만이이루어진다면, 이 접속구분자를 사용할 필요는 없다.

mysql_select_db
-디비를 선택해주는 함수
mysql_select_db ("db이름", 접속구분자);

<?
$connect=mysql_connect("localhost", "asdf", "1234"); //mySQL에 접속
$mysql = mysql_select_db ("asdf_db", $connect); //db선택

echo $mysql;
?>
결과는 1


mysql_close
-디비접속을 끊어주는 함수

<?
$connect=mysql_connect("localhost", "asdf", "1234"); //mySQL에 접속
$mysql = mysql_select_db ("asdf_db", $connect); //db선택

echo $mysql;
mysql_close($connect);
?>

+ Recent posts