상세 컨텐츠

본문 제목

로또번호 분석을 위한 데이타만들기

SQL Server/기본개요

by ensoft 2024. 11. 7. 14:17

본문

이번포스팅에서는 SQL Server를 사용하여

로또 전체회차 데이타를 DB화 시켜보겠습니다.

  • 테이블 만들기
  • 데이타 붙여넣기
  • 데이타 조회
  • 데이타타입

이러한 공부를 로또번호 데이타를 가지고 공부해보도록 하겠습니다.

우선 SSMS를 열어 내가 사용하는 데이타베이스를 선택 한 후에

테이블을 선택하고 오른쪽버튼을 눌러 새로만들기 ==> 테이블을 선택합니다.

테이블 만들기

그러면 위 그림처럼 우측에 필드를 입력할수 있는 창이 나타납니다.

여기에 하나하나 필드명들을 입력하고 데이타 타입을 선택합니다.

이렇게 한 후에 저장버튼을 눌러 테이블명을 입력합니다.

저는 lotto_main 이라는 테이블에 저장했습니다.

다른방법으로는 스크립트로 테이블을 생성하는 방법도 있습니다.

CREATE TABLE [ensoft104].[lotto_main](

[no] [int] NOT NULL,

[seldate] [varchar](10) NULL,

[no1] [int] NULL,

[no1m] [varchar](50) NULL,

[no2] [int] NULL,

[no2m] [varchar](50) NULL,

[no3] [int] NULL,

[no3m] [varchar](50) NULL,

[no4] [int] NULL,

[no4m] [varchar](50) NULL,

[no5] [int] NULL,

[no5m] [varchar](50) NULL,

[sel1] [int] NULL,

[sel2] [int] NULL,

[sel3] [int] NULL,

[sel4] [int] NULL,

[sel5] [int] NULL,

[sel6] [int] NULL,

[selb] [int] NULL,

[selsum] [int] NULL,

CONSTRAINT [PK_lotto_main] PRIMARY KEY CLUSTERED

(

[no] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'회차' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'no'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'추첨일' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'seldate'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'1등당첨수' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'no1'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'1등당첨금액' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'no1m'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'2등당첨수' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'no2'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'2등당첨금액' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'no2m'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'3등당첨수' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'no3'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'3등당첨금액' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'no3m'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'4등당첨수' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'no4'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'4등당첨금액' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'no4m'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'5등당첨수' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'no5'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'5등당첨금액' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'no5m'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'당첨번호1' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'sel1'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'당첨번호2' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'sel2'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'당첨번호3' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'sel3'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'당첨번호4' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'sel4'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'당첨번호5' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'sel5'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'당첨번호6' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'sel6'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'보너스당첨번호' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'selb'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'당첨번호합' , @level0type=N'SCHEMA',@level0name=N'ensoft104', @level1type=N'TABLE',@level1name=N'lotto_main', @level2type=N'COLUMN',@level2name=N'selsum'

GO

이러면 테이블이 완성되었고 여기에 데이타를 만들기 위해 동행복권 사이트에서 회차별 당첨정보를

엑셀로 다운받습니다.

그리고 난 후에 A열의 년도는 삭제하고 1회부터 마지막회차까지 선택한 후에

lotto_main 테이블을 열어 붙여넣기를 하면 아래와같이 데이타가 들어갑니다.

전체데이타를 조회하려면 아래그림 처럼

테이블을 선택하고 오른쪽버튼을 눌러 모든행선택을 틀릭하면 전체데이타를 조회할 수 있습니다.

그리고 제가 여기에 selsum 이라는 필드를 하나더 넣었는데이 이것는 6개 번호의 합을 구한 필드이고

sql문으로

update lotto_main set selsum = sel1+ sel2+ sel3+ sel4+ sel5+ sel6

위 sql 문장을 실행하면 6개 숫자의 합이 구해집니다.

SQL Server에서 데이터 타입은 데이터베이스 설계와 쿼리 성능에 큰 영향을 미쳐요. 데이터 타입을 잘 이해하고 활용하는 것이 데이터베이스 관리의 기본이죠. 이번 포스팅에서는 SQL Server의 다양한 데이터 타입에 대해 알아보고, 데이터 타입 변환 방법과 예제도 함께 살펴볼게요.

SQL Server에서 사용되는 데이터 타입은 크게 몇 가지로 나눌 수 있어요. 숫자형, 문자형, 날짜 및 시간형, 이진형 등 다양한 데이터 타입이 존재하죠. 각 데이터 타입의 특징을 살펴보면 다음과 같아요.

  1. 숫자형 데이터 타입 : 정수형 데이터 타입으로는 int, smallint, tinyint, bigint 등이 있어요. 이들은 각각 저장할 수 있는 값의 범위가 다르니, 필요한 범위에 맞춰 선택해야 해요.
  2. 문자형 데이터 타입 : char, varchar, text와 같은 데이터 타입이 있어요. 이들은 문자열 데이터를 저장하는 데 사용되며, varchar는 가변 길이 문자열을 저장할 수 있어요.
  3. 날짜 및 시간형 데이터 타입 : datetime, date, time 등이 있으며, 날짜와 시간을 저장하는 데 사용되죠. 이 데이터 타입들은 시간대에 따라 다르게 처리될 수 있으니 주의해야 해요.
  4. 이진형 데이터 타입 : binary, varbinary와 같은 데이터 타입은 이진 데이터를 저장하는 데 사용돼요. 이미지나 파일과 같은 데이터를 저장할 때 유용하죠.
  5. 기타 데이터 타입 : money, smallmoney와 같은 통화형 데이터 타입도 있어요. 이들은 금액을 저장하는 데 최적화되어 있죠.

이러한 데이터 타입들은 각각의 특성과 용도가 있으니, 상황에 맞게 적절한 타입을 선택하는 것이 중요해요.

데이터 타입 선택 시 고려사항

적절한 데이터 타입을 선택하는 것은 데이터베이스 성능에 큰 영향을 미쳐요. 데이터 타입을 선택할 때는 다음과 같은 사항을 고려해야 해요.

  1. 저장할 데이터의 범위 : 데이터의 최대값과 최소값을 고려해 적절한 데이터 타입을 선택해야 해요.
  2. 메모리 사용량 : 데이터 타입에 따라 메모리 사용량이 다르니, 효율적인 메모리 사용을 위해 적절한 타입을 선택해야 해요.
  3. 성능 : 데이터 타입에 따라 쿼리 성능이 달라질 수 있으니, 성능을 고려한 선택이 필요해요.
  4. 데이터 무결성 : 데이터 타입을 통해 데이터의 무결성을 유지할 수 있으니, 이를 고려해야 해요.