Programming Language 105

[Database] MySQL. SQL 내장함수

SQL 내에서는 마치 엑셀처럼 여러 함수를 사용할 수 있는데 실제 사용법도 엑셀과 유사하다. - 산술 산술연산 +-*/ mod(값1, 값2) = 값1을 값2로 나눈 나머지 round(값1, 값2) = 값2의 소수자리수까지만 표시. 음수의 경우 해당 자리에서 반올림 format(값, 소수자리수): 천단위 구분기호 사용 celling(값, 자리수): 올림 floor(값, 자리수): 버림 sqrt(값) / power(값1, 값2): 루트/제곱 rand(): 0~1 사이의 난수 발생 abs(값): 절대값 - 문자 concat(문자, 문자): 문자열 연결 length(숫자): 숫자의 길이 length(문자): 문자의 길이(한글은 한글자에 3, 영문 알파벳은 1. 한글길이에는 char_length 사용) repla..

[Database] MySQL. 데이터 수정하기

데이터 수정 뿐만 아니라 테이블의 틀도 수정해본다. 1. 데이터 수정 성실한 학생인 박군이 싱가포르로 이민을 간다. 주소를 바꿔주자. 명령문 쪼개기; update = 데이터를 업데이트한다 student = student 테이블에 있는 데이터 중 set addr = 'Singapore' = addr을 싱가포르로 where name = 'Park' = name 값으로 'Park'을 갖는 항목의 같은 방법으로 응용도 가능하다. 영어과목에서 학생들의 단체 컨닝이 파악되었다. 재시험에 앞서 모두를 0점 처리하여 강한 선례를 만들어보자. 정의의 철퇴가 내려진걸 확인할 수 있다. 2. 테이블 수정 이제 테이블을 수정해보자. 2-1) 테이블 필드 추가 테이블에 생년월일 필드를 추가로 넣어본다. alter table [..

[Database] MySQL. 데이터 찾기

student 테이블에 한땀한땀 데이터를 넣었으니 이제 조건을 주고 꺼내보자. 먼저, 점수가 90 이상인 우등생들을 찾아보면 어떨까. 명령문을 뜯어보자면, select = 선택한다 * = 모든 정보를 from student = student 테이블에서 where score>=90 = score가 90이상인 값을 갖는 항목을. 이 때 *를 써서 모든 정보를 뽑아냈지만, 일부만 조회하는 것도 가능하다. num, name, score만 나오도록 입력했다. 재밌는건 명령문에 마치 엑셀 함수처럼 count, avg, round, if, max, min, and, or 등을 사용할 수 있다는 점이다. 이름에 특정 캐릭터가 들어가는 친구들을 찾고 싶다면 like문과 %를 사용하면 된다. 예시는 e의 앞뒤로 %를 뒀기..

[Database] MySQL. 기본 DB 생성, 연습용 데이터 넣어보기

MySQL 인스톨을 마치고 MySQL Command Line Client를 실행한 후 인스톨 시 설정한 패스워드를 입력하면 커멘드라인 사용이 가능하다. show databases; 를 입력하면 저장된 데이터베이스들을 확인 가능하다. 캡쳐된 이미지의 db들은 인스톨 패키지에 들어있는 기본 db들이다. 학습을 위해 dbPractice라는 db를 생성하였다. show databases로도 확인 가능하다. use dbpractice;를 입력하여 경로를 잡고, student라는 테이블을 생성해줬다. 필드는 학번, 이름, 과목, 주소, 점수이다. 학번은 1에서부터 자동증가, 이름과 점수는 null일 수 없음, 기본키는 학번으로 설정해줬다. 설정사항은 desc student; 명령어로 확인 가능하다. DB도, 테이블..

[Database] MySQL. DB를 다룰 때의 기본 상식

드디어 DB를 다뤄본다. DBMS로는 MySql 커뮤니티 에디션을 인스톨하여 사용했다. 이런 편리한 워크벤치도 있지만 나중에 다뤄보려고한다. 우선 cmd를 사용해서 해보기로. 워크벤치 캡쳐화면에서도 확인 가능한 필드의 제약조건들은 다음과 같다; NN(not null): 데이터 값으로 null이 되지 않도록 막아줌 UQ(unique): 값이 중복될 수 없음. 예를 들어 주민등록번호, 학번, 온라인 계정의 아이디 등 고유의 값을 가져야하는 것에 적용 AI(auto increment): 자동증가 PK(primary key): 기본키. 중복이 되지 않으며 null값도 허용이 안된다. B(binary): 2진수 UN(unsigned): 항상 값이 0과 같거나 크게 만듦 ZF(zero fill): 숫자 앞을 0으로..

[Java] 연습과제 - 음악플레이리스트 구성하기

CRUD 즉, create, read, update, delete 기능이 들어가도록 자유롭게 코딩을 해보라는 것이 과제였다. 그간 여러번 완료한 연습과제의 기틀과 같기에 이번엔 좀 더 기믹을 추가하고 싶은 욕심이 생겼다. 이번에 몇가지 시도해본 것은; - 검색 메소드 내에서 또다시 세부 검색 방법을 선택 가능 - AI음악추천(사실은 랜덤이다)을 선택하면 콘솔창에 마치 로딩이 되는 것 같은 페이크 출력 - run과 동시에 미리 작성된 음악 정보들이 배열에 저장됨 - 실제 음악 재생

[Java] 연습과제 - 은행계좌프로그램 구성하기

오늘 과제도 재밌어서 올려본다. 조건은 아래와 같다; -값을 입력받을 때 scanner는 사용하지 말 것. -기본출력문은 1.계좌생성 2.계좌목록 3.예금 4.출금 5.종료 -계좌번호는 자동발행되게 할 것. Bank-0001, Bank-0002 식으로. -계좌는 여러개 생성 가능 -계좌를 선택하여 입/출금 가능 -계좌 잔액 부족 시 출금이 안되게 할 것 그림을 그려보자. 그간의 좋은 친구였던 scanner를 사용할 수 없으니 오늘 배운 BufferReader를 사용해야할 것이고, 계좌, 즉 account 클래스의 필드 중 하나인 계좌번호는 글자와 숫자 조합이니 string으로 선언해줘야겠으나 생성할 때마다 숫자가 하나씩 업되어야하기에 DecimalFormat을 사용해야할 것이다. 이외엔 어려울건 없다. ..

[Java] Stream 간단 활용

Stream. 자료의 대상과 관계없이 동일한 연산을 수행할 수 있도록 해주는 반복자 라고 배웠는데 곧바로 머리에 들어오지는 않고, 사용하다보니 깨닫게된 정의는; 컬렉션에 저장되어있는 요소들을 하나씩 람다식으로 처리할 수 있도록 해주는 반복자 가 아닐까 싶다. 내 얕은 활용경험으로 도출된 것이니 이보다 더 포괄적인 개념일수도 있어서 구글링 해보니 대략 내 생각이 맞는 것 같다. Stream은 한번 생성하면 재사용이 불가능하다. 다시 말하자면, 스트림을 사용하여 연산을 수행하면 스트림이 소모된다는 것. 또한 기존 자료를 변경하지 않기에 일회성으로 자료를 가져다가 처리해 사용하고 휘발되게 하는 식의 쓰임에 유용하다. Stream 코드로 사용되는 연산자에 대한 세세한 설명보단, 우선 쓰임을 먼저 보자. 위는 1..

[Java] 람다식 Rambda Expressions

람다식. 자바스크립트 같은 스크립트 언어에서 주로 쓰이는 방식이라고 한다. 자바 1.8부터는 람다식의 기능들을 지원하고 있어 잘 활용하면 개발자의 시간과 하드웨어 성능을 아낄 수 있다. 람다식이란 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식이다. 외부자료가 부수영향(side effect)를 주지 않도록 구현되며, 매개변수가 하나인 경우 자료형과 괄호를 생략할 수 있어 이론상으론 편리하게 활용할 수 있다. 예를 들어... 위와 같이 구성된 number 리스트를 출력한다면.. 1번처럼 기본 for문이나 2번 같은 향상된 for문을 사용하여 출력할 수 있을 것이다. 반면 람다식으론 아래와 같이 가능하다. key와 value를 가지는 map을 다룬다면 어떻게 하면 좋을까? 직관적이게도 앞서 작성한 문에서..

[Java] 연습과제 - 학생성적관리프로그램 구성하기

배우는 것도 재밌지만 역시 배운걸 활용하고, 제대로 돌아가게 해낼 때의 재미가 최고인 것 같다. 지난주 과제 중 하나였던 학생성적관리 프로그램이다. - map을 활용할 것 - 학생 한명의 성적을 관리하는 프로그램이 되어야함 - 기본 출력문은 아래와 같을 것; >>Menu 1. 성적추가 2. 성적조회(모든 과목 성적과 총점, 평균 출력) 3. 검색된 과목의 성적조회 4. 성적 수정 5. 종료 Map을 배우고나서 활용하는 첫 과제였기에 이것도 굉장히 재밌게 코딩했다. 라인 100줄 이내로 간단하게 짤 수 있을 것 같아서 단일 클래스로 진행했다. 결과적으론 110줄이 넘었지만. 메인 부분이다. 지난번 올린 메뉴 프로그래밍의 메인 클래스와 별다를게 없고, 그저 HashMap을 사용한다는 것 정도가 새롭다. 주석..