-- DML에 대해 알아보자.
-- INSERT, SELECT, UPDATE, DELETE
-- drop database school;
-- 혹시 모를 사고예방을 위해 drop 같은 민감한 명령어는 주석처리
create database school;
use school;
create table student(
id int primary key,
name varchar(50),
age int
);
-- DML의 사용
-- 데이터 추가
insert into student(id, name, age) values(1, '김철수', 20);
insert into student(id, name, age) values(2, '김영희', 22);
-- 데이터 조회
select id, name, age from student;
select * from student;
select name from student;
-- 데이터 수정
update student set age = 21;
-- 데이터 수정시에는 가능한 조건절을 명시해서 사용하자.
update student set age = 25 where id = 1;
-- 데이터 삭제
delete from student;
-- 데이터 삭제시에도 조건절 명시
delete from student where id = 2;
delete from student where name = '김영희'
student 테이블을 생성한 뒤 구조 확인2건의 자료를 입력한 뒤 select 명령어를 통해 조회했다.
-- DDL에 대해 알아보자.
-- db의 구조를 만드는 명령어다.
-- create, alter, drop
-- school 데이터베이스 생성
create database school;
-- 해당 db를 사용하겠다 use
use school;
-- 테이블 생성 create
-- name char(50) 고정길이의 공간을 배분한다. 문자열 50개
-- name varchar(50) 가변길이의 공간을 배분한다. 최대 50개
create table student(
id int primary key,
name varchar(50),
age int
);
-- 테이블 구조 확인 명령어 desc
desc student;
-- 테이블 구조 수정 alter
-- 추가로 칼럼을 넣고 싶을때
-- 칼럼 추가
alter table student add column phone varchar(15);
-- 칼럼 삭제
alter table student drop column phone;
-- 테이블
drop table student;
student 테이블 구조 확인(desc)student 테이블에 phone 칼럼을 추가한 모습
예제2)
-- 직접 데이터 베이스 생성
create database bookstore;
use bookstore;
-- 테이블 생성
create table book(
id int primary key,
title varchar(20),
author varchar(20),
stock int
);
desc book;
-- 칼럼 추가
alter table book add column rating int;
-- 칼럼 삭제
alter table book drop column rating;
-- 테이블 삭제
drop table book;
drop database bookstore;
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
⭐박싱 Boxing 기본 > 래퍼 기본 데이터를 래퍼 클래스 객체로 변환하는 과정
⭐언박싱 Unboxing 래퍼 > 기본 래퍼 클래스 객체를 기본 타입 데이터로 변환하는 과정
이들은 많이 사용되기에 자바 5부터 간소화 기능이 마련돼있다. 자동박싱 Auto-boxing 자동언박싱 Auto-unboxing
래퍼클래스는 컬렉션 프레임워크에서 많이 사용된다. 컬렉션에는 객체만 저장할 수 있기 때문이다. 이에 래퍼클래스 사용이 강제된다.
주의사항 래퍼클래스는 객체이므로 기본타입보다 메모리 사용량이 많다. 가능하다면 기본 타입 사용이 권장된다.
또한 래퍼클래스를 활용할때 NumberFormatException이 발생할 수 있다. 예외처리코드를 작성해주는 것이 좋다.
예문)
박싱, 언박싱, 자동박싱, 자동언박싱 방법 연습
package _wrapper;
public class WrapperTest1 {
public static void main(String[] args) {
//박싱
int num = 10;
Integer wrapperedNum = Integer.valueOf(num);
System.out.println(wrapperedNum); // 10
System.out.println(wrapperedNum.toString()); // toString 자동호출
//언박싱
Integer wrapperdNum2 = Integer.valueOf(30);
int num2 = wrapperdNum2.intValue();
System.out.println(num2);
//자동박싱 - 기본 데이터 값이 래퍼 클래스 객체에 바로 들어간다.
Integer autoBoxed = 20;
//자동언박싱
int autoUnboxed = autoBoxed;
}//main
}//class
package _wrapper;
/**
5.12
래퍼 클래스의 활용
String => 기본데이터
래퍼클래스를 활용할때 NumberFormatException이 발생할 수 있다.
예외처리코드를 작성해주는 것이 좋다.
*/
public class WrapperTest3 {
public static void main(String[] args) {
//String => 기본데이터
String strNum = "123";
String strDouble = "45.67";
String strBool = "true";
String badStr = "a123";
int num = Integer.parseInt(strNum);
System.out.println(num); //123
double dNum = Double.parseDouble(strDouble);
System.out.println(dNum); //45.67
boolean bool = Boolean.parseBoolean(strBool);
System.out.println(bool); //true
//a123 => int 변환
try {
int intNum = Integer.parseInt(badStr);
} catch (NumberFormatException e) {
System.out.println(badStr + "변수를 정수값으로 변경할 수 없습니다.");
}
//가능하다면 예외처리코드를 작성해주는 것이 좋다.
}//main
}//class
예문4)
래퍼클래스를 활용해 String 클래스와 여러 자료형 사이 형변환을 해봤다.
package _wrapper;
/**
5.12
기본데이터 타입을 문자열로 바꿔본다.
int double boolean => String
*/
public class WrapperTest4 {
public static void main(String[] args) {
//가장 쉬운 방법
System.out.println(10 + "asdf");
String str1 = 10 + "asdf";
System.out.println(str1);
//String 클래스의 valueOf()
int value = 5000;
String strValue = String.valueOf(value);
System.out.println("int => String:"+strValue); //5000
Float value2 = 1.234F; //접미사
Long value3 = 1000L;
String strValue2 = String.valueOf(value2);
System.out.println("Float => String:"+strValue2); //1.234
String strValue3 = String.valueOf(value3);
System.out.println("Long => String:"+strValue3); //1000
}//main
}//class
예문5)
컬렉션 프레임워크에서 래퍼클래스 사용해보기
package _wrapper;
import java.util.ArrayList;
/**
5.12
컬렉션 프레임워크에서
래퍼 클래스 사용해보기
래퍼클래스는 컬렉션 프레임워크에서 많이 사용된다.
컬렉션에는 객체만 저장할 수 있다.
래퍼클래스 사용이 강제된다.
Integer Double Boolean
*/
public class WrapperTest5 {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>(); //정수값만
numbers.add(Integer.valueOf(10));
numbers.add(20); //자동박싱 (int > Integer)
int sum = numbers.get(0) + numbers.get(1); //자동언박싱 (Integer > int)
System.out.println("합:" + sum);
}//main
}//class