-- db 생성
create database shop;

-- db 선택
use shop;

-- 테이블 생성
create table student
(
     id char(10) primary key not null, -- 학번 (8자리 고정문자, 기본키)
    name varchar(10) not null, -- 이름 (10자리 가변문자)
    dept varchar(20) not null -- 학과 (2자리 가변문자)
);

-- 테이블 삭제
drop table student;

-- 데이터 입력
insert into student(id, name, dept) values('2014071023', '최규식', '스마트산업');
insert into student(id, name, dept) values('2014072008', '박태수', '스마트산업');
insert into student(id, name, dept) values('2014071020', '정상혁', '스마트산업');

-- 데이터 검색
select * from student;

-- 데이터 삭제
delete from student where id='2014071023'; -- 기본키인 id로만 삭제가 가능하며 다른 키로 삭제하려면 별도 설정해줘야 한다.

-- 데이터 수정
update student set dept='임베디드공학' where id='2014071023';
update student set dept='스마트산업' where id='2014071023';


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

-- 상품 테이블 생성
create table goods
(
     g_id char(8) not null primary key, -- 상품코드
    g_name varchar(20) not null, -- 상품명
    maker varchar(20) not null, -- 가격
    price int not null, -- 가격
    color varchar(10) null -- 상품색상
);

-- 상품 입력
insert into goods values('00000001', '갤럭시노트4', '삼성전자', 957000, 'Black');
insert into goods values('00000002', '아이폰6+', '애플', 790000, null);
insert into goods(g_id, g_name, maker, price) values('00000003', 'G3 cat.6', 'LG전자', 924000);
-- 테이블명(칼럼명) 을 써주면 작성된 칼럼에 해당되는 값만 작성해주면 된다. (디폴트값은 모든 값 작성)

-- 상품 검색
select * from goods;

-- 주문 테이블 생성
create table orders
(
     id char(10), -- 학생 학번
    g_id varchar(8) not null, -- 상품코드
    ea int not null, -- 상품개수 (정수)
    totalPrice int not null, -- 총금액 (정수)
    foreign key(id) references student(id), -- 참조키
    foreign key(g_id) references goods(g_id) -- 참조키
);

-- 주문 테이블 삭제
drop table orders;

-- 데이터 입력
insert into orders values('2014071023', '00000001', 2, 1914000);
insert into orders values('2014071020', '00000002', 1, 790000);

-- 데이터 검색
select * from orders;

-- 학생명, 상품번호, 개수, 총액
select s.name, o.g_id, o.ea, o.totalPrice
from student s, orders o
where s.id=o.id;

-- 학생명, 상품명, 개수, 총액
select s.name, g.g_name, o.ea, o.totalPrice
from student s, orders o, goods g
where s.id=o.id
and o.g_id=g.g_id;

-- 정렬 (이름을 가나다 순으로)
select * from student order by name; -- 오름차순 (디폴트값 : asc)
select * from student order by name desc; -- 내림차순

-- 합계
select sum(totalPrice) as 총구매금액 from orders; -- as는 생략가능

-- 평균
select avg(price) as 가격평균 from goods;

-- 최대값
select max(price) as 최대가격 from goods;

-- 최소값
select min(price) as 최소가격 from goods;

-- 개수
select count(g_id) as 상품개수 from goods;

select count(id) as 임베디드학과생 from student where dept='임베디드공학';

select sum(o.ea)
as 갤노트판매량
from orders o, goods g
where g.g_id=o.g_id
and g.g_name='갤럭시노트4';
 
-- db 생성
create database shop;

-- db 선택
use shop;

-- 테이블 생성
create table student
(
     id char(10) primary key not null, -- 학번 (8자리 고정문자, 기본키)
    name varchar(10) not null, -- 이름 (10자리 가변문자)
    dept varchar(20) not null -- 학과 (2자리 가변문자)
);

-- 테이블 삭제
drop table student;

-- 데이터 입력
insert into student(id, name, dept) values('2014071023', '최규식', '스마트산업');
insert into student(id, name, dept) values('2014072008', '박태수', '스마트산업');
insert into student(id, name, dept) values('2014071020', '정상혁', '스마트산업');

-- 데이터 검색
select * from student;

-- 데이터 삭제
delete from student where id='2014071023'; -- 기본키인 id로만 삭제가 가능하며 다른 키로 삭제하려면 별도 설정해줘야 한다.

-- 데이터 수정
update student set dept='임베디드공학' where id='2014071023';
update student set dept='스마트산업' where id='2014071023';


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

-- 주문 테이블 생성
create table orders
(
     id char(10)  not null references student(id), -- student 테이블의 id(학번) 참조
    goods varchar(20) not null, -- 상품명 (20자리 가변문자)
    ea int not null, -- 상품개수 (정수)
    totalPrice int not null -- 총금액 (정수)
);

-- 데이터 입력
insert into orders values('2014071023', '노트', 10, 10000);

-- 데이터 검색
select * from orders;

-- 조인 검색, 학생의 이름, 학생의 학과, 상품명, 상품개수, 총금액
select s.name, s.dept, o.id, o.goods, o.ea, o.totalPrice
from student s, orders o
where s.id = o.id; 
-- (=) select student.name, student.dept, orders.id, orders.goods, orders.ea, orders.totalPrice
-- from student, orders
-- where student.id = orders.id;

-- 표준 SQL 문법에 따른 조인문 (ANSI-SQL)
select s.name, s.dept, o.id, o.goods, o.ea, o.totalPrice
from student s inner join orders o
on s.id = o.id; 

-- 정렬 (이름을 가나다 순으로)
select * from student order by name; -- 오름차순 (디폴트값 : asc)
select * from student order by name desc; -- 내림차순
 import javax.swing.*;

public class Swing01 extends JFrame
{
        Swing01()
        {
               setTitle( "학생관리" ); // 프레임의 제목 설정
                setDefaultCloseOperation( JFrame. EXIT_ON_CLOSE); // 종료버튼 클릭 시 프로그램 종료
               
                // FlowLayout --------------------------------------------------------------------------------------
               
                /*Container contentpane = getContentPane(); // 컨텐트 팬을 알아낸다.
               
               contentpane.setLayout(new FlowLayout()); // FlowLayout은 차례대로 컴포넌트를 배치한다.
               contentpane.add(new JButton("Confirm"));
               contentpane.add(new JButton("Input"));*/
               
                /*setLayout(new FlowLayout(FlowLayout.LEFT, 50, 50)); // 컨테이너를 만들지 않아도 호출/구현이 가능하다...!!! (단 BG 색상 설정은 컨테이너가 필요하다.)
               // FlowLayout 디폴트값은 Center이다...! (Left로 하는게 좋을것)
               
               add(new JButton("Confirm"));
               add(new JButton("Input"));*/
               
                // BorderLayout --------------------------------------------------------------------------------------
               
                /*setLayout(new BorderLayout());
               add(new JButton("Confirm"), BorderLayout.NORTH); // 상하 간격이 유지된다.
               add(new JButton("Input"), BorderLayout.SOUTH); // 상하 간격이 유지된다.
               add(new JButton("Explore"), BorderLayout.WEST); // 좌우 간격이 유지된다.             
               add(new JButton("Attribute"), BorderLayout.EAST); // 좌우 간격이 유지된다.
               add(new JButton("Content"), BorderLayout.CENTER); // 좌우 여백이 있으면 전부 채워진다.*/
               
                // 배치관리자 없는 컨테이너 --------------------------------------------------------------------------------------
               
               setLayout( null); // 레이아웃 적용 안함
               
                JButton button1 = new JButton( "Confirm");
                button1.setLocation(10, 10); // 버튼의 위치 설정 (x좌표, y좌표)
                button1.setSize(150, 50); // 버튼의 크기 설정 (가로, 세로)
               add( button1); // 프레임에 버튼 추가
               
                JButton button2 = new JButton( "Cancel");
                button2.setLocation(180, 10);
                button2.setSize(150, 50);
               add( button2);
               
               setSize(360, 300); // 프레임의 크기 설정 (가로, 세로)
               setVisible( true); // 프레임이 화면에 나타나도록 설정 (true), false로 설정하면 화면에 나타나지 않는다.
        }
        
         public static void main(String [] args)
        {
                new Swing01(); // 인스턴스 생성
        }
}

 

 interface Person
{
         // 말하기
         public void speak();
        
         // 일하기
         public void work();
}

class Student implements Person
{

         @Override
         public void speak()
        {
                System. out.println("말하기" );
        }

         @Override
         public void work()
        {
                System. out.println("일하기" );
        }
        
}

public class Exam03 implements Person
{
         public static void main(String [] args)
        {
                Student choi = new Student ();              
                // choi.speak();
                // choi.work();
               
                Exam03 e03 = new Exam03();
                e03.speak();
                e03.work();
        }

         @Override
         public void speak()
        {
                System. out.println("말하기2" );
        }

         @Override
         public void work()
        {
                System. out.println("일하기2" );
        }
}
 
abstract class Person
{
         private String name ; // 이름
         private int age ; // 나이
        
         public Person()
        {
               
        }
        
         public Person(String n , int a)
        {
                this.name = n ;
                this.age = a ;
        }
        
         public String getName()
        {
                return name ;
        }
        
         public void setName(String name )
        {
                this.name = name ;
        }
        
         public int getAge()
        {
                return age ;
        }
        
         public void setAge(int age)
        {
                this.age = age ;
        }
        
         // 잠자기
         public void sleep()
        {
                System. out.println(this .getName() + "이(가) 잠자기를 시작함.");
        }
        
         // 말하기 (추상메소드 적용)
         public abstract void speek();
}

class Student extends Person
{
         public Student()
        {
               
        }
        
         public Student(String n , int a)
        {
                super(n , a );
        }
        
         // 말하기 (추상메소드 적용)
         @Override
         public void speek()
        {
                System. out.println(this .getName() + "이(가) 말하기를 시작함.");
        }
        
         // 공부하기
         public void study()
        {
                System. out.println(this .getName() + "이(가) 공부를 시작함.");
        }

        
}

class StudentWorker extends Student
{
         public StudentWorker()
        {
               
        }
        
         public StudentWorker(String n , int a)
        {
                super(n , a );
                /*setName(n);
               setAge(a);*/
        }
        
         // 공부하기 @오버라이딩
         @Override
         public void study()
        {
                System. out.println("매우 바쁜 " + this.getName() + "이(가) 공부를 시작함." );
        }
        
         // 일하기
         public void work()
        {
                System. out.println(this .getName() + "이(가) 일하기를 시작함.");
        }
}

public class Exam02
{
         public static void main(String [] agrs)
        {
                // Person의 instance (Setter를 통해 필드값 설정)
                /*Person cgs = new Person();
               cgs.setName("최규식"); // 사람의 이름 설정
               cgs.setAge(20); // 사람의 나이 설정                  
               System.out.println(" cgs의 이름 : " + cgs.getName()); // 사람의 이름 출력
               System.out.println(" cgs의 나이 : " + cgs.getAge() + "세"); // 사람의 나이 출력                  
               cgs.speek(); // 말하기 메소드 실행 */         
               
                // Person의 instance (생성자를 통해 필드값 설정)
                /*Person steve = new Person("Steve Jobs", 60); // 생성자를 통해서 멤버변수 초기화  
               System.out.println(" steve의 이름 : " + steve.getName()); // 사람의 이름 출력
               System.out.println(" steve의 나이 : " + steve.getAge() + "세"); // 사람의 나이 출력
*/            
                // -------------------------------------------------------------------------------------
               
                // Student의 instance (Setter를 통해 필드값 설정)
                Student student_cgs = new Student ();
                student_cgs.setName("학생 최규식" ); // 이름 설정
                student_cgs.setAge(20); // 나이 설정               
                System. out.println("student_cgs의 이름 : " + student_cgs.getName()); // 학생의 이름 출력
                System. out.println("student_cgs의 나이 : " + student_cgs.getAge()); // 학생의 나이 출력
                student_cgs.study(); // 공부하기 메소드 실행
                student_cgs.speek(); // 말하기 메소드 실행
               
                // -------------------------------------------------------------------------------------
               
                // StudentWorker의 instance (Setter를 통해 필드값 설정)
                StudentWorker studentWorker_cgs = new StudentWorker();
                studentWorker_cgs.setName("고학생 최규식" );
                studentWorker_cgs.setAge(22);             
                System. out.println("studentWorker_cgs의 이름 : " + studentWorker_cgs.getName()); // 고학생의 이름 출력
                System. out.println("studentWorker_cgs의 이름 : " + studentWorker_cgs.getAge()); // 고학생의 나이 출력
                studentWorker_cgs.work();
                studentWorker_cgs.study(); // 공부하기 (@오버라이딩) 메소드 실행
               
                // StudentWorker의 instance (생성자를 통해 필드값 설정)
                StudentWorker studentWorker_steve = new StudentWorker("고학생 스티브잡스" , 25);        // 생성자를 통해서 멤버변수 초기화     
                System. out.println("studentWorker_steve의 이름 : " + studentWorker_steve.getName()); // 고학생의 이름 출력
                System. out.println("studentWorker_steve의 이름 : " + studentWorker_steve.getAge()); // 고학생의 나이 출력
                studentWorker_steve.work();
               
        }
}

 

 class Person

{
         private String name ; // 이름
         private int age ; // 나이
        
         // 이름을 초기화하는 생성자
         public Person(String name )
        {
                this.name = name ;
        }
        
         // 이름, 나이를 모두 초기화하는 생성자 -> 생성자 오버로딩
         public Person(String name , int age)
        {
                this.name = name ;
                this.age = age ;
        }
        
         // 이름을 구한다.
         public String getName()
        {
                return this .name ;
        }
        
         // 이름을 변경한다.
         public void setName(String name )
        {
                this.name = name ;
        }
        
         // 나이를 구한다.
         public int getAge()
        {
                return this .age ;
        }
               
         // 나이를 변경한다.
         public void setAge(int age)
        {
                this.age = age ;
        }
}

public class Exam01
{
        
         // static은 메모리에 미리 준비해서 사용 가능하도록 한다.
         public static void main(String args[])
        {
                // 최규식 생성
                Person choi; // 레퍼런스 선언
                choi = new Person( "최규식", 20); // 인스턴스 생성
                // (=) Person choi = new Person();

                // choi.age = 20;
               
                System. out.println(choi .getName());
                System. out.println(choi .getAge());
               
                // 2015년이 되어 MIT 공대로 편입
                choi.setName( "Choi Kyu-Sik");
                choi.setAge(21);
               
                System. out.println("\n" );
                System. out.println(choi .getName());
                System. out.println(choi .getAge());
        }
        
}