[리눅스 명령어 ] 리눅스 기초(명령어 위주)

 
명령어 도움말 보기

리눅스에는 많은 명령어가 있기 때문에 모두 외워서 사용할 수 없습니다.
 
때문에 명령어에 대한 도움마을 얻을 수 있는 명령어가 있는데 man 명령어 입니다.

man 명령어는 manual의 약자로 다음과 같이 사용합니다.

 

리눅스 명령어

명령어 사이를 세미콜론으로 구분하면 연속으로 실행할때 사용한다는 의미이다.

fdisk -l /dev/sdb; fdisk -l /dev/sdc

(연속두번의 fdisk가 실행된다)

pwd : 현재 디렉터리 보여준다

ls -l : 현재 디렉터리의 파일리스트

ls -a : 현재 디렉터리의 목록(숨김파일 포함)

ls *.확장자

ls -l /etc/sysconfig/a* : 해당 디렉터리에 있는 목록 중에서 앞글자가 a인것들 목록

cd /etc : etc폴더로 이동

halt -p : 종료한다

df : 시스템에 마운트된 하드디스크를 확인할때 사용한다.

 

cd 명령어 관련

. 현재 디렉터리 .. 현재 디렉터의 상위 디렉터리

cp ../lib/abc .

: 현재 디렉터리의 상위 디렉터리(..)아래에 있는 /lib/디렉터리의 abc 파일을 (.)현재 디렉터리에 복사해라

 

mv : 파일이나 디렉터리 이동

mkdir : 디렉터리 생성

cat : 파일 내용을 보여줌

 

head, tail : 텍스트 형식으로 작성된 파일의 앞 10행 또는 마지막 10행만 화면에 출력함

head anaconda-ks.cfg : 해당 파일의 앞 10핼을 화면에 출력

head -3 anaconda-ks.cfg : 해당파일의 앞 3행을 화면에 출력

tail -5 anaconda-ks.cfig : 마지막 5행만 화면에 출력

 

권한이 필요한 명령어

rm : 파일이나 디렉터리 삭제

rmdir : 디렉터리 삭제(비어있어야한다)

cp : 파일이나 디렉터리 복사

 

파일실행

./파일명

 

다른사용자로 접속

su - 사용자 아이디 : 루트의 경우에는 비번없이 가능

exit : 위의 su를 사용한 경우 다시 root로 돌아감

 

네트워크 관련명령어

systemctl restart network : 네트워크 재시작

  - restart말고도 start, stop, status 가 있다.

ifconfig ens32 : 네트워크 정보확인

nmtui

  - 자동 ip 또는 고정 ip 사용 결정

  - ip주소 서브넷마스크 게이트웨이 정보 입력, dns 정보입력, 네트워크 카드 드라이버 설정

  - 네트워크 장치의 설정

ifup 장치이름 : 장치를 작동시켜주는 명령어

ifdown 장치이름 : 장치를 끄는 명령어

ifconfig 장치이름 : 해당 장치의 ip주소와 관련된 정보 출력

ping ip주소  또는 url : ping테스트

 

기타 팁

파이프 : |

  - 2개의 프로그램을 연결해준다.

  - ls -ls /etc | more : more를 사용해서 1페이지씩 나눠서 보겠다를 추가한것

필터 : grep, tail, wc, sort, awk, sed

  - ps -ef | grep bash : ps -ef는 모든 프로세스 번호 출력 bash라는 글자가 들어간 프로세스만 출력

프로세스

  - ps : 현재 프로세스 확인

  - kill : 프로세스 강제종료

  - pstree : 프로세스 트리형태 (부모와 자식관계)

  - jobs : 현재 백그라운드로 가동중인 프로세스 확인

  - 모든 명령어에 &를 붙이면 자동으로 백그라운드로 실행된다. 예) gedit &

 

 


블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,


[Linux] 우분투 리눅스 가상 터미널

 
가상 터미널

우분투에서는 7개의 가상 터미널을 제공합니다. 실제 물리적 모니터는 하나지만 논리적으로 7개의 모니터를 제공하는 것입니다. 만약 현재 실행중인 우분투가 X윈도우(GUI) 환경이라면 7개의 콘솔 중 7번째 터미널인 것입니다.


우분투에서 터미널이라 하면 보통 Gnome Terminal을 생각합니다.
하지만 Ctrl + Alt + F2 를 누르면 갑자기 화면이 바뀌면서 검은 바탕에 흰 글씨로 login: 을 뿌려줍니다.

이는 보통 리눅스에서 runlevel 3로 진입한 경우 나타나는 CUI 터미널로서 가상 터미널이라 불립니다.

ID와 Password를 입력하면 정상적 로그인이 됩니다.
안타깝지만 이 상태에서는 한글을 입력하거나 볼 수 없으며 영문만 가능합니다.

이런 답답한 터미널을 어디에 사용할까 생각되지만 가끔 필요할 때가 있습니다.
비디오 카드 설정을 변경하가나 X Windows를 뜯어 고칠 경우 사용하면 좋습니다.

우분투 시동중에 화면이 딱 멈추었을때도 가상 터미널로 진입이 가능하므로 알아 두면 언젠가 쓸 때가 생깁니다.

가상터미널은 Ctrl + Alt + F2 뿐만 아니라 F3, F4, F5, F6 이 가능하며
Ctrl + Alt + F7 은 우분투 바탕화면에 할당되어 있습니다.

멀티테스킹이 가능하므로 터미널을 여러개 띄우고 자유자제로 왔다갔다하는 것도 가능합니다.

한 가지 문제점은 이 가상터미널의 해상도가 너무 낮아 보기 안습이라는 겁니다.
/boot/grub/menu.lst 를 수정해서 가상 터미널의 해상도 조절이 가능하니 한 번 시도해 보세요.

7개의 가상 터미널 중 다른 터미널로 이동하는 방법은 단축키 Ctrl + Alt + F1 ~ F7 을 통해 이동할 수 있습니다.

X윈도우 환경인 경우 7번째가 X윈도우 환경이므로 다시 돌아오기 위해서는 Ctrl + Alt + F7을 누르면 됩니다.

만약 Ctrl + Alt + F3를 누르는 경우 3번 터미널로 이동합니다. tty3은 3번 터미널을 의미합니다.

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

 오늘은 리눅스 재부팅,리눅스 종료, 리눅스 로그아웃 방법에 관하여 알아봅시다.

 

 

X윈도우 환경에서 종료할 때는

X윈도우 환경일 겨우 우측 상단 톱니바퀴를 누르고 컴[퓨터 끄기]를 누릅니다.

이후 나타나는 팝업에서 컴퓨터 끄기 버튼을 누릅니다.

다시시작 하려면 왼쪽의 회전 모양의 아이콘을 누릅니다.

명령어를 통한 종료

명령어로 시스템을 종료하는 방법은 몇 가지가 있는데 poweroff, shutdown -P now, halt -p, init 0 이 있습니다.

모두 root 권한에서 실행할 수 있는 명령어이며 옵션 및 명령어는 대소문자를 구분합니다.


#poweroff
#shutdow -P now
#halt -p
#init 0


shutdown 명령어


#shutdown -P +20    20분 후에 종료됩니다.(P: poweroff)
#shutdown -r 13:00  오후 1시에 재부팅 됩니다.(r: reboot)
#shutdown -c        예약된 종료 및 재부팅을 취소합니다.(c: cancel)
#shutdow -k +20     현재 서버에 접속해 있는 사용자들에게 20분 후 종료된다는 메시지를 보냅니다.(실제 종료되지는 않습니다.)
 

시스템 재시작

시스템 재시작하는 방법으로는 shutdown -r 과 같이 다음의 명령어들로 즉시 재시작이 가능합니다.


#reboot
#shutdown -r now
#init 6


시스템 종료 및 재시작시 init 명령어 를 사용하였는데 init 명령어는 시스템 런레벨을 변경하는데 사용됩니다. 런레벨이란 시스템 실행 모드를 변경한다는 뜻으로 이해해도 되는데 0은 종료모드, 6은 재시작 모드라고 생각하면 됩니다.

로그아웃

로그아웃은 특정 계정을 통해 현재 서버에 접속해 있는 상태에서 접속만 끊는 것이며, 시스템을 종료시키지는 않습니다.

다음의 두 가지 명령어를 통해 로그아웃 가능합니다.

#logout
#exit

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

 


[리눅스] 디스크 RAID 구성 종류

 

 

RAID(Redundant Array of Inexpensive/Independent Disks)이란 여러개의 Disk처럼 묶어서 사용하는 방법입니다. 초장기RAID는 초기에는 Disk의 용량이 크기 않아서 업그레이드 후 폐기하기엔 아깝고 단독으로 사용하기에는 용량이 부족한 (Inexpensive)저장 장치를 재활용할 목적으로 RAID구성하였습니다 현재 RAID는 저장장치의 기술이 발전하여 용량이 점차 커져 용량 증설의 목적이 아닌 데이터보호 혹은 디스크 성능 개선을 위해 사용한다해서 독립적인 또는 단독으로 사용가능한(Independent)저장장치로 해석합니다.


RAID구성종류는 Hardware RAID와 Software RAID가 있습니다. H/W RAID는 RAID컨트롤러에 의해 구성하고 RAID컨트롤러에는 독자적인 메모리와 프로세서를 가지고 있고 안정적이고 성능이 우수합니다. S/W RAID는 RAID컨트롤러없이 운영체제에서 지원하는 방식으로 H/W RAID에 비해 속도나 성능이 떨어지고 저렴한 비용으로 H/W RAID와 동일하게 RAID를 구성할수있습니다.


RAID 레벨에 따른 디스크 구성 

RAID는 방식에 따라 기본적으로 RAID0 ~ RAID5 까지로 나뉩니다.  

단일 디스크인 경우

이경우는 RAID가 아니고 말 그대로 디스크 하나를 하나인것처럼 사용하는 경우입니다.

당연히 데이터는 디스크 하나에 차곡차곡 저장됩니다.   
 

Linear RAID

Linear RAID는 RAID로 구성된 디스크를 차례대로 사용하는 경우입니다.

데이터는 첫번째 디스크부터 차례대로 저장됩니다.

디스크는 2개 이상 필요합니다.

RAID로 구성된 디스크의 공간을 100퍼센트 이용가능합니다.


그러나 신뢰성은 보장할 수 없는데 만약 1번 디스크와 2번디스크에 데이터가 걸쳐있는 경우 둘 중 하나 망가지면 데이터 잃게 됩니다.

무슨 뜻이냐면 만약 파일 하나를 저장하는데 10번화 11번 데이터가 파일 하나를 나눠 저장한 경우라면 둘 중 하나가 망가졌을 경우 해당 파일은 완전하지 못한 파일로 사용하지 못하게 되는 것입니다. 

RAID0

RAID0은 동시에 각각의 디스크에 데이터를 저장하는 방식(병렬)입니다.

그렇기 때문에 RAID 레벨중 가장 속도가 빠릅니다.

디스크 1 에는 1,2,3을 저장하면서 동시에 디스크2에 4,5,6을 저장하는 것입니다.

이러한 방식을 Stripping 방식이라고 합니다.

속도는 빠르지만 뭐든 나누어 저장하기 때문에 한개의 디스크라도 고장이 난다면 데이터를 모두 잃게 되어 신뢰성이 떨어지는 방식입니다.

대부분 속도가 필요하나 중요하지 않은 데이터를 저장할 때 구성하는 방식입니다.

 

또한 디스크가 여러개일 때 디스크의 용량이 각각 다르다면 더 작은쪽에 용량이 맞춰집니다.

왜냐하면 어떤 데이터를 저장할 때 n/1로 나누어 동시에 저장하기 때문에 한쪽 디스크 용량이 작아 데이터가 꽉 찼을 경우 다른 디스크에 용량이 남는다고 해도 나누어 저장할 수 없기 때문입니다.
 


 
RAID1
RAID1은 RAID0의 신뢰성이 떨어지는 것과는 반대로 신뢰성을 보장하기 위한 방식입니다.

데이터를 여러개의 디스크에 동시에 저장하는 것은 같지만 같은 데이터를 복사하여 저장(Mirroring이라고 부름) 합니다.

그렇기 때문에 결함을 허용합니다.

* 결함을 허용한다는 뜻은 한쪽이 고장나도 데이터의 안정성을 보장한다는 뜻입니다.

 

단점으로는 데이터를 복사하여 저장하기 때문에 공간 효율이 2분의 1이라는 점(비용이 높음) 입니다.
 

 RAID5

RAID5의 경우 RAID0처럼 공간 효율성이 좋으면서 RAID1처럼 신뢰성도 어느정도 보장하는 구성입니다.

디스크는 세 개 이상이 필요한데 구성하는 디스크 중 하나는 패리티 비트를 저장하기 위한 용도로 사용합니다.

 

예를 들어 파일1 ,2 ,3 이 있다고 가정했을 때 각각의 파일을 나누어 2진수로 저장한다고 생각해 보세요.

이때 1번 파일의 데이터는 0 과 1입니다.

그러면 디스크3에는 파일1에 대한 패리티비트로 1을 저장하게 됩니다.

*짝수 패리티(Parity) 비트의 경우 어떤 수의 합이 짝수가 되기 위한 비트로 저장하게 합니다.


파일 2의 경우 실제 데이터는 1과 1인데 1번디스크와 3번디스크에 각각 저장합니다.

그러면 패리티 비트는 2번디스크에 저장하게 되고 이미 1 과 1을 더하면 짝수이므로 0을 패리티비트로 저장하게 됩니다.


이런식으로 저장하게 되면 디스크 2가 고장이 난 경우 파일 1의 경우에는 1번 디스크의 0과 3번 디스크의 1을 합하면 1이므로 자연스럽게 2번 디스크의 원래 데이터는 1이었다는 것을 알 수 있습니다.

물론 디스크 두개가 고장날 경우 복구가 불가능 합니다.

따라서 디스크 구성 개수가 늘어날수록 공간효율은 N-1로 좋으나 디스크가 여러개일 수록 동시에 두개가 고장날 확률이 높아지므로 신뢰성이 떨어집니다.


또한 평소에는 패리티비트는 읽지 않고 실제 데이터만 읽다가 디스크에 문제가 생긴 경우에 패리티 비트를 이용하여 복구하게 됩니다.


RAID6(N-2의 공간 효율)

RAID6의 경우 RAID5를 개선한 것으로 패리티 비트를 두 개 사용하는 중복 패리티 알고리즘을 적용합니다.

따라서 디스크는 최소 4개 이상이 필요합니다.

중복 패리티 사용하기 때문에 저장속도가 조금 더 떨어지지만 RAID5보다 신뢰성이 높습니다.  

RAID1을 RAID0으로 묶어 사용하는 경우 또는 RAID0을 RAID1로 묶어 사용하는 경우

RAID는 레벨별 한가지 구성으로만 사용하는 것이 아니고 다음과 같이 RAID1로 구성한 디스크들을 또다시 RAID0으로 구성하여 사용할 수 있습니다.

구성방식 변경에 따라 신뢰성과 공간효율 입출력 속도등을 알맞게 조절할 수 있습니다.

추가 RAID 2, 3, 4도 있지만 단점들을 보완한 방식이 5이므로 잘 사용하지 않습니다.

 


블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,


[Linux] 리눅스 런레벨


리눅스에는 시스템이 실행되는 모드에 따라 7가지 레벨로 나누어 놓았습니다.

이러한 레벨들을 런레벨이라 하며 CentOS, Ununtu 등 약간의 차이는 있을 수 있으니 기본적으로 같은 런레벨 체계를 사용합니다.(0 정지, 1 단일 사용자모드, 6 재시작 은 공통)

 

 
런레벨(CentOS)

센토스 기준 런레벨 테이블입니다.

0, 1, 6은 모든 리눅스 배포판 공통입니다.

 레벨명 설명

0
Power Off
시스템 종료를 의미합니다.


1

Rescue

시스템 복구모드이며 Windows의 안전모드를 생각할 수 있습니다.

기본적으로 관리자 권한을 얻어 수행 됩니다.
 

2

Multi-User
사용하지 않음

3

Multi-User

CLI(텍스트 기반) 다중 사용자 모드 입니다.


4

Multi-User

사용하지 않음


5

Graphical

GUI(그래픽 모드) 다중 사용자 모드 입니다.


6

Reboot

시스템 재시작을 의미합니다.

 


런레벨 확인 방법

다음 명령을 통해 런레벨 파일 확인 가능합니다.

런레벨 파일은 링크 파일이며 실제로는 각각 런레벨명.target 파일을 가리킵니다.

ex)runlevel0.target -> poweroff.target

 

리눅스 프로세스의 개념이해하기

 

 1) 포그라운드 프로세스 ( foreground process)

  리눅스에서는 한번에 수백 개 이상의 프로그램을 동시 수행할 수 있는데, foreground process는 일

  반적으로 쉘 상태에서 명령을 내리면 해단 프로세스가 종료될 때 까지 기다려야 합니다.

 2) 백그라운드 프로세스

  background process는 사용자 입력에 관계 없이 실행됩니다.

 3) 부모 프로세스

  일반적으로 컴퓨터를 실행시킬 때 서버 프로세스를 생성시키는 프로세스. 유닉스 프로그램에서는 프

  로세스 실행 중에 새로운 프로세스를 실행하기 위해 먼저 포크 명령 등 시스템 호출에 의해 새로운

  프로세스, 즉 자식 프로세스를 발생시킬 수 있는데 자식 프로세스를 발생시킨 프로세스가 부모 프로

  세스이다.

 4) 자식 프로세스

  다중 태스크 환경에서 또 다른 프로세스인 부모 프로세스(parent process)가 시동하는 프로세스. 이

  때 시동하는 동작을 흔히 갈래(fork)라고 한다. 부모 프로세스는 자식 프로세스가 실행을 정지할 때까

  지 잠자고 있는 경우가 많다.

 5) 고아 프로세스

  보통은 자식프로세스가 종료된 후에 부모 프로세스가 종료되는게 정상이지만, 부모프로세스가 먼저

  종료되거나 또는 필요에 의해서 먼저 종료되기도 하는데 이때 자식 프로세스만 남는 경우 이 자식 프

  로세스를 고아프로세스라고 부릅니다.

 6) 좀비 프로세스

  실행이 종료되었지만 아직 삭제되지 않은 프로세스를 말합니다

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,


[PHP따라하기]  PHP 연산자 


1. 산술연산자

- 사칙연산 : +, -, *, /

- 모듈러스연산자 : % 나눗셈 나머지 계산

- 대입연산자 : =


예>

<!doctype html>
<html>
 <head>
  <title>Document</title>
  </head>
 <body>
 <h1>국민연금 계산안내</h1>
 <form action = "kukmin.php" method = "get">
  <div>
   <label>기본월소득</label><input type = "number" name = "money_in"><p>
   <label>각종수당(비과세)</label><input type = "number" name = "extra_pay"><p>
   <button>계산결과</button>
  </div>
 </form>
 </body>
</html>

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


<?php
 $money_in = $_GET["money_in"];
 $extra_pay = $_GET["extra_pay"];
 $tot = ($money_in * 0.045);
 $tot2 = $money_in * 0.02995;
 $tot1 = ($money_in + $extra_pay)-($tot+$tot2);
 echo "<h1><b> 귀하가 부담하실 국민연금은 $tot<br>
            건강보험료는 $tot2 , 실수령액은 $tot1 입니다. </b></h1>";
?>


2. 증가감소 연산자


++변수 : 현재 값에 1증가후 연산작업수행

변수++ : 연산작업 수행 후 현재 변수값 1증가

--변수 : 현재 값에 1감소 후 연산작업수행

변수-- : 연산작업 수행 후 현재 변수값 1감소


3. 할당연산자


+= : 기존변수값에 특정값을 더한 후 결과를 기존변수에 다시 할당

$a+= 3  // $a = $a+3;

-= : 기존변수에서 특정값을 가감한 후 결과를 기존변수에 다시 할당.

$a-= 5  //$a = $a + 5;

*= : 기존변수에 특정값을 곱한 결과를 기존변수에 다시 재할당.

/= : 기존변수의 값을 특정값으로 나눈 결과를 다시 기존변수에 재할당

 

4. 관계연산자


프로그램의 논리적 흐름에 영향을 미치는 연산자

 

종류 : >, <, >=, <=, ==, !=

참이면 1, 거짓이면 0

예> 5>3 -> 참이므로 결과값은 1

 

5. 논리연산자

2개 이상의 관계식을 결합해야 할 경우 사용.

 

&&(and) : 관계1식과 관계2식 모두 참이어야만 결과가 참이 되는 연산자.

||(or) : 관계1식과 관계2식 둘중 어느 하나만 참이면 결과가 참이 되는 연산자.

!(not) : 현재식을 부정하는 연산자 (참 -> 거짓으로 값 변경)

출처: 쑥이

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,


[php 프로그램]) GET, POST방식  


1. 폼으로 부터 넘어오는 값을 저장하기 위한 변수

 

형식은 3가지.

- $변수명  // 보안에 취약하다.

- $_GET["변수명"](POST방식인 경우 $_POST["변수명"] // HTML에서 썼던 변수명을 적어주면 된다.

- $HTTP_GET_VARS["변수명"](POST인 경우 GET대신 POST)

 

위의 2번째 방식을 가장 많이 사용함.

 

예> 어느 쇼핑몰에 회원가입을 작성한다.

     하지만 나만 접속해서 하는게 아니라 다른 사람들도 작성을 할것이다.

     회원가입 폼은 같지만 입력하는 것들은 모두 다를 것이다. (주소, 전화번호 등등..)

     "가입완료"를 누르면 그 데이터들이 서버에 처리해 달라고 요청을 한다. request라고 함.

      이 요청을 하는것이 2가지 방식이 있는데 post와 get으로 나뉜다.

* POST방식

- 입력한 데이터를 본문안에 포함하여 전송.

- 스트림형태로 전송되므로 입력 data의 개수나 크기에 제한이 없음.

- 복잡한 형태의 자료를 전달할때 유용

- 입력한 데이터가 url상에 보이지 않기 때문에 보안이 우수하다.


<form action = "sample.php" method = "post">


* GET방식

- 입력데이터를 URL정보에 붙여서 전송. 그래서 보안이 취약.

- 데이터 길이는 256바이트를 넘을수 없음.

- 전송속도가 POST방식보다 빠르다. 전송해야할 데이터가 적을때 이용.


<form action = "sample.php" method = "get">


예> EXam04.html

<!doctype html>
<html>
 <head>
  <title>로그인화면</title>
 </head>
 <body>
 <form action = "01_req.php" method = "get">  // get방식으로 보낼 php파일
  아이디<input type = "text" name = "id" /> <p> // 아이디 데이터는 id라는 저장소에 담김.
  비밀번호<input type = "password" name = "pwd" /> <p> // 비밀번호 데이터는 pwd에 담김.
  <input type = "submit" value = "로그인">
 </form>
 </body>
</html>

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

01_req.php파일


<?php
 echo $_GET["id"]."님 환영합니다."
?>

또는,

<?php

 $id = $_GET["id"];
 echo "$id 님 환영합니다."
?>

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,


[SQL강좌] SELECT DISTINCT 구문 

 

SQL 구문에서 중복된 값을 배제하고 고유의 값을 가져오고 싶을 경우 Distinct 를 사용합니다. 
이와 비슷한 의미로 Group by 구문이 있는데 간단하게
예제 구문만 비교하고 추후 포스팅에서 설명하기로 하겠습니다. 

 
데이터베이스에 데이터를 저장하다 보면 중복되는 값이 종종 들어갑니다.
예를들어 회원의 정보를 입력받고 저장되는 구문을 프로그래밍 할 경우
이름의 중복이 있을수도 있고, 나이의 중복이 있을수도 있습니다.
그외 여러가지 경우가 있는데 그럴때 중복된 데이터를 배제하고 데이터를 가져오고 싶을경우

select DISTINCT name from member;

위 처럼 데이터베이스에 명령을 하면 됩니다.

위의 명령을 아래의 "member" 테이블에 적용시키면

중복된 이철수, 김영희를 제외하면서 한명으로 인식하고 출력됩니다.

 

위에서 group by 에 관해 잠깐 설명했었는데 group by 의 경우

select name from member group by name asc;

select name from member group by name desc;

group 말 그대로 그룹을 지어라는 의미입니다. 그래서 그룹끼리 묶이게 되는 것이죠.

그리고 asc, desc (내림차순, 오름차순) 는 정렬을 어떻게 할지에 대한 구문입니다.

이 부분도 추후 더 상세히 포스팅하겠습니다.

어쨋든 Distinct는 중복을 제거하고 고유한 값만 가져오는 함수이며,

Group by 는 그룹을 지어서 가져오는 함수 입니다.

우선 여기까지만 설명하고 추후 Group by 포스팅에서 더 상세히 설명하겠습니다.

 



 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

 

 변수, 상수, 전역변수, 지역변수, 가변변수

​​
변수 : 변하는 값. 값을 저장하기 위한 메모리공간을 확보.

상수 : 항상 고정되어 있는 값.(변하지 않는값)


1. 변수 생성 규칙

- $를 꼭 붙임.

- 변수명을 만들때는 문자, 수자, 밑줄(_)로 정한다. 식별자의 첫글자는 반드시 영문자 또는 밑줄로 시작.

- 특수문자와 공백은 사용불가.

- 올바른 식별자 예) age, sum_age, num1 등등....

- 잘못된 식별자 예) 1%age, sum-age 등등...

 

형식

$변수명 = 식별자;

예) $age = 10;

     $b = 3.14;

     $c = "성춘향과 이몽룡";

 

여기서 신기한것은 따로 형식을 지정하지 않아도 된다는 점

int, string, float등등.. 변수명만 써놓고 숫자만 넣으면 알아서 형식이 정해진다.

 

2. 상수생성

형식

define(상수명, 값);


예)

<?php

   define("strawberry","딸기는 정말 상큼하고 맛있어~");

   echo "딸기는?".strawberry;

?>

 

<!doctype html>
<html>
 <head>
  <title>Document</title>
 </head>
 <body>
 <?php
  define("strawberry","딸기는 정말 상큼하고 맛있어~");
  $irum = "홍길동";
  $prv_1 = 8.5;
  $prv_2 = 9.75;
  $tot = $prv_1 + $prv_2;
  echo strawberry. "난 딸기가 제일좋아<p>";
  echo "$irum 님 이번달 구매지수는 $tot 입니다.";
 ?>
 </body>
</html>


echo "$irum 님 이번달 구매지수는 $tot 입니다.";

이 문구에서 $irum + "님 이번달 구매지수는 " + $tot  이런식으로 쓰지 않는다..


쭉 붙여서 써도 상관없다. 단지 띄어쓰기만 잘해주면 된다.

명심하자.. 띄어씌기!!!

 

 전역변수

- 문서 전체로 사용될수 있다. (global변수)

- 함수안에서도 사용하려면 global쓰면된다.

 

지역변수

- 한지역에서만 사용가능. (local변수)

- 함수안에서 사용된 벼누는 함수가 끝나면 삭제됨.

 

가변변수

- 유동변수라고 함. 변수의 값을 변수명으로 가져와 사용한다.

형식

$$변수명 = 값;

 

예>

<?php

$a = "red";

echo "<font color = $a>안녕하세요";

$b = "a";  // b변수에 a의 변수가 대입된다. 즉 red가 대입된다.

$$b = "gold"; // b변수에 골드값이 대입된다. 즉 골드로 바뀐다.

// 한 변수에 여러가지 값을 대입할때 가변변수를 사용한다.

echo "<font color=$a>즐거운 쇼핑 되십시오.";

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

 SQL 의 SELECT 구문 예제 연습

 

SELECT 구문은 데이터베이스의 내용을 선택하는데 사용합니다. 
 

select 구문은 기본적으로 두가지 방식으로 데이터를 선택할 수 있습니다.

 
첫번째 예시

SELECT * FROM table_name;

위 예시구문은 선택된 테이블의 모든 값을 불러오는 구문이고

두번째 예시

SELECT column_name,column_name2 FROM table_name;

위 예시구문은 선택된 테이블중에서 column_name,column_name2 의 값만 불러오는 구문입니다.

테이블에 데이터가 많을때 데이터의 로딩이라던지 속도를 높이기 위해 두번째 예시구문을 많이 사용합니다.

첫번째 구문같은 경우는 테이블의 내용이 그다지 많지않고 속도에 크게 영향을 끼치지 않을경우 사용합니다.

 

개인적으로 SQL 구문은 두번째 구문을 사용하시길 추천드리고 싶지만 프로그램 코딩하다보면

칼럼의 내용을 일일이 다 적기가 불편할 경우도 많이 있습니다.

적절히 두 구문을 섞어가며 사용하시길 바랍니다.

 "member" 라는 테이블에 값이 들어있다고 가정해봅시다

select user_id, name, age from member;

 위 SQL 구문의 내용은 이미 짐작하시겠지만 member 라는 테이블에서 user_id, name, age 값만 불러옵니다.

 select * from member;

 위 SQL 구문은 member 테이블에서 모든 칼럼의 내용을 불러들입니다.

 오늘은 간단하게 SELECT 여기 까지만 정리하고 다음 포스팅에서는 SELECT DISTINCT 구문 관련해서 알아보겠습니다.

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,