728x90

while문 해보려는데..

나와같은 의문을 가지신 분

프로시저 꼭 만들어서 써야돼?

https://stackoverflow.com/questions/12954095/mysql-declare-while-outside-stored-procedure-how

 

mysql DECLARE WHILE outside stored procedure how?

I fairly new to mysql but have MS SQL experience. Is it possible to declare variables and use while statement outside stored procedure? I only found examples where guys doing like this 1. proced...

stackoverflow.com

안된데 따흑.

https://dev.mysql.com/doc/refman/8.0/en/sql-compound-statements.html

^공식문서...

 

 

방금 스택오버 따라서 코드 처보는데

DELIMITER 

이거 맨앞에 넣어야 빨간줄 안뜨네

너 뭐야..

 

공식문서가 말하길,,

"기본적으로 mysql 자체는 세미콜론을 명령문 구분 기호로 인식하므로 mysql 이 전체 ​​저장 프로그램 정의를 서버에 전달하도록 하려면 구분 기호를 일시적으로 재정의해야 합니다.

mysql 구분 기호 를 재정의하려면 delimiter명령을 사용하십시오. //전체 정의를 단일 명령문으로 서버에 전달한 다음 ;프로시저를 호출하기 전에 로 복원할 수 있도록 구분 기호가 변경됩니다 . 이렇게 하면 프로시저 본문에 사용된 구분 기호가 mysql 자체 ; 에서 해석되지 않고 서버로 전달될 수 있습니다."

 

어 그렇구나..(이해못함)

https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html

 

식 사이를 구분지어주는 거같음

 

아니!! 근데!!! 아무것도 안나와 

-> 계속 생기고 뭐지

세미콜론으로 끝내려는데도 안됨

뭘까..?

 

 

 

 

 

아하!

 

MySQL 콘솔창은 쌍반점(;)이 입력되면 어떤 경우에서건 일단 쌍반점(;) 이전 단계까지 명령문을 실행하게 됩니다.

구분 문자(;) 변경하기

명령분이 완성되지 않은 상태에서 실행되면 곤란합니다. 저장 프로시저에서 END를 입력하고 나서 CREATE PROCEDURE 명령이 실행되도록 환경을 변경해야 합니다.

 

그러려면 저장 프로시저를 작성하기 전에 구분 문자를 쌍반점(;)이 아닌 다른 문자로 변경해 둡니다. 일반적으로는 //을 사용합니다.

 

구분 문자를 //으로 변경할 때에는 DELIMITER 명령을 사용합니다.


맨 마지막의 DELIMITER ;는 구분 문자를 원래대로 되돌려 놓는 명령입니다. 구분 문자를 쌍반점(;)으로 되돌려 놓는 것을 잊지 않도록 합니다.

출처: https://recoveryman.tistory.com/186 [회복맨 블로그]  회복맨, 당신은 최고의 정리맨이자 설명맨입니다. 짱짱~


 

DELIMITER 가 구본문자를 바꾸는 명령어구나

구본문자를 세미콜론에서 //이걸로 바꿔놓고 

안된다고 하고 있었구나....ㅋㅋㅋㅋㅋㅋ

 

 

 

DELIMITER //
create procedure pro()
begin 
select name from sequence;
select deposit_date from sequence;
end
//




DELIMITER ;

call pro;

 

 

삭제하고 다시 만들어봐야지

 drop procedure if exists 프로시저 이름;

 

 

임의로 값 넣어놓음

 

DELIMITER //

구본문자//로 바꾸고

create procedure pro(d int)

프로시저 pro만들고 int형 인수d들어가게끔 사용할거임
begin 

시작
select * from sequence where interest_amount < d;

다가져와 seuquence 테이블에서 interest_amount가 d보다 작은 것중에서
end


//

프로시저 끝


DELIMITER ;

구본문자 다시 ;로 바꿈

call pro(3);

프로시저 실행. 인수에 3넣고 (3보다 작은 interest_amount 가져올거임)

 

 

 

 

이제 다시 while문 해봐야지..

 

https://recoveryman.tistory.com/186

 

[MySQL & PHP] 12장 저장 프로시저 활용하기

정리 1. 저장 프로시저의 의미와 작성 방법 1. 저장 프로시저란? 1.1 이용할 수 있는 버전 저장 프로시저를 학습하기 전에 MySQL의 버전을 확인하도록 합니다. 저장 프로시저는 MySQL 버전 5.0 이상에

recoveryman.tistory.com

 

이글은 보고 또 봐야지.. 뒤에는 다 안해봄!

 

 

 

 

728x90
728x90

설치 완료 후

 

 

mysql로 접속

 

설치된 폴더 경로로 들어가서 

cd 폴더경로

 

 

들어가서> mysql -u root -p

 

비번 입력하면 뜸!

 

나가고 싶으면

exit

 

데이터베이스 생성

create database movie_db default character set utf8;

 

영화정보 넣을거라서  movie_db로 넣었음

 

create database movie_db default character set utf8;

(MySQL이 기본적으로 알고 있는 구문을 예약어라고 부름 예약어는 소문자로 써도 되지만 대문자로 쓰는게 좋아

사용자가 직접만든 이름이랑 구분하기 위해서)

 

 

이거 사용할거야~

mysql> USE movie_db;

 

 

이전에 만든

데이트베이스 리스트 보고 싶으면

mysql> show databases;

 

그중에서 사용할 꺼 USE 데이터베이스

하고 

테이블 보기

mysql> show tables;

 

 

 

 

 

 



 

 

 

테이블(데이터가 들어갈 수 있는 틀) 생성하는 명령어

 

create table [데이터베이스명. 테이블명] 

 

mysql>  CREATE TABLE products(
    -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);

 

 

아까 USE 테이터베이스명 해서 

생략해도 됨

 

 

만들어진 테이블 확인하는 명령어 

DESC 테이블명

 

 

 

테이블  컬럼 추가

ALTER TABLE `테이블명` ADD `컬럼명` VARCHAR(50) NOT NULL;

 

mysql> ALTER TABLE `products` ADD `name` VARCHAR(50) NOT NULL;

 

악 에러 뜬 이유가 `` 뱁틱이어서 그랬음..ㅎㅎ

 

 

이렇게 괄호로 묶어서 한번에 여러 개 넣어줄 수도 있음

 

 

 

 

개념 정리하고 가자~~~

 

(아직 데이터를 안넣어서 책에 나온 예시로 정리)

 

컬럼과 로우

id  name  age married
1 zero 24 false
2 nero 32 true
3 hero 28 false

 

컬럼(column) : id, name, age,married 과 같은 세로줄 

(age 컬럼에는 24,32,28과 같은 정보 담겨있음)

로우(row) : 1,zero,24,false와 같은 가로줄. 

 

필드 : 컬럼과 로우가 교차하는 칸 하나

컬럼은 세로필드의 집합

로우는 가로 필드의 집합

테이블에 데이터를 넣을 때는 미리 컬럼을 정의해두고 컬럼에 맞춰 데이터를 넣으면 된다.

 

컬럼의 자료형

  • INT : 정수 의미. 소수까지 저장하고 싶다면 FLOAT 나 DOUBLE 자료형 사용
  • VARCHAR(자릿수) : 가변길이. 0~자릿수인 문자열 넣을 수 있음
  • CHAR(자릿수) : 고정길이 자료형. 부족한 자릿수만큼 스페이스가 채워짐
  • TEXT : 긴 글 저장할 때 사용. 수백 자 이내의 문자열은 보통 VARCHAR(자릿수)사용하고 그보다 길면 TEXT 사용
  • TINYINT : -128부터 127까지의 정수 저장할 때 사용. 1또는 0만 저장하면 불값(Boolean)과 같은 역할 할 수 있음
  • DATETIME : 날짜와 시간에 대한 정보 담고 있음. 날짜 정보만 담는 DATE / 시간정보 담는 TIME 자료형

 

(자료형 뒤) 옵션

  • NULL 과  NOT NULL  : 빈칸 허용할지 여부 묻는 옵션
  • AUTO_INCREMENT : 숫자를 저절로 올리겠다는 뜻 (데이터 넣으면 알아서 id로 1번부여, 다음 2번 부여 이렇게)
  • UNSIGNED : 숫자 자료형에 적용되는 옵션. 음수 무시되고 0~4294967295까지 저장가능.나이 컬럼에 체크해두는게 좋음
  • ZEROFILL : 숫자의 자릿수가 고정되어 있을 때 사용할 수 있음(예) INT(4)인데 숫자1넣으면 0001이 되는 식)
  • created_at 에는 DEFAULT now()라는 옵션 붙어있음. 현재 시각 넣으라는 뜻. now()대신 CURRENT_TIMESTAMP를 적어도 같은 뜻이 됨. 사용자 정보를 넣으면 created_at 컬럼에는 넣는 순간의 시각이 자동으로 기록됨.
  • 해당 컬럼이 기본 키인 경우에 PRIMARY KEY옵션을 설정. 기본 키란 로우를 대표하는 고유한 값을 의미

 

DEFAULT CHARACTER SET 을 utf8로 설정하지 않으면 한글이 입력되지 않으니 반드시 설정해야 함

 

 

 

테이블 잘못 만들었을 경우 제거하는 법

DROP TABLE [테이블명] ;

 

데이터 입력

INSERT INTO 테이블명 (필드,필드) VALUE ('테이터','데이터'..)

 

선택

Select * from products

전체 선택

 

select 필드, 필드 from 테이블 where 조건

(조건검사 : where 데이터 베이스 안에서 원하는 데이터를 조건에 맞게)

 

 

 

 

 

 

 

 

기본적인 mySQL 관계(비교)연산자 : 주어진 좌우 값을 비교하는 연산자
좌변과 우변이 같다
!= 또는 <>     좌변과 우변이 다르다
<   작다
<=   작거나 같다
크다
>= 크거나 같다

 

 

 

예시

 

 

논리연산자 : 참(true), 거짓(false) 두 가지를 가지고 비교하는 연산자
AND , && 비교하는 값 모두 참(true)여야 결과가 참(true)
OR , ||  비교하는 값 중 하나라도 참(true)이면 결과가 (true) 

예시

 

 

만약 글자에서 특정 부분 일치하는 데이터를 조회하고 싶다면!

LIKE

%는 다른 경우 들어갈 자리에 붙여줌

 

 

정렬하기 

order by

전체 선택해서 

openDate 기준으로 오름차순

 

오름차순 asc (안적어도 자동이긴 함)

내림차순 desc

 

 

특정 위치에 있는 데이터를 선택

LIMIT

상위부터 2까지

 

 

 

 

 

데이터를 3개를 건너뛴 다음에 데이터 1개

 

 

명령어 순서 지켜야함!

 

 

데이터를 수정할 때

update라는 명령어 써주면 됨

여러개 수정할 때

콤마, 사용

 

 

데이터 삭제

테이블 삭제 

DROP TABLE 테이블명;

데이터베이스 삭제

DROP TABLE 데이터베이스 이름;

728x90
728x90
<table>웹페이지에서 테이블을 만들기 위해서는 table 태그 사용함
<tr>테이블의 행(row가로줄)을 표현하는 태그
<th>열(column세로줄)의 제목을 표현하는 태그
<td> th와 마찬가지로 tr태그 안에서 사용
테이블에서의 각각 데이터를 담고있는 셀을 나타낸다.

이렇게 하고 style을 

적용해야 선이 생김

, 콤마 찍어서

한번에 값 줄 수 있음

border
padding 여백

결과~

셀병합도 속성 부여하면 됨!

위에가 셀병합한 거임

rowspan="" 가로줄, 행 ""개 셀 합하겠다
colspan="" 세로줄, 열 ""개셀 합하겠다

합할 거 태그 안에 넣어주면 됨

 

 

<textarea> 
여러줄의 텍스트를 입력받을 때 사용!

<textarea rows="" cols=""></textarea>
텍스트 (가로세로)줄수

결과값

 

 

인풋대신 버튼 만들수도 있어!

 

으라챠챠챠 복습끝~~~~

728x90

+ Recent posts