http://www.mind-mining.co.kr/2016/05/using-r-mac.html

MySQL 이나 오라클 DB의 쿼리 질의문에서는 대소문자 구별을 하지 않는다.


SELECT, ALTER, INSERT 등과 같은 질의문 뿐만 아니라 칼럼명, 테이블 이름도 대소문자 구별하지 않는다.


하지만 편의상 질의문이라는 것을 구별하기 위해 대문자로 쓴다.






모든 테이블 목록 보기

SHOW TABLES; 



테이블 구조 확인

DESC 테이블명;






CREATE

테이블명으로 테이블 생성.

CREATE TABLE 테이블명 (

칼럼1 VARCHAR(36) PRIMARY KEY NOT NULL,

칼럼2 INT AUTO_INCREMENT,

칼럼3 데이터타입(데이터크기) 제약조건,

칼럼4 데이터타입(데이터크기),

칼럼5 데이터타입,

...

CONSTRAINT 제약조건명  FOREIGN KEY (칼럼1) REFERENCES 다른테이블 (칼럼명)

);


특정 칼럼의 데이터를 가져오기.

SELECT 칼럼명, 칼럼명, 칼럼명 ... FROM 테이블명;


테이블명의 모든 데이터를 num개까지만 가져오기.

SELECT * FROM 테이블명 LIMIT num;






SELECT

테이블명의 모든 데이터를 가져오기.

SELECT * FROM 테이블명;


특정 칼럼의 데이터를 가져오기.

SELECT 칼럼명, 칼럼명, 칼럼명 ... FROM 테이블명;


테이블명의 모든 데이터를 num개까지만 가져오기.

SELECT * FROM 테이블명 LIMIT num;






INSERT

데이터 입력

INSERT INTO 테이블명 VALUES (데이터, 데이터, 데이터, ...);

특정 칼럼에만 데이터 입력

INSERT INTO 테이블명(칼럼1, 칼럼2, ... VALUES(데이터1, 데이터2, ...);



'CODING > MYSQL' 카테고리의 다른 글

[MySQL] sql 쿼리 파일 읽어오기  (0) 2018.11.15

ArrayList<Class> array = new ArrayList<Class>(); 형태의 ArrayList 가 있다고 할때, for문으로 객체를 넣을 때의 주의사항.



Mysql 에서 회원정보를 가져와 리스트를 만드는 과정에서 겪은 시행착오를 적습니다.

의도는 같은 분류에 속한 사람들을 가져와 ArrayList 에 추가해준 뒤 for문으로 뿌려주는 거 였습니다.




아래와 같이 Sample 이라는 클래스가 있고 이안에 num 이라는 변수가 있다고 하자.

Class Sample{

int num;

게터;    (모두 치기 귀찮아 생략합니다. getter 메소드)

세터;    (모두 치기 귀찮아 생략합니다. setter 메소드)

}


이 Sample 클래스의 객체를 for문을 통해 ArrayList에 아래와 같이 넣어보자.


Sample sample = new Sample();


ArrayList<Sample> array = new ArrayList<Sample>();


for(int i = 0 ; i < array.size() ; i++){

sample.setNum(i);

array.add(sample);

}


for(int i = 0 ; i < array.size() ; i++){

System.out.println(array.get(i).getNum());

}


위와 같은 형태로 for문으로 sample 객체에 i 값을 넣어주고 그를 array에 추가해주었을때,
내가 원하는 출력값은 0, 1, 2, 3, 4, 5, ... 와 같이 각기 다른 값이었다.

하지만 이렇게 나오지 않고, 이 경우에는 마지막 숫자가 똑같이 출력된다.
만약 array의 크기가 10이라면 9, 9, 9, ... 9 이렇게 9가 10번 출력된다.
이는 마지막에 sample 객체의 num 값을 9로 set 해주었기 때문이며,
Array에 추가된 sample객체는 모두 하나의 객체이기 때문이다.


추가적으로 설명하자면, 변수에는 기본형 변수와 참조형변수가 있다.
기본형 변수는 우리가 흔히 아는 char, int, long, double 과 같은 변수들이다.
이 변수들은 스택에 값을 직접 저장한다.

이와 다르게 참조형 변수는 직접 값을 저장하지 않는다.
대표적인 예로는 배열이나 String, 클래스 객체 등이 있다.
참조형 변수는 스택에 본래 값들이 있는 힙의 주소값이 들어가 있다. 즉, 값을 직접 저장하지 않는다.

위의 경우에는 sample은 모두 하나의 힙의 주소값을 갖고 있는 하나의 객체이다.
ArrayList에 넣었다 하더라도 들어간 객체들은 모두 하나의 주소값을 가지고 하나의 힙을 참조한다.
그렇기에 매번 setter로 num 값을 넣어 줄때마다 매번 sample 객체의 num값은 바뀐 것이며, 최종적으로 마지막 값이 들어가 모두 같은 값이 출력된 것이다. 



이럴 때, 0, 1, 2, 3, 4, 5, ... 와 같은 값을 얻으려면, 내가 한 방법은 이렇다

ArrayList<Sample> array = new ArrayList<Sample>();


for(int i = 0 ; i < array.size() ; i++){

Sample sample = new Sample();

sample.setNum(i);

array.add(sample);

}


for 문안에서 객체를 생성해주었다.
이렇게 했을 때는 원하는 결과를 얻을 수 있었다.
이것이 맞는 방법인지는 모르겠으나, 일단은 이렇게 해결했다.


어떻게 보면 너무나 당연한 굉장히 초보적인 실수를 한 것 같아 ashamed 하다




'CODING > JAVA + Spring + JSP' 카테고리의 다른 글

Ubuntu 에 Java 19 설치  (0) 2023.12.20
[JAVA] Array를 List로, List를 Array로  (0) 2019.03.05

unsigned에 대하여.



일반적으로 컴퓨터는 양의 계산만을 한다.

이에 따라 음의 수를 표현하거나 할때는 보수법이나 절대부호법 등을 사용한다.

또한, 각 자료형 마다 표현할 수 있는 수의 범위가 다르다.



예를 들면, byte 형은 1byte 의 크기를 갖느다.

1 byte = 8 bits 임으로 byte 형의 자료가 가질 수 있는 숫자의 수는 2의 8승인 256가지이다.



여기서 만약 양수로만 표현한다면 byte 형은 0 ~ 255 까지의 수를 가질 수 있다.

만약 음수까지 같이 갖는 다면 -128 ~ 127 까지의 수를 가질 수 있다.



두가지 경우 모두 256개의 숫자임은 변하지 않는다.




이런 경우에 만약 누군가는 음의 부호를 사용하고 싶지 않을때, 사용 할 수 있는 것이 unsigned 이다.(나이 같은 값을 저장한다면 음수는 필요없으니까요~!)


'Unsigned 의 의미는 부호를 구별하지 않겠다.' 즉, 양수만을 사용하겠다는 의미이다.





하지만 가장 중요한 것은 JAVA 에서는 unsigned 를 사용하지 않는는 것이다.



추가적으로,

JAVA 8 부터 Integer 와 Long 클래스의 메소드로 unsigned 를 사용 할 수 있다는 것 같지만,

여전히 C 처럼 (unsigned) char a = 128; 과 같은 선언은 불가하다.


 


MYSQL이랑 아주 조오그으음 다른 부분이 있음.



유저 생성

CREATE USER 유저명 ; 


유저 접속

CONN 유저명/비밀번호;


모든 테이블 조회

SELECT * FROM TAB;


아래는 MySQL

# SHOW TABLES;


테이블 구조 확인

DESC 테이블명;


테이블 생성

CREATE TABLE 테이블명(

칼럼이름 데이터형 조건,

칼럼이름 데이터형 조건,

칼럼이름 데이터형 조건,

... ,
조건
);

아래는 예시


CREATE TABLE EMPLOYEE (

  EMPNO  NUMBER  NOT NULL,

  EMPNAME  CHAR(10)  UNIQUE,

  TITLE  CHAR(10)  DEFAULT '사원',

  MANAGER  NUMBER,

  SALARY   NUMBER  CHECK (SALARY < 6000000),

  DNO  NUMBER   DEFAULT CHECK (DNO IN (1,2,3,4)),

  PRIMARY KEY(EMPNO),

  FOREIGN KEY(MANAGER) REFERENCES EMPLOYEE(EMPNO),

  FOREIGN KEY(DNO) REFERENCES DEPARTMENT(DEPTNO)

);



고로 대표적인 제약 조건에는

NOT NULL      : NULL값을 허용하지 않음 

UNIQUE         : 중복된 값을 허용하지 않음

CHECK           : 값을 확인한 후 조건에 해당되면 입력됨.

DEFAULT        : 입력하지 않았을 때의 기본값.

PRIMARY KEY  : 기본키 설정.

FOREIGN KEY  : 외래키 설정.

이 있다.






데이터 입력

INSERT INTO 테이블명 VALUES(???, ???, ???, ???, ....);

INSERT INTO 테이블명(칼럼명, 칼럼명, ...) VALUES(???, ???, ...);



오늘은 여기까지~~



PROGRESSIVE WEB APP 에 대해 처음 듣게 되었다.

직역하면 진보된 웹 어플리케이션? 이정도인가?


알아봐야겠다아.


https://tutorialzine.com/2016/09/everything-you-should-know-about-progressive-web-apps

https://developers.google.com/web/progressive-web-apps/

http://han41858.tistory.com/27



R은 벡터, 데이터 프레임, 행렬과 같은 JAVA나 C에서는 들어본 적 없는 데이터 형태가 있다.



함수 선언에서도 차이가 있다.

일반적으로 함수를 선얼할 때는 



리턴타입 함수명(매개변수){

return ?

}



의 형식이라면


R에서는



함수명 <- function(매개변수){


return ?

}



의 형식이다. 리턴타입에 대한 선언이 없다.



ex <- function( x=numeric(), y=FALSE){

if( y ){

return TRUE;

}else{

return x;

}

}



와 같이 ex함수를 선언했을때

일반적으로 생각했을 때 저 함수를 사용하려면 매개변수를 두개 같이 써줘야 할 것 같지만

ex(x) 와 같이 매개변수를 하나만 넣어줘도 작동하며, 이때는 y=FALSE라고 디폴트 값을 넣어줬기에 y=FALSE로 작동하게 된다.

ex(x,FALSE) 도 가능하며, 이는 위에 적은 ex(x)와 같게 동작하게 된다.

ex(x,TRUE) 도 물론 가능하다.

또한  매개변수로  x를 보내줬는데, 받아올때 x=numeric() 으로 써주어 numeric(숫자) 형태로 받아 올 수 있는 것도 조금 신기하다.




함수 정리.



c( 숫자, 숫자, 숫자...) : 벡터 생성 함수.


x <- 1:5                            : x에 1에서 5까지의 숫자로 벡터 생성해서 대입.


round( 변수, 소숫점자리) : 변수를 소숫점자리 까지 반올림하는 함수.


paste("문자열","문자열","문자열"...) : R에서는 다른 언어와 달리 print 함수를 써도 + 와 같은 연산자로 문자열을 연결 못함. 그래서 paste 와 같은 함수를 사용.


ls() : 선언된 변수들을 확인


rm(list=ls()) : 변수 모두를 삭제.


rm(변수, 변수, 변수 ... ) : 변수 삭제



+ Recent posts