kijun의 등록된 링크

 kijun로 등록된 네이버 블로그 포스트 수는 217건입니다.

MySQL 서브쿼리 Subquery [내부링크]

하나의 질의문은 기본적으로 하나의 기능만을 수행하여 그 결과값을 반환한다. 그러나 DB를 관리하다 보면 좀 더 정교한 조건을 제시하여 데이터에 접근할 필요가 있다. 이때 사용할 수 있는 것이 바로 '서브쿼리(sub-query)'인데, 하나의 질의문 안에 다른 질의문을 포함하여 사용하는 것을 말한다. 특히 하나의 SELECT 문이 또 다른 SELECT 문을 포함하는 구조를 가지게 되는데, 이렇게 함으로써 한 질의문의 결과값을 기반으로 다른 질의문을 수행할 수 있게 된다. select student_name, math from tests where math >= (select avg(math) from tests) order by math desc; 앞의 질의문은 tests 테이블에 저장된 수학의 평균 점수(avg(math) from tests)보다 높은 점수를 가지고 있는 학생들의 이름과 해당 학생의 영어 점수를 보여주도록 하고 있다. 이처럼 하나의 질의문 안에 또 다른 질의문을 포함

MySQL 주석 달기 [내부링크]

어떤 언어를 사용하여 무슨 프로그램을 만들든지 문서화의 중요성은 아무리 강조해도 지나치지 않는다. 그리고 가장 기본적인 문서화의 도구는 역시 '주석'이다. 각각의 코드가 어떤 목적으로 어떤 기능을 위해 만들어진 것인지 기록해두면 다른 개발자에게 도움이 될 뿐만 아니라, 향후 유지보수를 할 때 자기 자신에게도 큰 도움을 줄 것이다. 따라서 주석을 다는 것을 습관화해야 한다. SQL 역시 주석 기능을 제공하고 있으며, 주석은 질의문의 실행에는 아무런 영향도 주지 않는다. 한 줄 주석 가장 단순한 형태의 주석으로 문장의 처음에 하이픈(-)을 두 개 연속해서 넣어준다. -- 학생의 이름과 함께 수학 성적을 보여주는 질의문 select student_name, math from tests; 앞에서 보는 것처럼, 주석으로 처리된 문장은 질의문의 실행에 아무 영향도 주지 않는다. 여러 줄 주석 주석을 여러 줄로 작성한다면 좀 더 많은 내용을 알아보기 쉽게 작성할 수 있어서 좋다. 여러 줄에 걸친

MySQL 별칭(Alias) 사용 AS [내부링크]

AS 키워드 '별칭(alias)'라고도 불리는 AS 기능은 테이블 또는 테이블의 열의 이름에 임시로 이름으로 부여하기 위해 사용한다. 이렇게 별칭을 사용하면 SQL 코드를 좀 더 이해하기 쉬운 결과값을 받을 수 있다. select student_name as 학생_이름, gender as 성별 from students; 앞에서 보는 것처럼 AS 키워드를 사용하면 결과 테이블의 필드명을 알아보기 쉽게 바꿀 수 있다. 단순해 보이는 AS 키워드는 상당히 많이 사용됨으로 꼭 기억해야 한다. SQL의 필드명에는 공백문자를 사용할 수 없으므로, 'AS 학생 이름'처럼 띄어쓰기를 사용할 수 없다. 따라서 앞의 질의문에서는 'AS 학생_이름'처럼 '학생'과 '이름' 사이에 밑줄을 사용하고 있다. AS 키워드는 단순히 필드명을 바꾸는 것에 그치지 않고 테이블 자체의 이름을 바꾸는 데도 사용할 수 있다. 테이블의 이름이 너무 길다면 좀 더 쉽고 간단한 이름으로 바꿔서 사용할 수 있는 것이다. 테이블

MySQL 날짜형 함수 [내부링크]

DB의 존재 목적이 데이터라면, 데이터가 생성되거나 수정된, 그리고 삭제된 날짜와 시간의 관리 역시 매우 중요할 수밖에 없다. 따라서 MySQL은 날짜와 시간에 관련한 다양한 함수를 제공하고 있다. 함수 설명 CURRENT_DATE 현재의 날짜를 (yyyy-mm-dd) 형태로 반환한다. CURRENT_DATE( ) CURDATE 현재의 날짜를 (yyyy-mm-dd) 형태로 반환한다. * CURRENT_DATE와 같은 구문과 기능을 수행한다. CURRENT_TIME 현재의 시간을 (hh:mm:ss) 형태로 반환한다. CURRENT_TIME( ) CURTIME 현재의 시간을 (hh:mm:ss) 형태로 반환한다. * CURRENT_TIME와 같은 구문과 기능을 수행한다. SYSDATE 현재의 날짜와 시간을 yyyy-mm-dd hh:mm:ss 형태로 반환한다. SYSDATE( ) LOCALTIME 현재의 날짜와 시간을 yyyy-mm-dd hh:mm:ss 형태로 반환한다. * SYSDATE와

MySQL 숫자형 함수 [내부링크]

함수 설명 ABS 지정한 수의 절대값을 반환한다. ABS(숫자) AVG 지정한 열의 평균값을 계산하여 반환한다. AVG(열 이름) COUNT 지정한 열에 저장된 데이터의 총 개수를 계산하여 반환한다. COUNT(열 이름) MOD 모듈러 연산자(%)와 마찬가지로 나머지 연산의 결과값을 반환한다. MOD(x, y) MAX 지정한 열에 저장된 데이터값 중 가장 큰 값을 반환한다. MAX(열 이름) MIN 지정한 열에 저장된 데이터값 중 가장 작은 값을 반환한다. MAX(열 이름) POWER 주어진 수에 대한 제곱근을 계산하여 값을 반환한다. POWER(x, y) POW 주어진 수에 대한 제곱근을 계산하여 값을 반환한다. * POWER와 같은 기능을 수행한다. RAND 0보다 크고 1보다 작은 범위에서 랜덤 숫자를 생성한다. RAND(seed) FLOOR 지정한 수보다 작거나 같은 최대 정수값을 반환한다. FLOOR(숫자) CEILING 지정한 수보다 크거나 같은 최소 정수값을 반환한다.

MySQL 문자형 함수 [내부링크]

간단한 산술연산 외에도 SQL은 다양한 함수를 제공하고 있다. 이러한 함수를 이용하여 데이터에 직접적인 연산을 가하는 것이 가능하다. 함수를 사용할 때는 해당 함수에 적용받는 필드명을 괄호( ) 안에 지정해주거나, 데이터값을 직접 넣어주게 된다. 이제부터는 자주 사용되는 함수들에 대해 하나씩 알아볼 것이다. 함수를 공부하기에 앞서 'tests'라는 이름의 테이블을 추가해보자. create table tests ( tid int auto_increment, student_name varchar (20), is_taken tinyint (1), test_date date, korean int unsigned, english int unsigned, math int unsigned, history int unsigned, primary key (tid) ); insert into tests (student_name, is_taken, test_date, korean, english, ma

MySQL 산술연산자 [내부링크]

DB는 데이터를 저장하고 불러오는 것만 가능할까? 물론 그것이 주요 기능이고 DB가 존재하는 이유다. 그리고 DB에 저장된 데이터값을 불러와서 연산하는 것은 대부분의 경우 별도의 프로그램을 통해서 이루어지는 것도 사실이다. 하지만 테이블에 저장된 데이터값이 정수형, 실수형 등의 숫자형 데이터라면, SQL에서 제공하는 산술연산자(arithmetic operators)를 이용하여 기본적인 연산을 할 수도 있다. 연산자 의미 설명 예시 + 더하기 피연산자가 모두 정수이면 정수의 결과값을 반환하지만, 피연산자 중 실수가 포함되어 있다면 실수의 결과값을 반환한다. select age + 1 ... 나이에 1을 더한 값을 출력한다. - 빼기 피연산자가 모두 정수이면 정수의 결과값을 반환하지만, 피연산자 중 실수가 포함되어 있다면 실수의 결과값을 반환한다. select age – 1 ... 나이에서 1을 뺀 값을 출력한다. * 곱하기 피연산자가 모두 정수이면 정수의 결과값을 반환하지만, 피연산자

MySQL 비교연산자 [내부링크]

지금까지 공부한 것처럼 WHERE 문은 SQL에 있어 매우 강력하고 유용한 도구다. 이 도구를 더 효과적으로 사용하기 위해서 SQL은 LIKE와 NOT LIKE 이외에도 다음과 같은 비교연산자를 제공한다. 연산자 의미 예시 = 일치하는 (<=>와 동일> ... where customerID = 100; 고객ID가 100인 레코드를 검색 <=> 일치하는 (=와 동일) ... where customerID <=> 100; 고객ID가 100인 레코드를 검색 != 불일치하는 (<>와 동일) ... where customerName != 'Susan'; 고객 이름이 Susan이 아닌 레코드를 검색 <> 불일치하는 (!=와 동일) ... where customerName <> 'Susan'; 고객 이름이 Susan이 아닌 레코드를 검색 > ~보다 큰 ... where price > 50; 상품 가격이 50보다 큰 레코드를 검색 (50 미포함) >= ~보다 크거나 같은 ... where pric

MySQL 비교연산자 LIKE, NOT LIKE [내부링크]

다른 질의어를 배우기 위해 데이터를 다시 입력할 필요가 있다. 이번에는 조금 더 다양한 데이터를 저장할 수 있도록 필드 역시 추가해보자. alter table students add age int not null; alter table students add is_enrolled tinyint; alter table students add enrolled_date date; insert into students (student_name, student_grade, school_name, gender, age, is_enrolled, enrolled_date) values ('홍길동', 2, '활빈고등학교', '남자', 16, 1, 20220201), ('허균', 2, '활빈고등학교', '남자', 32, 1, 20220201), ('연산군', 3, '조선고등학교', '남자', 36, 0, null), ('세종', 3, '조선고등학교', '남자', 42, 1, 20210601), ('홍

MySQL 데이터 삭제 DELETE [내부링크]

DELETE DELETE 문은 테이블에 존재하는 레코드를 삭제할 때 사용한다. 하나의 필드에 존재하는 데이터를 삭제하는 것이 아닌 하나의 행(row) 전체를 삭제하는 것이다. DELETE FROM <테이블 이름> WHERE <조건>; 다음 질의문을 실행하면 '뺑덕'이라는 이름을 가진 학생의 레코드가 삭제되는 것을 확인할 수 있을 것이다. delete from students where student_name='뺑덕'; 이렇게 하나의 레코드만 삭제하는 대신에 모든 레코드를 다 삭제하는 방법은 없을까? 이것은 의외로 간단해서 WHERE 조건문을 빼주기만 하면 된다. 즉, DELETE 문을 실행할 때 WHERE 문을 적어주지 않으면 모든 데이터와 레코드가 삭제됨으로 특히 주의해야 한다는 말이기도 하다. delete from students; 앞의 질의문을 실행하면 students 테이블에 있던 모든 레코드가 지워지게 될 것이다. DROP vs. DELETE 지금까지 무언가를 삭제할 때는

MySQL 데이터 수정 UPDATE [내부링크]

UPDATE DB를 운영하다 보면 데이터를 수정해야 하는 일이 빈번하게 발생한다. 입력 오류가 원인일 수도 있고, 주소지의 변경이라든가 전화번호나 소속기관의 변경 등은 언제든지 일어날 수 있는 일이기 때문이다. 이렇게 이미 저장된 데이터값을 변경할 때 사용하는 것이 바로 'UPDATE' 질의어다. UPDATE <테이블 이름> SET <열 이름.1> = <데이터값.1>, <열 이름.2> = <데이터값.2> WHERE <조건식>; 그럼 지금까지 NULL 값으로 방치되어 있던 학생의 성별(gender) 데이터를 수정해보자. update students set gender='남자' where sid=1; 단, UPDATE 문을 사용할 때 WHERE 조건문에 특히 신경을 써야 한다. WHERE 조건문을 빼먹을 경우, 지정한 열의 모든 데이터값이 한꺼번에 바뀌기 때문이다. 다음과 같은 경우에는 예기치 않은 결과가 일어날 수 있다. update students set gender='남자'; 하지

MySQL 테이블 수정 ALTER TABLE (2) [내부링크]

MODIFY COLUMN <열 이름> <자료형> 각각의 열은 처음 선언할 때 이곳에 저장할 자료형(data type)을 선언해야 한다. 하지만 실제로 DB를 운영하다 보면, 처음 생각과 달리 자료형을 수정해야 할 때가 있는데, 이때 사용하는 것이 바로 'MODIFY' 키워드다. ALTER TABLE <테이블 이름> MODIFY COLUMN <열 이름> <자료형>; alter table students modify column gender varchar(2); 처음 student_gender 열을 선언할 때 자료형은 varchar(1) 즉, 단 한 글자만 저장할 수 있도록 했었다. 하지만 앞의 질의문을 실행하면 두 글자까지 저장할 수 있는 크기로 바뀌게 될 것이다. CHANGE COLUMN <열 이름> <자료형> 각각의 열 이름은 테이블이 처음 만들어질 때 선언된다. 하지만 필요에 따라 테이블을 추가하다 보면 열 이름이 중복될 수 있고, 이것은 DB 관리에 어려움을 초래할 수 있다.

MySQL 테이블 수정 ALTER TABLE (1) [내부링크]

ADD COLUMN <열 이름> <자료형> ALTER TABLE 문은 기존 테이블에 열을 추가하거나 삭제 또는 수정하는 데 사용한다. 이제 students 테이블에 새로운 열(column)을 추가해보자. ALTER TABLE <테이블 이름> ADD COLUMN <열 이름> <자료형>; 다음 질의문을 실행하면 학생의 성별(gender) 정보를 저장할 수 있는 새로운 열이 추가될 것이다. alter table students add column gender varchar(1); select * from students; 앞의 질의문은 새로운 열만 추가했을 뿐, 데이터를 입력하지 않았기 때문에 각각의 필드는 NULL 값으로 채워져 있다. NULL 값이란? 테이블에 새로운 열이나 행을 추가할 때 실제 데이터를 포함하지 않을 수도 있다. 이런 경우 해당 필드(field)는 Null 값으로 채워지게 되는데, Null 값은 숫자 '0'이나 공백문자(space)와는 다른 것으로, 어떠한 실질적인

MySQL 데이터 검색 WHERE [내부링크]

WHERE 조건문은 테이블에서 주어진 조건의 데이터만을 추출하고자 할 때 사용한다. SELECT <열 이름> FROM <테이블 이름> WHERE <조건1> [AND/OR] <조건2> WHERE 문을 사용하기 위해서는 하나 이상의 조건이 주어져야 하며, 여러 개의 조건을 주고 싶을 때는 중간에 'AND' 혹은 'OR'을 사용할 수 있다. AND를 사용할 경우 주어진 모든 조건에 만족하는 데이터만을 반환할 것이고, OR을 사용하면 주어진 조건 중 어느 하나라도 만족하면 모두 결과값으로 반환할 것이다. 다음은 students 테이블에서 특정 학교에 소속된 학생만을 추출하는 질의문이다. select * from students where school_name='남원고등학교'; 앞서 말한 대로 여러 개의 조건을 한 번에 제시할 수도 있는데, 이렇게 함으로써 원하는 데이터에 좀 더 정확하게 접근할 수 있다. select * from students where school_name='남원고등학교

MySQL 다중 질의문 [내부링크]

한 번에 하나의 질의문을 던지는 것뿐만 아니라 여러 질의문을 동시에 제시하는 것 역시 허용된다. select student_name from students; select student_grade from students; select school_name from students; SQL은 하나의 질의가 끝났다는 것을 세미콜론(;)으로 표시하기 때문에 앞에서와 같이 질의문을 작성하면 SQL은 이를 세 개의 서로 다른 질의문으로 인식한다. 그리고 여러 질의문이 동시에 실행하게 되면 각각의 결과값은 서로 다른 탭에 제시된다. 따라서 각 질의문의 결과값을 보려면 아래의 탭을 클릭해주어야 한다. [ 워크벤치 사용하기 ] 여러 개 질의문이 작성된 상태에서 특정 질의문만 선택적으로 실행할 수도 있다. 이를 위해서는 먼저 해당 질의문을 클릭한 뒤 <Ctrl + Enter>키를 누르거나, 쿼리창의 메뉴에서 번개 모양 위에 숫자 '1'이 적혀있는 아이콘을 클릭하면 된다. copyright 202

MySQL 데이터 정렬 [내부링크]

ORDER BY <열 이름> ORDER BY 연산자는 SELECT 문에 의해 반환되는 결과값을 정렬하는 데 사용한다. select * from students order by student_grade; 앞의 질의문을 실행하면 students 테이블에 있는 모든 데이터를 학년(student_grade) 열에 저장된 데이터값을 기준으로 정렬하여 보여줄 것이다. ORDER BY 연산은 기본적으로 오름차순이다. 즉, 가장 작은 수에서부터 큰 수의 순서로 정렬한다. 정렬의 기본적인 방법은 오름차순(ASC)이다. 하지만 필요하다면 내림차순(DESC)으로 정렬할 수도 있다. select * from students order by student_grade asc; select * from students order by student_grade desc; 그림에서 보듯이 오름차순은 작은 것부터 큰 것으로 보여지는 방식을 말하고, 내림차순은 큰 것부터 작은 것으로 보여지는 방식을 말한다. ORDE

MySQL 결과값 반환 개수 조정 LIMIT [내부링크]

SELECT <열 이름> FROM <테이블 이름> LIMIT <원하는 자료의 수> SQL 질의문은 기본적으로 저장된 모든 데이터를 대상으로 한다. 하지만 항상 모든 데이터가 다 필요한 것은 아닐 것이다. 단지 몇 개의 데이터만을 보고 싶다면 'LIMIT' 키워드를 사용할 수 있다. 다음과 같이 SELECT 질의어 뒤에 LIMIT를 붙여줌으로써 원하는 수의 데이터만 추출할 수 있다. select school_name from students limit 3; 앞의 질의어는 students 테이블에서 학교 이름(school_name) 열에 저장된 데이터 중 위에서 세 개만 가져오도록 하고 있다. 하지만, 단순히 순서대로 자료를 가져오게 되면 그림에서처럼 중복된 데이터값이 그대로 반환된다. 즉, 반환되는 결과값의 개수만 제한했을 뿐, 데이터의 중복성을 고려하지 않았기 때문이다. 그렇다면 데이터의 중복이 없는 순수한 결과값을 원한다면 어떻게 할 수 있을까? LIMIT와 함께 DISTINCT를

MySQL 테이블 데이터 보기 [내부링크]

SELECT <열 이름> FROM <테이블 이름> 테이블에 데이터를 저장했다면 SELECT 문을 이용하여 해당 테이블에 저장된 데이터를 확인할 수 있다. 하지만 선택한 테이블의 모든 데이터가 아닌 특정 열에 저장된 데이터만 보고 싶다면 어떻게 해야 할까? 이런 경우 SELECT 질의어 뒤에 자신이 보고자 하는 열의 이름을 적어주면 된다. 열이 여러 개일 때는 각각의 열 이름 사이에 콤마(,)를 넣어주자. select student_name, school_name from students; [ 워크벤치 사용하기 ] 워크벤치에서 특정 열에 저장된 데이터만 골라서 보는 방법은, 아래 그림에서처럼 보고자 하는 열의 이름을 모두 고른 뒤 오른쪽 마우스 버튼을 클릭하여 'Select Rows – Limit XXXX'를 선택하는 것이다. 이때 <Shift + 마우스 오른쪽 버튼>을 이용하면 이어지는 열을 한꺼번에 선택하고, <Ctrl + 마우스 오른쪽 버튼>을 이용하면 서로 떨어진 열을 따로 따

MySQL 데이터 입력 [내부링크]

INSERT INTO <테이블 이름> 이제 DB에 데이터를 입력하는 방법에 대해 알아볼 차례다. 테이블에 데이터를 입력할 때는 다음과 같은 구문 규칙을 따른다. INSERT INTO <테이블 이름> (필드명_1, 필드명_2, 필드명_3... 필드명_n) VALUES (데이터_1, 데이터_2, 데이터_3... 데이터_n); 이때 테이블 이름 뒤에 명시하는 필드명은 실제 테이블의 필드명과 일치해야 하며, VALUES 키워드 뒤에 데이터값 역시 필드명의 순서와 같아야 한다. 그리고 문자열 데이터의 경우 반드시 인용부호(' ')로 감싸주어야 하지만, 대부분의 다른 자료형은 인용부호를 필요로 하지 않는다. 필드명이나 입력을 원하는 데이터값은 각각 콤마로 구분한다. insert into students (is_admin, student_name, student_grade, school_name) values (0, '홍길동', 2, '활빈고등학교'); select * from students;

MySQL 모든 데이터 보기 [내부링크]

다른 질의어를 공부하기 위해 앞에서 삭제했던 'students' 테이블을 다시 만들어 주자. use myDB; create table students ( id int not null auto_increment, is_admin tinyint (1) not null, student_name varchar (20) not null, student_grade tinyint (1) not null, school_name varchar (20) not null, primary key (id) ); SELECT * FROM <테이블 이름> SHOW COLUMNS 질의문이 테이블의 구조와 필드의 정보만을 보여주었다면, SELECT 문은 지정된 테이블에서 선택한 열(필드)에 저장된 실제 데이터를 보여준다. select * from students; 그림에서 보듯이 students 테이블에는 아직 저장된 데이터가 없기 때문에 테이블의 구조만 볼 수 있을 뿐, 다른 것은 보이지 않는다. 앞의 질의문에

MySQL 데이터베이스 / 테이블 삭제 [내부링크]

DROP DROP은 DB나 테이블을 삭제할 때 사용하는 질의어다. DB 자체를 삭제할 때는 다음과 같은 구문을 사용한다. DROP DATABASE <DB 이름> 테이블을 삭제할 때 역시 비슷한 구문을 사용하는데, 삭제하고자 하는 것이 DB인지 테이블인지 적어주는 것 이외에는 기본적으로 같은 구문 규칙을 가진다. DROP TABLE <테이블 이름> 앞서 만들었던 'newDB'를 삭제해보자. drop database newdb; 앞의 질의문을 실행하고 나면 더 이상 'newdb'라는 이름의 DB가 존재하지 않는 것을 확인할 수 있다. 이번에는 앞서 만든 'students' 테이블을 삭제해볼 것이다. drop table students; show tables from mydb; DROP을 사용할 때 주의할 점은, 삭제 행위에서 일반적으로 수행하는 재확인 절차 없이 질의어의 실행과 동시에 대상이 삭제된다는 점이다. 이는 때에 따라 매우 심각한 결과를 초래할 수 있는 것으로 각별한 주의가 필

MySQL 테이블 정보 보기 [내부링크]

SHOW TABLES SHOW TABLES 질의어는 선택한 DB에 존재하는 모든 테이블의 목록을 보여준다. show tables; 앞의 질의문을 실행하면 지난 포스팅에서 만든 'students'라는 이름의 테이블을 볼 수 있다. 테이블 정보를 볼 때 'FROM' 키워드를 함께 사용할 수 있는데, 이 경우 'USE'로 DB를 지정할 필요 없이 해당 DB의 테이블 정보를 볼 수 있다. 그리고 이것은 다른 질의문에서도 활용할 수 있다. 단, FROM 키워드를 통해 호출된 DB는 임시적일 뿐 USE에 의해 선언한 경우와는 다르다. 즉, FROM에 의한 것은 해당 질의문이 실행된 이후 효력을 잃게 되지만 USE에 의해 선언된 경우에는 질의문의 실행 이후에도 효력을 상실하지 않는다는 점이 다르다. show tables from mydb; [ 워크벤치 사용하기 ] 워크벤치에서 같은 기능을 실행할 때는 내비게이터에서 먼저 DB를 더블 클릭하거나 DB 이름 옆에 있는 화살표()를 클릭한다. 그리고

MySQL 테이블 만들기 [내부링크]

CREATE TABLE <테이블 이름> 앞선 포스팅에서도 설명했듯이 DB는 테이블로 관리되며, 모든 데이터는 테이블 안에 있는 필드(field)에 저장된다. 따라서 데이터를 저장하기 위해서는 먼저 테이블을 만들어야 한다. 테이블을 정의하는 질의문은 다음의 구문 규칙을 따른다. CREATE TABLE <테이블 이름> ( 필드명 자료형 (크기), 필드명 자료형 (크기), 필드명 자료형 (크기) ); MySQL은 한글과 호환되기 때문에 입력하는 데이터뿐만 아니라 '테이블 이름'이나 '필드명'을 모두 한글로 작성할 수 있다. 하지만 실무에서 테이블 이름이나 필드명을 한글로 작성하는 경우는 매우 드물다. 따라서 입력하는 데이터값은 필요에 따라 한글을 사용하되 다른 객체명은 영문을 사용하도록 하자. 업계의 관행을 따르는 것은 무조건 옳다. 앞에서 보는 것처럼 테이블의 구조를 선언하는 질의문은 소괄호 '('로 시작하여 ')'로 닫아주며, 질의문의 끝을 알리는 세미콜론(;)은 닫힌 괄호 뒤에 붙인

MySQL 데이터베이스 보기 및 생성 [내부링크]

SQL에서 사용되는 명령어는 '쿼리(query)' 또는 '질의어'라고 부른다. 질의어를 통해 DB를 설계할 뿐만 아니라 저장된 데이터를 조작하고 관리할 수 있다. 그럼 가장 기본적인 질의어부터 하나씩 살펴보도록 하자. SHOW DATABASES 하나의 DB 서버에는 다수의 독립된 DB가 존재할 수 있는데, 이 질의어를 통해 DB 서버 안에 존재하는 모든 DB를 볼 수 있다. 질의어를 실행할 때는 쿼리 상자 위에 있는 번개 모양의 아이콘을 클릭한다. show databases; 그림에서 볼 수 있듯이, MySQL을 설치하면 시스템에 관련한 세 개의 DB와 함께 'sakila'와 'world'라는 두 개의 DB가 설치된 것을 볼 수 있다. 이 중에서 sakila와 world는 샘플 DB로 지워도 무방하지만, 나머지 DB를 삭제하면 시스템에 문제가 발생할 것이다. 스키마 MySQL에서는 '데이터베이스(database)'를 '스키마(schema)'라는 이름으로 부른다. 즉, 데이터베이스와

MySQL 워크벤치 [내부링크]

MySQL 워크벤치(이하 워크벤치)는 MySQL 서버 및 DB 관리를 위한 GUI 도구다. 우리는 앞으로 이 워크벤치를 사용하여 DB 관리를 위한 SQL 문법을 배우게 될 것이다. MySQL 워크벤치가 제공하는 주요 기능은 다음과 같다. 1 SQL 개발 DB 서버에 대한 연결을 만들고 관리한다. 연결 매개변수를 구성하는 기능과 함께 내장 SQL 편집기를 사용하여 SQL 쿼리(명령문)를 실행할 수 있다. 2 데이터 모델링(설계) DB 모델을 그래픽으로 작성하고, 테이블 편집기를 사용하여 DB의 모든 측면을 편집할 수 있다. 테이블 편집기는 테이블, 열, 색인, 트리거, 파티셔닝, 옵션, 삽입 및 권한, 루틴 및 보기를 편집하는 기능을 제공한다. 3 서버 관리 사용자 관리, 백업 및 복구 수행, 데이터 검사, DB 상태 보기 및 MySQL 서버 성능 모니터링을 통해 MySQL 서버를 관리할 수 있다. 4 마이그레이션 MySQL 이전 버전뿐만 아니라, Microsoft SQL Server

MySQL 설치 [내부링크]

본 블로그는 여러분의 윈도우 운영체제에 MySQL Community 서버와 MySQL 워크벤치(Workbench)가 설치되어 있다는 전제로 설명하고 있다. 따라서 포스팅을 따르기 전에 먼저 필요한 소프트웨어를 설치하도록 하자. MySQL 워크벤치는 SQL 개발과 관리, 데이터베이스 설계, 생성 그리고 유지를 위한 통합 개발 환경이다. 먼저 아래 링크에 가서 MySQL Community Server를 내려받는다. https://dev.mysql.com/downloads/mysql/ 다운로드 버튼을 클릭하면 다음과 같은 로그인 화면이 나오는데, 이미 계정이 있는 경우에는 로그인을 할 수도 있지만 로그인 없이 내려받는다고 해서 문제 될 것은 없다. 내려받은 파일을 실행하면 다음과 같은 화면을 만나게 되는데, 여기서 <Developer Default>는 MySQL 서버와 함께 SQL 관련 소프트웨어 개발자용 도구를 설치하며 <Server only>를 선택하면 개발자용 도구를 제외한 MySQ

DBMS와 SQL의 이해 [내부링크]

DBMS(DataBase Management Systems)란? 데이터베이스(database, 이하 DB)는 접근과 관리가 쉽도록 조직화한 '데이터의 집합'을 말하며, 이때 데이터는 컴퓨터 외에 종이로 작성된 문서나 서적 등을 포함하는 포괄적인 개념이다. 따라서 때에 따라서는 원하는 데이터를 찾거나 가공하는 데 상당한 시간이 소요될 수 있다. 이에 비해 데이터베이스 관리 시스템(DBMS)은 컴퓨터 위에서 데이터베이스를 작성, 관리 및 운영할 수 있는 프로그램의 모음을 말하고, 이를 위해 사용하는 특별한 언어를 'SQL(씨퀄, 혹은 에스큐엘)'이라고 부른다. 즉, 정확한 의미에서 데이터베이스와 데이터베이스 관리 시스템은 전혀 다른 말이지만 본 블로그에서 말하는 오직 컴퓨터에 생성되고 관리되는 것만 DB라고 부를 것이다. 우리가 앞으로 공부하게 될 DB는 테이블(table)로 구성된다. 예를 들어, 여러분이 인스타그램이나 페이스북 같은 웹서비스를 만든다면 사용자 정보, 그리고 해당 사용

파이썬 Pandas 시리즈 (Series) (2) [내부링크]

데이터 범위 지정 접근 Series에 저장된 데이터 전체 혹은 하나를 추출할 수 있는 것처럼, 특정 범위에 있는 데이터만을 확인할 수도 있다. 범위를 지정하기 위해서는 슬라이싱(slicing)을 하게 된다. <시리스명>[시작 위치:끝 위치] 슬라이싱에 대한 추가적인 설명은 아래 링크를 참고하기 바란다. https://blog.naver.com/kijun/222418229833 이때 시작 위치만 적은 경우에는 시리즈의 마지막 데이터까지 읽을 것이며, 끝 위치만 적은 경우에는 첫 데이터부터 지정한 위치의 데이터까지, 시작과 끝을 모두 적은 경우에는 해당 범위의 데이터를 읽어오게 된다. import pandas as pd mysr = pd.Series({'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6, 'g':7, 'h':8, 'i':9}) d1 = mysr[5: ] # 5번 데이터 즉, 여섯 번째 데이터부터 마지마까지 d2 = mysr[ :5] # 처음부터 다섯

Pandas 시리즈 (Series) [내부링크]

Series Pandas에서 말하는 '시리즈(Series)'는 1차원 배열을 의미하며, Series에 저장할 수 있는 데이터에는 제한이 없다. import pandas as pd # 정수와 집합(set)을 포함한 리스트를 선언하고 있다. s = [1, 6, 32, {1, 6, 32}] # 출력값: [1, 6, 32, {32, 1, 6}] print(s) # Pandas의 Series로 변환하고 있다. mysr = pd.Series(s) '''출력값: 0 1 1 6 2 32 3 {32, 1, 6} dtype: object ''' print(mysr) 데이터 접근 Series에 저장된 각각의 데이터는 인덱스(index)를 통해 접근할 수 있다. 다른 자료형과 마찬가지로 인덱스는 '0'에서 시작하여 정수값 '1'씩 증가한다. import pandas as pd # 정수와 집합(set)을 포함한 Series를 선언하고 있다. mysr = pd.Series([1, 6, 32]) # 시리즈의

Pandas 소개 [내부링크]

Pandas는 데이터 작업에 사용되는 파이썬 패키지로, 정리되어 있지 않은 데이터를 정리, 분석하여 서로간의 관련성을 찾는데 사용한다. 자연스럽게 Pandas는 빅데이터와 데이터 과학 분야에서 가장 널리 사용되는 패키지 중 하나다. 'Pandas'라는 이름은 'Panel Data'와 'Python Data Analysis' 모두를 의미하며, Wes McKinney가 2008년에 만들었다. Pandas를 사용하기 위해서는 먼저 패키지를 설치해주어야 한다. pip install pandas 'pip'이 익숙하지 않은 사람은 아래 링크를 참고하기 바란다. https://blog.naver.com/kijun/222637994296 Pandas가 설치되었다면 import 문을 이용하여 여러분의 프로그램에서 가져다 쓸 수 있다. 이때 'as' 키워드를 사용해 'pd'라는 별명을 주는 것이 관행이다. 다음 코드는 하나의 딕셔너리를 Pandas를 이용하지 않을 때과 이용할 때 어떻게 달라지는지 보

OpenPyxl 워크시트 삭제, 복사, 추출 [내부링크]

워크시트 삭제 새로운 워크시트를 만드는 것이 가능하다면 불필요한 워크시트를 삭제하는 것 역시 가능할 것이다. 이를 위해서는 'remove_sheet( )' 함수를 사용한다. 이때 삭제하려는 시트명의 앞뒤를 대괄호[ ]로 감싸주어야 한다. <워크북명>.remove_sheet(<워크북명>['시트명']) # openpyxl에서 Workbook 객체를 가져오고 있다. from openpyxl import load_workbook # 기존의 워크북을 불러온다. wb = load_workbook('pyexcel_04.xlsx') # 워크시트 '4월'을 지정하여 삭제한다. wb.remove_sheet(wb['4월']) # 같은 이름으로 파일을 덮어쓰고 있다. wb.save('pyexcel_04.xlsx') 앞의 코드를 실행하면 조금 전까지 존재하던 워크시트 '4월'이 삭제된 것을 확인할 수 있을 것이다. 워크시트 복사 새로운 시트를 생성하고 삭제할 수 있는 것처럼 이미 존재하는 시트를 그대로 복

OpenPyxl 워크시트의 생성, 지정, 수정 [내부링크]

워크시트 생성 하나의 워크북은 여러 개의 워크시트를 가질 수 있다. 데이터를 각각의 성격에 따라 서로 다른 시트에 저장하면 보다 효율적인 관리가 가능하다. 예를 들어, 월별 매출액을 1월~12월까지 12개의 시트에 나누어 관리하는 것을 생각해볼 수 있다. 새로운 워크시트를 만드는 방법은 다음과 같다. 'create_sheet( )' 함수를 사용하면 마지만 시트 뒤에 새로운 시트가 생성된다. <워크북명>.create_sheet('시트명') # openpyxl에서 Workbook 객체를 가져오고 있다. from openpyxl import load_workbook # 기존의 워크북을 불러온다. wb = load_workbook('pyexcel_01.xlsx') # 새로운 워크시트 3개를 추가한다. wb.create_sheet('2월') wb.create_sheet('3월') wb.create_sheet('4월') # 파이썬 소스파일과 같은 위치에 다른 이름으로 파일을 저장하고 있다. w

OpenPyxl 워크북 생성 및 불러오기 [내부링크]

파이썬을 통해 엑셀을 조작할 수 있게 도와주는 패키지는 다양하다. 이중 가장 잘 알려진 것은 OpenPyxl과 xlsxWriter, 그리고 PyExcelerate일 것이다. 속도 면에서만 보면 PyExcelerate가 가장 빠르지만 xlsxWriter과 마찬가지로 엑셀 파일을 새로 만드는 것만 가능할 뿐, 이미 존재하는 엑셀 파일을 읽어올 수 없다는 단점이 있다. 물론, 프로그램의 결과값을 엑셀 파일로 제공하는 것이 목적이라면 이것도 나쁘지 않겠지만, OpenPyxl을 사용하면 파일의 생성 뿐만 아니라 이미 존재하는 엑셀 파일을 읽어올 수 있어 편리하다. 엑셀 관련 패키지에 대한 더 많은 정보를 원한다면 아래 링크에서 확인할 수 있다. https://www.python-excel.org/ 본 블로그에서는 OpenPyxl의 사용법에 대해 다룰 것이다. 먼저 여러분의 컴퓨터에 OpenPyxl 패키지를 설치해야 한다. 윈도우 명령 프롬프트를 열어 아래 명령어를 입력하도록 하자. pip i

파이썬 설치 파일 만들기 (NSIS) [내부링크]

여러분이 만든 프로그램을 주변 사람들과 공유할 때는 EXE 파일을 만드는 것으로 충분할 수 있지만, 인...

파이썬 EXE 파일 만들기 (pyinstaller) [내부링크]

pyinstaller py_compile에 의해 만들어진 바이트 코드는 똑같은 버전의 파이썬이 설치된 기기에서만 실행할...

파이썬 컴파일 (py_compile) [내부링크]

파이썬은 &#x27;인터프리터(interpreter)&#x27; 언어다. 즉, 여러분이 작성한 코드를 실행 시점에 컴퓨터가...

파이썬 파일 제어 (file handling) (2) [내부링크]

with 구문 앞에서도 말했지만, 쓰기 위해서든 읽기 위해서든 파일을 열었으면 반드시 닫아주어야 한다. 파...

파이썬 자료형 비교 [내부링크]

프로그래밍을 처음 배우면서 어렵게 느끼는 경우가 있다면 그것은 대부분 낯선 용어들 때문일 것이다. 서로...

파이썬 파일 제어 (file handling) [내부링크]

폴더 제어를 위해 사용한 &#x27;os&#x27; 모듈을 통해서도 파일 관리가 어느 정도 가능하지만, 파일을 제어...

파이썬 폴더 제어 (directory control) [내부링크]

폴더를 제어하기 위해서는 먼저 파이썬에서 제공하는 &#x27;os&#x27; 모듈을 임포트해야 한다. &#x27;os&#x...

파이썬 PIP (Package Installer for Python) [내부링크]

스스로 필요한 모듈과 패키지를 만들어 사용할 수도 있지만, 이미 만들어진 모듈과 패키지를 가져다 쓸 수...

파이썬 패키지 (package) [내부링크]

&#x27;패키지(package)&#x27;는 &#x27;라이브러리(library)&#x27;라는 이름을 부르기도 하는데, 여러 개의 ...

파이썬 모듈 검색 경로 [내부링크]

임포트 문을 통해 모듈을 가져오려고 할 때 파이썬 인터프리터는 다음 순서로 지정한 모듈을 찾는다. 그러...

파이썬 __main__ 모듈 [내부링크]

대부분의 프로그래밍 언어는 프로그램의 시작점을 밝히는 &#x27;main 함수&#x27;를 가지고 있고, 프로그램...

파이썬 모듈 (module) (3) [내부링크]

내장 모듈 사용하기 필요한 모든 모듈을 개발자가 직접 만들어 사용할 수도 있지만, 이것은 너무 많은 시간...

파이썬 모듈 (module) (2) [내부링크]

임포트 클래스 함수를 호출할 수 있는 것처럼, 클래스와 멤버 변수 역시 임포트해서 사용할 수 있다. 클래...

파이썬 모듈 (module) (1) [내부링크]

&#x27;모듈(module)&#x27;은 하나 이상의 기능을 포함하는 소프트웨어의 구성요소로, 프로그램(program)이...

C# 스택 (Stack) [내부링크]

&#x27;스택(stack)&#x27;은 그 자료구조의 특성상 Last In, First Out 즉, 마지막에 들어온 자료가 먼...

파이썬 내장 예외처리기 (Built-in Errors) [내부링크]

프로그램을 작성하다 보면 의도치 않은 실수가 생길 수 있다. 그리고 파이썬 프로그램은 처리되지 않은 오...

파이썬 예외 처리 (exception handling) [내부링크]

프로그램을 실행하다 보면 예기치 않은 상황이 발생할 수 있으며, 주로 다음과 같은 경우에 발생한다. 즉, ...

파이썬 밑줄의 역할과 활용 [내부링크]

파이썬에서 밑줄(_)은 특별한 의미를 가진다. &#x27;private&#x27; 혹은 &#x27;protected&#x27; 멤버라는 ...

파이썬 Protected 접근제한자 [내부링크]

우리는 이미 public과 private 접근제한자에 대해 공부한 바가 있다. 파이썬의 모든 객체는 public을 기본...

파이썬 추상 클래스 (abstract) [내부링크]

지금까지 살펴본 것처럼 객체지향 프로그래밍은 프로퍼티를 활용한 캡슐화, 그리고 상속과 다형성을 사용한...

파이썬 다형성 (polymorphism) [내부링크]

객체지향 언어의 3대 특징을 흔히 캡슐화, 상속, 그리고 다형성이라고 말한다. 하지만 &#x27;다형성(polymo...

파이썬 상속 (inheritance) (3) [내부링크]

다중 상속 하나의 부모 클래스가 하나의 자식 클래스만 가질 수 있는 것은 아니다. 필요한 경우 보다 다양...

파이썬 상속 (inheritance) (2) [내부링크]

프로퍼티 상속 일반적인 메소드나 멤버 변수처럼 생성자 역시 상속할 수 있었다면, 프로퍼티도 상속할 수 ...

파이썬 상속 (inheritance) (1) [내부링크]

객체지향 프로그래밍의 핵심 개념 중 하나인 &#x27;상속(inheritance)&#x27;은 이미 존재하는 다른 클래스...

파이썬 접근제한자 public vs. private 비교 [내부링크]

&#x27;접근제한자(access modifier)&#x27;는 전역변수, 지역변수와는 다른 것이다. 전역/지역변수가 함수에...

파이썬 함수 vs. 메소드 비교 [내부링크]

이쯤에서 함수와 메소드의 차이를 분명히 할 필요가 있다. 많은 프로그래밍 언어에서 &#x27;함수(function)...

파이썬 프로퍼티 (property) [내부링크]

지난 포스팅에서 공부한 것처럼 클래스의 멤버 변수를 캡슐화하는 것은 매우 좋은 코딩 습관이다. 객체지향...

파이썬 캡슐화 (encapsulation) [내부링크]

객체지향 프로그래밍의 핵심 개념 중 하나인 &#x27;캡슐화(encapsulation)&#x27;는 &#x27;정보 은닉(inform...

파이썬 생성자와 소멸자 [내부링크]

생성자 (constructor) 생성자는 특별한 종류의 메소드(method)다. 생성자는 클래스의 인스턴스가 만들어질 때 자동으로 함께 만들어진다. 즉, 개발자가 따로 구성하지 않더라도 내부적으로 항상 존재하는 것이기 때문에 애써 만들 필요는 없다. 그렇다면 왜 생성자에 대해 공부해야 할까? 자동으로 만들어지는 생성자의 경우 아무런 기능도 가지지 않기 때문에 특별한 연산을 포함하는 생성자를 원한다면 따로 만들어주어야 한다. 예를 들어, 학생등록 프로그램을 만드는 경우, 클래스의 인스턴스가 생성될 때마다(새로운 학생이 들어올 때마다) 메시지로 알리고자 한다면 생성자가 그 기능을 훌륭하게 해낼 수 있다. 이러한 생성자를 만들 때는.......

파이썬 집합 (Set) (3) [내부링크]

형변환 (type casting) 문자열, 튜플, 집합, 딕셔너리 등 시퀀스에 속하는 자료는 &#x27;생성자(constructor)&#x27;를 이용하여 간단하게 집합으로 형변환을 할 수 있다. 이를 위해서는 괄호( ) 안에 리스트로 변환하고자 하는 시퀀스를 넣어주면 된다. 딕셔너리 역시 집합으로 형변환할 수 있다. 단, 별도의 메소드를 사용하지 않는다면 딕셔너리에서 &#x27;키(key)&#x27;값만을 추출하여 집합으로 전환한다. 딕셔너리를 집합으로 변환할 때 키값이 아닌 데이터값을 기준으로 하고 싶다면 다음과 같이 &#x27;get(&#60;키&#62;)&#x27; 메소드를 사용하면 된다. 이때 주의해야 할 것은 &#x27;set( )&#x27; 생성자 안에서 다시 한번 소괄호( )를 사용.......

파이썬 함수 (function) (1) [내부링크]

&#x27;함수(function)&#x27;는 하나의 목적을 수행하도록 만든 &#x27;코드 블록(code block)&#x27;이다. 프로그램 안에서 반복해서 사용되는 기능을 함수로 구성해두면 매번 코드를 다시 작성할 필요없이 원할 때마다 가져다 사용할 수 있어서 편리하다. 뿐만 아니라, 프로그램을 더 쉽게 관리할 수 있으며, 디버그와 확장을 용이하게 한다. 변수가 데이터의 값을 저장하는 기능을 담당한다면 함수는 데이터를 가공하고 처리하는 기능을 맡는 것이다. 파이썬은 수많은 내장함수(built-in function)을 제공한다. 출력문을 생성하는 &#x27;print( )&#x27;, 문자열이나 각종 시퀀스의 데이터 수를 계산하는 &#x27;len( )&#x27;, 그리고 리스트, 튜플.......

'C# 스타터'가 출간되었습니다! [내부링크]

여러분들의 성원과 도움에 힘입어 &#x27;C# 스타터&#x27;가 출간되었습니다. 좋은 책이 나올 수 있도록 애써주신 많은 분들께 감사의 말씀을 드립니다. 아래는 홍보영상이고요. 구매는 아래 링크를 참고해주세요. 많은 관심 부탁드립니다~ ^^ [YouTube 홍보 영상] https://youtu.be/f0zST_RJYtA [도서 구매] https://book.naver.com/bookdb/book_detail.naver?bid&#x3D;21259289

파이썬 함수 (function) (2) [내부링크]

매개변수의 사용 앞에서 다룬 것처럼 함수는 외부와의 상호작용 없이 함수 단독으로 특정 기능을 수행할 수 있다. 하지만 원한다면 외부의 입력값에 따라 서로 다른 결과물을 도출하도록 만들 수도 있다. 이렇게 외부로부터 입력되는 값을 매개변수(paramete) 혹은 인수(argument)라고 부르며, 다음과 같이 정의한다. 매개변수를 몇 개까지 사용할 수 있는지에 대한 제한은 없다. 다만 여러 개의 매개변수를 사용할 때는 각각 콤마(,)로 구별해주기만 하면 된다. 매개변수의 자료형 지정 함수로 전해지는 매개변수의 자료형을 미리 정할 수도 있는데, 이를 위해서는 매개변수를 정의할 때 매개변수의 이름 뒤에 &#x27;: 자료형&#x27;을 적어준다.......

파이썬 함수 (function) (3) [내부링크]

인수 전달의 순서 함수에 인수값을 전달할 때는 함수에 정의된 매개변수의 순서를 그대로 따라야 하는 것이 원칙이다. 하지만 매개변수의 이름을 알고 있다면 이 순서와 상관없이 인수를 넘겨줄 수도 있다. &#x27;key &#x3D; value&#x27; 형태로 전달하기 때문에 이를 &#x27;키워드 인수(Keyword Argument)&#x27;라고 부른다. 매개변수의 수를 알 수 없을 때 키워드 인수 (Keyword Argument) 전달 함수에 전달되는 인수의 수를 미리 정할 수 없을 때 우리는 매개변수 이름 앞에 &#x27;*&#x27; 기호를 삽입했었다. 같은 이치로, 키워드 인수를 사용하는 경우에 전달되는 인수의 수를 미리 정할 수 없다면 &#x27;**&#x27; 기호를 매개변수의 이름 앞.......

파이썬 함수 (function) (4) [내부링크]

return 명령문 앞서 변수는 데이터의 값을 저장하는 반면 함수는 데이터를 가공한다고 말한 바 있다. 하지만 지금까지의 방법으로 데이터의 가공이 어떻게 이루어지는지 이해하기 어렵다. 함수가 데이터를 가공했다면 그 결과값을 받을 수 있어야 하기 때문이다. 이처럼 함수에 의해 연산되고 처리된 결과값을 받으려면 다음과 같이 &#x27;return&#x27; 명령문을 사용한다. 다음 코드는 두 개의 정수값을 입력받아 크기를 비교하고 있다. 앞의 코드를 실행하면 입력된 두 개의 정수 중 더 큰 값을 가진 것만 돌려줄 것이다. 여기서 눈여겨 볼 점은 입력된 두 개의 수가 같은 경우인데, 코드에 명시한 &#x27;print( )&#x27;문이 동작하지 않는다는.......

파이썬 람다 함수 (lambda function) [내부링크]

파이썬에서 함수를 정의하는 방법은 &#x27;def&#x27; 키워드 외에 &#x27;lambda&#x27; 키워드를 사용하는 방법이 있다. &#x27;lambda&#x27; 키워드를 사용하는 경우에도 필요한 만큼의 매개변수(parameter)를 가질 수 있지만, 명령문은 오직 한 개만 가질 수 있다. 즉, 매우 간소한 함수의 정의 방식으로 여러 줄에 걸친 명령문을 가진 함수의 구성에는 사용할 수 없다. 별도의 함수명을 가지지 않기 때문에 &#x27;익명 함수(anonymous function)&#x27;이라고도 부르며, 이러한 특징 때문에 람다 함수는 보통 변수의 값에 할당하는 방식을 사용한다. 그리고 함수의 호출은 변수를 통해 이루어 지며, 이를 통해 변수를 함수처럼 사용할 수 있다. 람.......

파이썬 전역변수와 지역변수 [내부링크]

전역변수 vs. 지역변수 파이썬에서 사용하는 변수는 자신을 호출할 수 있는 범위(scope)에 따라 전역변수(global variable)과 지역변수(local varibale)로 구별한다. 그리고 이것은 함수와 밀접한 관계를 가진다. 함수의 코드 블럭 안에서 선언한 변수는 일반적으로 그 블록 안에서만 유효하기 때문에 해당 함수 밖에서 접근할 수 없다. 이런 변수를 &#x27;지역변수(local variable)&#x27;라고 부른다. 그에 반해 함수의 밖에서 선언한 변수는 함수의 안과 밖에서 모두 접근할 수 있고, 이런 변수를 &#x27;전역변수(global variable)&#x27;라고 부른다. 즉, 지역변수는 자신을 사용하는 함수 안에서 선언하며, 전역변수는 모든 함수의 밖에서 선.......

객체지향 프로그래밍 [내부링크]

객체지향 프로그래밍(OOP: Object Oriented Programming)이란, 프로그램을 단순히 데이터와 처리라는 두 개의 축으로 보는 것이 아니라, 하나의 프로그램을 여러 개의 독립된 객체들로 구성하고, 그 객체들이 상호작용할 수 있도록 만드는 프로그래밍의 기법이다. 이를 위해 각각의 객체는 저마다의 속성(변수)과 행동(메소드)를 가진다. 다시 말해, 객체지향 프로그래밍을 한다는 것은 필요한 객체의 수와 종류를 정하고, 각 객체가 가져야 하는 속성과 행동, 그리고 상호작용의 방법을 정의하는 것을 말한다. 학생관리 프로그램을 예로 들어보자. 학생관리 프로그램을 만들기 위해서는 먼저 선생님과 학생이라는 두 개의 객체가 필요할 것이다.......

파이썬 클래스 (class) [내부링크]

파이썬은 객체지향 프로그래밍 언어를 지원한다. 그리고 객체의 속성(변수)과 행동(메소드)은 &#x27;클래스(class)&#x27; 안에 정의한다. 즉, 객체의 구조와 기능을 설계한 것이 클래스이며, 따라서 클래스는 객체지향 프로그래밍의 기본 단위다. 클래스 선언 클래스를 선언할 때는 &#x27;class&#x27; 키워드를 사용하며, 다음과 같은 구문 규칙을 따른다. 클래스 객체 생성 클래스의 객체를 생성하기 위해서는 다음과 같이 외부 변수에 클래스를 할당하는 방식을 사용한다. 이때 클래스 이름 뒤에 반드시 괄호( ) 표시를 넣어주어야 한다. 그리고 이렇게 생성된 클래스의 객체를 &#x27;인스턴스(instance)&#x27;라고 부른다. 클래스의 선언은 함.......

파이썬 리스트 (List) (2) [내부링크]

자료의 삭제 리스트에 데이터를 추가할 수 있는 것처럼, 이미 존재하는 데이터를 삭제할 수도 있다. 리스트에서 데이터를 삭제할 때는 필요에 따라 다음 네 가지 메소드(method) 중 하나를 사용할 수 있다. 위에서 보는 것처럼 특정 위치에 있는 데이터를 삭제하기 위해서는 인덱스(index)를 사용한다. 하지만 인덱스를 없이 &#x27;del&#x27; 키워드만 사용하면 리스트 자체를 삭제한다. 이것은 리스트 안에 있는 데이터만을 삭제하는 &#x27;clear&#x27;이나 &#x27;remove&#x27;와는 다른 것이다. 예제 코드를 통해 직접 비교해보자. 위에서 보다시피, &#x27;remove( )&#x27; 메소드는 삭제하고 싶은 데이터값이 무엇인지 직접 입력하게 된다. 단.......

파이썬 리스트 (List) (3) [내부링크]

형변환 (type casting) 문자열, 튜플, 집합, 딕셔너리 등 시퀀스에 속하는 자료는 &#x27;생성자(constructor)&#x27;를 이용하여 간단하게 리스트로 형변환을 할 수 있다. 이를 위해서는 괄호( ) 안에 리스트로 변환하고자 하는 시퀀스를 넣어주면 된다. for 문의 활용 이미 공부한 바와 같이 &#x27;for 문&#x27;은 리스트나 튜플같은 시퀀스에 특화된 반복문이다. 이 for 문을 이용하여 리스트 안에 있는 데이터를 순차적으로 추출 혹은 출력할 수 있다. 기타 리스트 관련 메소드 앞에서 공부한 것 외에도 리스트에 적용할 수 있는 다양한 메소드가 제공된다. 앞 코드에서 특히 눈여겨 볼 점은, &#x27;print(list_4.index(&#x27;C&#x27;, 1, 2))&.......

파이썬 튜플 (Tuple) (1) [내부링크]

튜플(tuple)은 리스트와 마찬가지로 여러개의 데이터를 하나의 변수에 저장할 때 사용하는데, 다음과 같은 면에서 리스트와 닮았다. 튜플을 선언할 때는 소괄호( )를 사용하며, 저장할 각각의 데이터는 콤마(,)로 구분한다. 이처럼 서로 닮아있는 튜플과 리스트에는 아주 중요한 차이점이 하나 있다. 그것은 바로, 리스트가 가변적(mutable)인 것과 달리 튜플은 불변적(immutable)이라는 사실이다. 즉, 한 번 만들어진 튜플은 그 안에 저장한 데이터를 수정하거나 삭제할 수 없고, 새로운 데이터를 추가할 수도 없다는 뜻이다. 이 가변성과 불변성이 중요한 이유는 메모리 사용의 효율성 때문이다. 데이터를 자유자재로 증가시킬 수 있으며 저장.......

파이썬 튜플 (Tuple) (2) [내부링크]

튜플의 선언 튜플을 선언할 때는 저장한 데이터를 괄호( )로 묶어주는 것이 원칙이지만, 이것은 강제적인 것이 아니다. 즉, 다음과 같이 괄호 없이 선언해도 파이썬은 이것을 튜플로 간주할 것이다. 다만 데이터가 전혀 없는 공백 리스트와 공백 튜플을 선언하는 것은 가능하지만, 리스트와 달리 튜플은 1개의 데이터만을 갖도록 선언할 수는 없다. 자료의 접근 튜플에 저장된 각각의 데이터에 접근하는 방법은 &#x27;인덱스(index)&#x27;를 사용하는 것이다. 튜플명 뒤에 &#x27;대괄호[ ]&#x27;를 적고, 그 안에 정수값을 넣어주면 된다. 이때 첫 번째 데이터를 가리키는 인덱스는 &#x27;0&#x27;이고, 두 번째 데이터는 &#x27;1&#x27; 즉, 정수.......

파이썬 튜플 (Tuple) (3) [내부링크]

자료의 수정 앞서 말한 것처럼 튜플을 불변적(immutable)이다. 따라서 선언하는 시점에 입력된 데이터값을 수정하거나 추가하는 것을 허용하지 않는다. 또한, 튜플에 저장된 데이터의 일부를 삭제하는 것 역시 불가능하다. 하지만 튜플을 통째로 삭제하는 것은 가능한데, 이를 위해서는 &#x27;del&#x27; 키워드를 사용한다. 튜플 연산 리스트와 마찬가지로, 튜플 역시 다음과 같은 연산을 할 수 있다. 이는 모든 시퀀스에 적용할 수 있는 연산인만큼 이미 공부해온 것과 다른 점은 없다. 형변환 (type casting) 리스트와 마찬가지로 튜플 역시 &#x27;생성자(constructor)&#x27;를 이용하여 간단하게 튜플로 형변환을 할 수 있다. 이를 위해서는 괄.......

파이썬 딕셔너리 (Dictionary) (1) [내부링크]

&#x27;딕셔너리(dictionary)&#x27; 역시 여러 데이터를 하나의 변수에 저장할 때 사용한다. 하지만 다음과 같은 면에서 리스트나 튜플과 구별된다. 딕셔너리를 만들기 위해서는 중괄호{ }를 사용하며, 딕셔너리 안에 저장할 데이터는 콤마(,)로 구분한다. 키값으로 문자(열), 정수, 실수, 부울린, 튜플 등이 사용될 수 있으며, 쌍을 이루는 데이터값에는 모든 자료형이 허용된다. 심지어 여러 다른 자료형을 함께 사용할 수도 있다. 단, 리스트와 딕셔너리는 키값으로 사용할 수 없다. 리스트나 튜플처럼 딕셔너리 역시 같은 자료형만 저장할 수도 있고, 서로 다른 자료형을 저장할 수도 있다. 그리고 다른 딕셔너리를 데이터로 가질 수 있으며, .......

파이썬 딕셔너리 (Dictionary) (2) [내부링크]

자료의 수정 딕셔너리에 저장된 데이터값은 수정할 수 있다. 그리고 데이터를 수정할 때는 해당 데이터와 쌍을 이루는 키를 통해 수정한다. 키값을 제시할 때는 딕셔너리명 뒤에 대괄호[ ]를 사용해야 한다. 위의 코드를 실행하면 학생의 이름과 이메일 주소가 달라진 것을 확인할 수 있다. 여기서 눈여겨 볼 점은 키값과 새로 입력할 데이터를 제시할 때 큰 따옴표(&#34;) 대신 작은 따옴표(&#x27;)를 사용했다는 사실이다. 이때 따옴표가 필요한 것은 키값과 데이터값이 모두 문자열이었기 때문이며, 파이썬에서 문자(열)을 표현할 때는 큰 따옴표를 사용하든 작은 따옴표를 사용하든 차이가 없다. 이 말은 다시, 키값이나 데이터값이 숫자형.......

파이썬 딕셔너리 (Dictionary) (3) [내부링크]

딕셔너리 연산 리스트나 튜플처럼 &#x27;+&#x27;나 &#x27;*&#x27; 연산을 적용할 수는 없지만, 딕셔너리에도 &#x27;in&#x27;과 &#x27;not in&#x27; 연산은 적용할 수 있다. 단, 데이터값(value)을 확인하는 것이 아닌 키값(key)의 존재 여부를 확인하는 것이다. dict( ) 생성자 &#x27;dict( ) 생성자&#x27;를 사용하여 딕셔너리를 만들 수도 있다. dict( ) 생성자를 사용하는 방법 중 다음 세 가지가 가장 일반적으로 사용된다. 여기서 주의할 점은 &#x27;대입연산자(&#x3D;)&#x27;를 사용하는 경우, 키값에 어떠한 인용부호도 붙여서는 안된다는 점이다. 키값이 문자(열)형이어도 인용부호를 사용하지 않는다. for 문의 활용 딕셔너리 역시 for .......

파이썬 집합 (Set) (1) [내부링크]

&#x27;집합(set)&#x27;은 리스트, 튜플, 딕셔너리와 함께 파이썬에서 제공하는 4개의 데이터 컬렉션(Data Collections) 중 하나다. 이미 다룬 리스트나 튜플과 마찬가지로, 집합 역시 여러 개의 데이터를 하나의 변수에 저장할 때 사용한다. 다만, 다음과 같은 면에서 리스트나 튜플과 차이점을 보인다. 집합을 선언할 때는 딕셔너리와 마찬가지로 중괄호{ }를 사용하며, 저장할 각각의 데이터는 콤마(,)로 구분한다. 딕셔너리와 다른 점은 &#x27;키(key):데이터(value)&#x27; 쌍으로 데이터를 입력하지 않는다는 것이다. 앞의 코드를 실행해보면, 처음 입력한 값과 출력되는 값의 순서가 달라진 것을 볼 수 있을 것이다. 이처럼 집합은 최초 입.......

파이썬 집합 (Set) (2) [내부링크]

자료의 접근 &#x27;집합(set)&#x27;은 정렬되지 않는 특성상 인덱스를 사용할 수 없다. 또한 딕셔너리와 같은 &#x27;키(key)&#x27;를 가지고 있지도 않다. 따라서 특정 데이터에 접근할 수 있는 방법은 없다. 다만 &#x27;for 문&#x27;을 이용해 전체 데이터에 순차적으로 접근할 수 있다. 또한, 집합이 특정 데이터를 포함하고 있는지 확인하고자 한다면 다음과 같은 연산자를 활용할 수 있다. 자료의 추가 이미 선언한 집합에 새로운 데이터를 추가하는 방법은 다음 두 가지 메소드 중 하나를 사용하는 것이다. 주의해야 하는 것은, 집합은 오직 불변형(immutable) 데이터만을 포함할 수 있다는 사실이다. 앞의 코드에서는 정수형 데이터 &#x27;.......

파이썬 멤버십 연산자 (membership operator) [내부링크]

멤버십 연산자 (membership operator) 우리는 이미 &#60;문자열 데이터 (2)&#62;에서 멤버십 연산자를 사용해보았다. 그러나 멤버십 연산자는 문자열에만 적용할 수 있는 것이 아니다. 특정 &#x27;값&#x27;이 문자열, 리스트, 튜플, 집합, 혹은 딕셔너리에 존재하는지 확인하는데 두루 사용할 수 있다. 찾으려는 값이 존재한다면 &#x27;True&#x27;를 반환할 것이고, 존재하지 않는다면 &#x27;False&#x27;를 반환할 것이다. 위의 코드에서 눈여겨 볼 것은, 문자열(string) 데이터의 경우에는 문자열의 일부만 검색하는 것이 가능하지만, 리스트, 튜플, 집합의 경우에는 포함하고 있는 데이터의 일부분만 검색하는 것은 불가능하고 오직 데이터의 완.......

C# DLL 만들기 (라이브러리 구성) [내부링크]

흔히 &#x27;DLL 파일&#x27;이라고 불리기도 하는 &#x27;라이브러리(Dynamic Linked List: DLL)&#x27;는 재사용 가능한 범용 모듈을 말한다. 라이브러리(DLL)는 특정 프로그램을 위해서만 존재할 수도 있고 여러 다른 프로그램에서 함께 사용하기 위해 존재할 수도 있다. 예를 들어, 프린터로 출력을 내보내는 기능을 위해 출력 기능을 사용하는 모든 프로그램에서 각자 코딩을 하는 것은 매우 불필요하고 비효율적일 수 밖에 없다. 바로 이런 경우, 마이크로소프트사에서 제공하는 관련 DLL을 호출해서 사용하는 것이 바람직하다. 윈도우를 설치하면 마이크로소프트사에서 미리 만들어놓은 엄청한 수의 DLL 파일이 여러분의 컴퓨터에 설치되는데.......

파이썬 if 조건문 (conditional statement) [내부링크]

if 문 여러분이 코드를 작성했을 때, 코드 안의 모든 명령문은 순서대로 실행되는 것이 원칙이다. 하지만 이것은 모든 일의 순서가 이미 정해져 있을 때만 가능한 일일 뿐, 서로 다른 조건에 따라 각기 다른 명령문을 실행해야 한다면 이런 코드의 실행 규칙은 쓸모가 없어진다. 예를 들어, 사용자의 입력값에 따라 서로 다른 메시지를 출력해야 하는 경우를 생각해볼 수 있다. 이처럼 코드의 실행 조건을 제시한 뒤, 조건에 만족하는 여부에 따라 서로 다른 명령문이 작동하도록 만드는 것이 바로 &#x27;조건문(conditional statement)&#x27;이고, 파이썬은 이를 위해 &#x27;if 문&#x27;을 제공한다. if 문의 작성 규칙 if 문을 작성할 때 특히.......

파이썬 while 반복문 (while loop) [내부링크]

반복문 (loop statement) 주어진 조건이 &#x27;참&#x27;일 때 한 번만 실행하는 &#x27;if 문&#x27;과 달리, 반복문(loop statement)을 사용하면 조건이 &#x27;참&#x27;인 동안 제시한 명령문을 반복해서 실행할 수 있다. 이를 위해 파이썬은 &#x27;while 문&#x27;과 &#x27;for 문&#x27; 두 가지를 제공하고 있다. while 문 (while loop) while 문은 주어진 코드 블록을 실행하기 전에 먼저 &#x27;조건식&#x27;의 참/거짓 여부를 확인하며, 조건식이 &#x27;참(True)&#x27;인 경우에만 제시한 코드 블록을 실행한다. 그리고 주어진 모든 명령문을 실행한 뒤에는 다시 돌아와 조건식이 여전히 &#x27;참&#x27;인지 확인하는 과정을 반복한다. while 문.......

파이썬 for 반복문 (for loop) [내부링크]

for 문 대부분의 프로그래밍 언어에서 while 문과 for 문의 차이는 분명치 않다. while 문으로 만들 수 있는 것은 대부분 for 문으로도 구현할 수 있기 때문에 둘 중 무엇을 사용하느냐는 어디까지나 개발자의 취향에 맡겨진다 해도 과언이 아니다. 하지만 파이썬의 for 문은 while 문과는 다른 것이다. 파이썬의 &#x27;for 문 (for loop)&#x27;는 하나의 데이터값이 아닌 일련의 데이터를 가진 자료형 즉, 문자열, 리스트, 튜플과 같은 &#x27;시퀀스(sequence)형&#x27;에 특화된 반복문이다. for 문에 포함된 명령문은 시퀀스에 포함된 멤버를 대상으로 한다. 따라서 while 문에서와 같은 별도의 조건식을 필요로 하지 않는다. 다시 말해, &#x27.......

C# 파일 및 폴더 제어 [내부링크]

&#x27;System.IO 네임스페이스&#x27;는 파일과 폴더(디렉터리)를 생성, 삭제하고, 파일로부터 자료를 읽거나 쓰는 등의 다양한 기능을 처리하는 클래스와 함수, 그리고 프로퍼티를 제공한다. 가장 많이 사용되는 파일 및 폴더 관련 클래스는 다음과 같다. 다음은 각각의 클래스에서 가장 빈번하게 사용하는 함수와 프로퍼티들이다. 이제 위에서 말한 몇몇 함수를 사용하는 프로그램을 만들어 보자. System.IO에서 제공하는 파일에 관련된 모든 메소드는 주어진 기능을 수행한 후에 자동으로 파일을 닫아주기 때문에 매우 편리하다. 이미 존재하는 파일에 내용을 추가하고자 한다면 &#x27;AppendText( )&#x27; 함수를 사용한다. 아래 프로그램은 이.......

파이썬 리스트 (List) (1) [내부링크]

&#x27;리스트(list)&#x27;는 여러 데이터를 하나의 변수에 저장할 때 사용한다. 한 학급에 있는 모든 학생들의 이름을 저장하는 경우를 생각해보자. 이때 각각의 학생마다 따로 변수를 만든다면 불필요한 코딩이 많아질 뿐만 아니라, 결국 오류의 가능성이 높아질 것이다. 바로 이런 경우 리스트를 사용하면 위와 같은 문제를 해결할 수 있다. 리스트를 만들기 위해서는 대괄호[ ]를 사용하며, 리스트 안에 저장할 데이터는 콤마(,)로 구분한다. 위에서 보는 것처럼 리스트에 저장하는 데이터는 모두 같은 자료형일 수도 있고, 서로 다른 자료형일 수도 있다. 심지어는 또 다른 리스트를 데이터로 가질 수 있을 뿐만 아니라, 비어있는 리스트의 생.......

SQL 자료형 (data types) [내부링크]

MariaDB에서 허용하는 데이터의 유형은 매우 폭이 넓기 때문에 모든 것을 설명하기는 어렵고, 여기서는 가장 대표적으로 사용되는 유형만 소개하도록 하겠다. 문자형 데이터 숫자형 데이터 날짜와 시간 데이터 바이너리형 데이터 기타 자료형 copyright 2021 all rights reserved by Kijun. 본 블로그의 모든 글과 그림은 저작권의 보호를 받습니다. 무단 도용이나 배포를 금합니다. 도움이 되셨다면 &#60;공감&#62;과 &#60;친구 추가&#62;를 잊지 마세요~ ^^

파이썬 사용자 입력 및 출력 [내부링크]

사용자 입력 받기: input( ) 대부분의 프로그램은 외부의 입력 없이 스스로 작동할 수 없다. 결국, 사용자의 입력을 기반으로 주어진 연산을 하는 것이 프로그램의 목적이라고 할 수 있다. 따라서 우리는 사용자의 입력을 받을 수 있어야 하는데, 이때 사용하는 것이 &#x27;input( )&#x27; 함수다. 위의 코드는 사용자로부터 정수를 입력받아 그것을 그대로 출력할 것이다. 그럼에도 불구하고 다음과 같은 코드는 뜻밖의 결과물을 반환할 것이다. 예를 들어, 첫 번째 정수에 &#x27;1&#x27;을 입력하고 두 번째 정수에 &#x27;2&#x27;를 입력한다면 우리는 당연히 &#x27;3&#x27;이라는 반환값을 기대할 것이지만, 위의 프로그램은 &#x27;12&#x27;라.......

파이썬 문자열 포매팅 (string formatting) [내부링크]

출력문을 작성할 때 가장 단순한 방법은 다음과 같이 print( ) 함수 안에 출력하고자 하는 값이나 변수를 콤마(,)로 나열해주는 것이다. %연산자 이와는 별개로 파이썬은 C언어 스타일의 출력방식을 지원한다. &#x27;%연산자&#x27;를 사용하는 것인데, 다음과 같이 print( )문을 작성하면 &#x27;%&#60;형지정자&#62;&#x27;의 위치에 데이터 혹은 변수의 값이 순서대로 삽입되는 방식이다. 단, 대체하려는 출력값이 하나 뿐인 경우에는 괄호( )를 사용하지 않아도 되는데, 괄호로 감싸주지 않을 때는 반드시 인용부호(&#34; &#34;)로 감싸고 있는 문자열 뒤에 오는 &#x27;%&#x27;와 출력하려는 데이터값 사이에 띄어쓰기가 있어야 한다. 다음 코드.......

파이썬 정수의 표현 (integer) [내부링크]

파이썬은 수(number)을 표현하기 위해 정수(int), 실수(float), 복소수(complex)의 세 가지를 제공하고 있으며, 참과 거짓을 반환값으로 가지는 부울린(bool) 역시 큰 범주에서는 숫자형 데이터로 볼 수 있다. 정수의 표현 &#x27;정수(integer)&#x27;란, &#x27;0&#x27;을 포함하여 소수점을 포함하지 않는 모든 양수와 음수를 가리킨다. 파이썬이 다른 프로그래밍 언어와 다른 점 중 하나는 바로 &#x27;정수형(int)&#x27; 데이터에 대한 정의일 것이다. 다른 언어들의 경우 수를 표현할 수 있는 최대범위가 미리 정해져 있는 데 비해, 파이썬은 그 범위를 정하고 있지 않다. 아무리 큰 수를 표현해도 그 수가 &#x27;정수&#x27;라면 오류가 발생하.......

파이썬 실수와 복소수 (float & complex) [내부링크]

실수의 표현 &#x27;실수(floating point numbers)&#x27;는 소수점이 포함된 음과 양의 수를 말하며, 과학분야에서 흔히 사용하는 &#x27;e&#x27;표기법을 사용할 수 있다. 정밀도에 따라 &#x27;double&#x27;과 &#x27;float&#x27;를 구별하는 다른 프로그래밍 언어와 달리 파이썬은 &#x27;float&#x27;형 하나만 사용한다는 점이 흥미롭다. 그 이유는 파이썬의 &#x27;float&#x27;가 표현할 수 있는 수의 최대범위가 사용자의 컴퓨터 성능에 의해 결정되기 때문일 것이다. 즉, 파이썬에서 미리 정해놓은 최대 표현 범위가 없다는 말이다. 만약 사용자가 대단히 큰 수를 표현하려고 한다면 파이썬을 이에 대한 반환값을 과학적 표기법으로 보여줄 것이.......

파이썬 산술 연산 (arithmetic operation) [내부링크]

파이썬은 기본적으로 다음과 같은 산술 연산을 지원한다. 그러나 산술 연산의 결과값이 가지는 자료형은 피연산자의 구성에 따라 다음과 같이 달라진다는 사실을 기억해야 한다. 실제 프로그램을 만들 때는 반환값의 정확성 뿐만 아니라, 해당 값이 가지는 자료형도 매우 중요한 경우가 많기 때문이다. 산술 연산은 숫자형 데이터(numeric data)를 대상으로 사용할 수 있으며, 이들 사이에는 수학에서 사용하는 것과 동일한 연산의 우선순위가 존재한다. 즉, 제곱이 가장 높은 우선순위를 가지며, 그 다음에 곱셈, 나눗셈이, 그리고 덧셈이나 뺄셈 순서의 우선순위를 가진다. 그리고 나머지 계산(modulus)과 버림 나눗셈은 곱셈, 나눗셈과 같은 우.......

파이썬 컴파운드 연산자 (compound operator) [내부링크]

대입 연산자와 컴파운드 연산자 우리가 지금까지 사용해왔던 &#x27;&#x3D;&#x27; 기호의 정확한 명칭은 &#x27;대입 연산자(assignment operator)&#x27;다. 이 대입 연산자는 변수에 값을 배정할 때 사용하는데, 산술 연산자(arithmetic operator)와 하나로 묶어 사용할 수도 있다. 이렇게 대입 연산자와 산술 연산자를 함께 묶어 사용하는 것을 &#x27;컴파운드 연산자(compound operator)&#x27;라고 부른다. 컴파운드 연산자는 반복문을 구성할 때 특히 유용하게 사용하기 때문에, 그 쓰임새를 확실하게 익혀두어야 한다. copyright 2021 all rights reserved by Kijun. 본 블로그의 모든 글과 그림은 저작권의 보호를 받습니다. 무단 도용이.......

파이썬 비교 연산자와 논리 연산자 (comparison and logical operators) [내부링크]

비교 연산자 (comparison operator) 비교 연산자는 두 개의 데이터값을 대상으로 크기를 비교할 때 사용한다. 비교 연산자는 if 문이나 while 문과 같은 조건문이나 반복문에서 특히 유용하게 사용하며, 주어진 조건의 &#x27;참(True)&#x27;과 &#x27;거짓(False)&#x27; 여부만 확인하기 때문에 결과값은 항상 &#x27;부울린형(boolean)&#x27;이 된다. 논리 연산자 (logical operator) 논리 연산자는 두 개 이상의 연산식의 참(True)과 거짓(False)을 한 번에 검사하기 위해 사용하며, 참과 거짓을 검사하는 만큼 결과값은 항상 부울린(boolean)형이다. 위의 코드에서 눈여겨 볼 점은, 논리 연산자를 사용할 때 참/거짓을 검사해야 하는 각각의 연.......

파이썬 식별 연산자 (identity operator) [내부링크]

식별 연산자 (identity operator) 식별 연산자는 두 객체(object)의 &#x27;id&#x27;가 같은지 확인하기 위해 사용한다. 즉, 동일한 &#x27;객체&#x27;인지 확인하는 것으로 파이썬은 다음 두 가지를 제공한다. 위의 설명을 보면 식별 연산자 &#x27;is&#x27;와 &#x27;not is&#x27;는 얼핏 비교 연산자 &#x27;&#x3D;&#x3D;&#x27;과 &#x27;!&#x3D;&#x27;처럼 보이기도 한다. 하지만 식별 연산자 &#x27;is&#x27;와 &#x27;not is&#x27;의 경우 객체의 &#x27;id&#x27;를 비교하는데 비해, 비교 연산자 &#x27;&#x3D;&#x3D;&#x27;와 &#x27;!&#x3D;&#x27;은 오직 해당 객체가 가지는 &#x27;값&#x27;만을 비교한다는 면에서 전혀 다른 결과값을 반환한다. 위.......

C# 리팩토링 (refactoring) [내부링크]

다중 소스 파일의 구성 지금까지 우리는 대부분 하나의 소스 파일(Program.cs)만을 이용해서 프로그램을 만들어왔다. 하지만 이것은 비효율적인 방법이다. 수많은 클래스와 함수들을 하나의 소스 파일 안에 모두 담는 것은 프로그램의 코드를 읽기 어렵게 만들고 결국 유지관리의 어려움으로 이어질 수밖에 없다. 따라서 하나의 프로그램에서 독립시킬 수 있는 기능들을 최대한 따로 분리해서 구성하는 것이 바람직하다. 비주얼 스튜디오를 사용하면 이와 같은 작업을 손쉽게 할 수 있다. 먼저 새로운 프로젝트를 시작하여 다음과 같이 소스 파일을 작성하자. 단, 여기서 주의해야 할 것은 여러 소스 파일을 하나로 묶어줄 때는 같은 이름의 네임.......

파이썬 다중 변수값의 할당과 출력 [내부링크]

다중 변수값의 할당 앞선 포스팅에서 언급한 대로, 파이썬에서 변수의 자료형은 어떤 데이터를 할당하느냐에 따라 그때 그때 정해지고 또 달라진다. 참으로 편리한 방법이 아닐 수 없다. 이에 더해 파이썬은 한 번에 여러 변수에 데이터값을 할당하는 것도 허용한다. 다음과 같은 방법으로 서로 다른 변수에 같은 값을 할당할 수 있을 뿐 아니라, 변수 각각에 서로 다른 값을 할당할 수도 있다. 뿐만 아니라, 하나의 변수에 할당된 값을 다른 변수에 그대로 복사하여 전달할 수도 있다. 이때 새로운 값을 전달받을 변수에 이미 어떤 데이터가 저장되어있었다면 그 데이터는 지워지고 새로운 값이 그 자리를 대신하게 될 것이다. 변수값의 출력 변.......

파이썬 자료형(data types) [내부링크]

프로그래밍을 하는 데 있어 &#x27;자료형(data types)&#x27;은 매우 중요한 의미를 가진다. 데이터가 어떤 자료형에 속하느냐에 따라 해당 데이터를 가지고 할 수 있는 일과 할 수 없는 일이 결정되기 때문이다. 사용자의 이름을 저장하기 위해서는 문자열 데이터가 필요하지만, 문자열 데이터를 대상으로 산술연산을 할 수 없는 것이 그 예시라 할 수 있다. 따라서 자신이 사용하는 프로그래밍 언어에서 허용하는 자료형에는 어떤 것이 있으며, 각각의 특징과 활용법을 아는 것이 곧 그 프로그래밍 언어를 아는 것이라고 생각할 수 있을 정도다. 파이썬에서 가장 기본이 되는 자료형에는 다음과 같은 것들이 있다. 다음 시간부터는 각각의 자료.......

파이썬 문자열 데이터 (1) [내부링크]

문자열 혹은 텍스트 데이터, 하나 혹은 그 이상의 유니코드 문자를 포함하는 데이터값을 의미한다. 즉, 다른 프로그래밍 언어에서 볼 수 있는 오직 한 글자를 위한 문자열 자료형이 따로 존재하지 않는다는 뜻이다. 파이썬에서는 글자수와 상관없이 모든 문자를 &#x27;문자열형&#x27; 자료 한 가지로 처리한다. 이러한 문자열형 데이터는 다음 세 가지 방법으로 표현할 수 있다. 위에서 보는 것처럼, 작은 따옴표로 감싼 데이터값은 큰 따옴표를 포함할 수 있으며, 큰 따옴표로 감싼 데이터값은 작은 따옴표를 포함할 수 있다. 하지만 작은 따옴표로 감싼 데이터값에 다시 작은 따옴표를 포함하는 것과 큰 따옴표로 감싼 데이터값에 다시 큰 따옴.......

C# 네임스페이스(namespace) [내부링크]

새로운 프로젝트를 시작하면 다음과 같은 코드가 자동으로 생성된다는 사실을 알고 있을 것이다. 자동으로 생성되는 위의 코드에서 여러분이 정한 프로젝트의 이름은 &#x27;namespace&#x27; 뒤에 나타나게 된다. 이를 통해 알 수 있는 것은, &#x27;네임스페이스&#x27;가 곧 프로젝트라는 사실이다. 아직 이해가 부족하다면 다음과 같은 경우를 생각해보자. 여러분이 &#x27;집&#x27;을 짓는다고 가정할 때, 하나의 집에는 여러 개의 방과 화장실, 거실, 그리고 부엌 등이 존재할 수 있다. 그리고 각각의 방과 화장실, 부엌은 모두 저마다의 기능을 가지고 있다. 이때 방과 부엌 등을 &#x27;네임스페이스&#x27;라고 생각하자. 또 각각의 방에는 조.......

파이썬 명령문(statement) [내부링크]

파이썬에서 &#x27;줄바꿈&#x27;은 곧 명령문의 끝을 의미한다. 즉, 하나의 명령문은 한 줄에 기록하는 것을 원칙으로 하는 것이다. 아래 프로그램은 세 개의 명령문으로 구성되었다. 얼핏 직관적이고 편리해보이는 이 규칙에는 한 가지 약점이 있는데, 그것은 한 명령문 안에 다양한 조건이 들어있거나 길이가 지나치게 긴 경우, 코드의 가독성이 떨어진다는 점이다. 다음 코드를 보자. 위 코드의 if 문에는 세 개의 조건이 들어있다. 이것을 모두 한 줄에 기록할 수도 있겠지만, 좀 더 읽기 쉬운 코드를 작성하기 위해 다음과 같이 각각의 조건을 서로 다른 줄에 제시할 수도 있다. 이를 위해 사용하는 것이 바로 역슬레쉬(\)인데, 역슬레쉬(\)를.......

C# 솔루션과 프로젝트 (solution & project) [내부링크]

우리는 지금까지 수많은 프로젝트를 만들어왔다. 그리고 각각의 프로젝트는 각자 실행 가능한 프로그램으로 컴파일했었다. 그렇다면 우리가 흔히 말하는 &#x27;프로그램&#x27;이 &#x27;프로젝트&#x27;인 것인가? 그렇지 않다. 닷넷의 모든 프로젝트는 하나의 &#x27;솔루션(solution)&#x27;으로 존재하기 때문에, 우리가 &#x27;프로그램&#x27;이라고 부르는 것은 &#x27;솔루션&#x27;이다. 그렇다면 &#x27;솔루션&#x27;은 무엇일까? 솔루션은 프로젝트를 담는 그릇이다. 하나의 솔루션은 필요에 따라 독립적인 기능을 수행하는 한 개 혹은 여러 개의 프로젝트로 이루어질 수 있고, 각각의 프로젝트들은 개별적으로 또는 필요에 따라 상호작용을 하.......

파이썬 문자열 데이터 (2) [내부링크]

문자열 길이 구하기 : len( ) 문자열의 길이를 구하기 위해서는 &#x27;len( )&#x27; 함수를 사용하면 된다. 파이썬의 내장 함수(built-in function) 중 하나인 &#x27;len( )&#x27;을 사용하기 위해서는 다음과 같이 문자열 혹은 문자열 변수를 len( ) 함수의 인자로 넣어주면 된다. 문자열 인덱싱 &#x27;문자열(string)&#x27;은 여러 단일 문자들을 순서대로 묶어놓은 하나의 조합이다. 따라서 문자열을 다시 단일 문자로 분리하거나 특정 문자만 추출하는 것도 가능하다. 이를 위해서는 몇 번째 문자를 추출할 것인지 지정해줄 필요가 있는데, 이때 사용하는 것인 바로 &#x27;인덱싱(indexing)&#x27;이다. 인덱싱을 하기 위해서는 다음과 같이 변.......

C# 프로젝트 추가 [내부링크]

프로그램을 작성하다가 새로운 프로젝트를 추가하면 그것은 기본적으로 같은 솔루션 안에 담기게 된다. 그럼 이미 존재하는 솔루션에 새로운 프로젝트를 추가해보도록 하자. 솔루션 탐색기에서 솔루션을 선택하고 마우스 오른쪽 버튼을 클릭한 뒤 『추가』를 선택하고, 여기서 다시 『새 프로젝트』를 선택하도록 하자. 이어지는 화면에서 『콘솔 앱』을 선택한 뒤 &#x27;HelloWorld2&#x27;라는 이름의 새 프로젝트를 만들어주자. 그리고 나면 다음과 같이 솔루션 탐색기창에 &#x27;HelloWorld2&#x27;가 추가된 것을 볼 수 있을 것이다. 하지만 이렇게 새 프로젝트를 추가했다고 해서, 이 둘이 무조건 하나로 묶이는 것은 아니다. &#x27;HelloWor.......

C# 예외처리 (exception handling) (1) [내부링크]

프로그램을 실행하다 보면 예상치 못한 상황이 발생할 수 있다. 흔히 &#x27;버그(bug)&#x27;라고 불리는 이러한 예외상황은 주로 다음과 같은 경우에 발생한다. 물론 프로그램이 오류를 일으키는 경우는 셀 수 없지 많지만, 위 세 가지가 가장 일반적으로 나타나는 예외상황이다. 따라서 잘 짜여진 프로그램을 만들고 싶다면 위 세 가지 상황에 특히 유념하면서 코드를 작성해야 한다. 이러한 예외상황에 대처하기 위해 C#은 try-catch, finally 문, 그리고 throw 문을 제공한다. 이번 포스팅에서는 try-catch 문만 다루고, 다음 시간에 finally 문과 throw 문을 다루도록 하겠다. try-catch 문 위 프로그램을 실행할 때 사용자가 &#x27;정수(int.......

C# 예외처리 (exception handling) (2) [내부링크]

finally 문 catch 문 뒤에 &#x27;선택적&#x27;으로 사용할 수 있는 &#x27;finally 문&#x27;은 예외상황의 발생과 상관없이 무조건 실행된다. &#x27;선택적&#x27;이라고 말한 것처럼, finally 문은 반드시 존재해야 하는 것이 아니다. 하지만 예외 상황이 발생했을 때 낭비되는 리소스를 반환하고자 한다면 finally 문이 그 역할을 훌륭하게 해낼 수 있다. 또한, 응용하기에 따라 다양한 용도로 사용할 수 있는 것이 finally 문이기도 하다. 다음 프로그램에서 finally 문은 &#x27;가비지 컬렉션(garbage collection)&#x27;을 실행해 더 이상 사용하지 않는 리소스를 반환함과 동시에 새로운 계산을 시작하도록 하고 있다. throw 문 try-catch 문.......

파이썬 형변환 (type casting) [내부링크]

&#x27;형 변환(type conversion)&#x27;은 흔히 &#x27;캐스팅(casting)&#x27;이라고 부르는데, 이미 존재하거나 사용자에 의해 입력 받은 데이터를 프로그램에 요구하는 형태로 바꾸는 것을 말한다. 캐스팅에는 &#x27;암시적인(implicit) 방법&#x27;과 &#x27;명시적인(explicit) 방법&#x27; 두 가지가 존재한다. 암시적 캐스팅 (impilict casting) 암시적 캐스팅이란, 캐스팅을 위한 별도의 코딩을 하지 않은 채 파이썬 인터프리터에게 형 변환을 맡기는 것이다. 변수에 할당되는 자료에 따라 자동으로 변수의 자료형이 결정되는 것이 암시적 캐스팅의 대표적인 예시라고 생각할 수 있다. 뿐만 아니라, 변수 사이의 연산을 할 때 결과값이 더 큰 메.......

파이썬 변수 이름 짓기 [내부링크]

변수의 이름은 여러분이 원하는 대로 지을 수 있다. &#x27;x&#x27;나 &#x27;y&#x27;처럼 한 글자를 가지는 이름이 될 수도 있고, 여러 단어를 조합해 &#x27;user_name&#x27;이나 &#x27;user_address&#x27;와 같이 그 용도를 쉽게 알아볼 수 있도록 지을 수도 있다. 변수의 이름을 어떻게 짓느냐는 개발자인 여러분의 몫이지만 그 쓰임새를 쉽게 짐작할 수 있는 이름을 사용하는 것이 바람직하다. 대부분의 프로그램을 한 번의 코딩으로 완성되기 어렵고, 여러 번의 수정 작업을 거치게 마련인데 이해하기 어려운 변수명을 가지고 있다면 프로그램의 유지 보수에 어려움이 있을 수 있기 때문이다. 이와 별개로 파이썬에서 변수의 이름을 지을 때는.......

파이썬 들여쓰기 (indentation) [내부링크]

&#x27;들여쓰기(indentation)&#x27;는 명령문의 맨 앞에 필요에 따라 사용하는 빈 공간을 말하는데, 파이썬에서 이 들여쓰기는 특별한 의미를 가진다. 동일한 깊이를 가지는 코드들이 연속된 경우, 이것들을 하나의 묶음, 즉, 코드 블럭(code block)으로 간주하기 때문이다. 파이썬은 들여쓰기를 할 때마다 4칸을 권장하고 있다. 말로 설명하는 것보다, 예시를 통해 보면 이해하기 쉬울 것이다. 다음을 보자. 위의 코드에 보이는 두 개의 print 문은 모두 하나의 if 문 안에 존재하는 것으로 본다. if 문 아래에서 동일한 깊이로 들여쓰기가 되었기 때문이다. 따라서 &#x27;num1&#x27;이 &#x27;num2&#x27; 보다 큰 수인 경우 두 개의 print 문이.......

파이썬 변수 (variables) [내부링크]

변수(variable)는 데이터를 저장하는 &#x27;그릇&#x27;이다. 프로그램에 실행되는 동안 기억해야 하는 데이터 값을 별도의 이름으로 저장한 뒤, 이를 필요할 때마다 불러와 사용할 수 있도록 하는 장치다. 파이썬에서 변수를 사용하는 방법은 매우 간단하다. 변수의 이름을 정한 뒤 값을 배정하기만 하면 된다. 그리고 변수는 값이 배정되는 순간에 만들어진다. 다른 어떤 프로그래밍 언어에 비할 수 없는 간단한 방법이 아닐 수 없다. 심지어는 변수에 어떤 종류의 데이터를 담을지조차 미리 선언할 필요가 없다. 할당된 값이 무엇이냐에 따라 자동으로 변수의 자료형이 결정되기 때문이다. 위의 프로그램에서는 세 개의 변수가 사용되었다. nam.......

프로그래밍이란 [내부링크]

&#x27;컴퓨터 프로그래밍(computer programming)&#x27;을 이해하기 위해서는 먼저 &#x27;컴퓨터(computer)&#x27;가 무엇인지 생각해볼 필요가 있다. 편의상 &#x27;자전거&#x27;에 비유해보자. 자전거는 사실 이런저런 부품들을 조합해놓은 쇳덩어리에 지나지 않는다. 사람이 올라앉아 페달을 밟아야 자전거는 비로소 앞으로 나아갈 수 있다. 하지만 이것만으로는 충분치 않다. 원하는 방향으로 회전할 수 있어야 하고, 필요하다면 멈출 수도 있어야 한다. 즉, 우리의 요구에 맞게 조작할 수 있어야 자전거는 비로소 이동수단이라는 자신의 역할을 해낼 수 있다. 컴퓨터도 이와 다르지 않다. 사람이 컴퓨터에게 어떤 일을 시키기 전까지 컴퓨터는.......

데이터베이스와 SQL의 이해 [내부링크]

데이터베이스(database)란? 데이터베이스(database, 이하 DB)는 접근과 관리가 쉽도록 조직화한 데이터의...

MariaDB 설치 [내부링크]

본서는 여러분이 윈도우 운영체제 위에 설치된 MariaDB 서버에 접근할 수 있고, HeidiSQL을 사용한...

HeidiSQL을 통한 MariaDB 접근 [내부링크]

먼저 하이디SQL(HeidiSQL)을 실행시키도록 하자. 그러면 다음과 같이 &#x27;세션 관리자&#x27; 화면...

SQL SHOW DATABASES, CREATE DATABASE [내부링크]

SQL에서 사용되는 명령어는 &#x27;질의어(query)&#x27;라고 부른다. 데이터베이스에 저장된 데이터는 질...

SQL USE, CREATE TABLE, SHOW TABLES [내부링크]

USE &lt;데이터베이스 이름&gt; 데이터베이스 서버 안에는 하나의 DB만 존재할 수 있는 게 아니다. 수...

SQL SHOW COLUMNS, PRIMARY KEY [내부링크]

SHOW COLOMNS 선택한 테이블 안에 존재하는 열(column) 즉, 필드(field)의 정보를 보여준다. 다...

SQL DROP [내부링크]

DROP DROP은 이미 생성한 DB나 테이블을 삭제할 때 사용하는 질의어다. 데이터베이스(DB) 자체...

SQL SELECT [내부링크]

SELECT 질의어을 연습하기 위해 앞에서 삭제했던 DB와 테이블을 다시 만들도록 하겠다. SELEC...

SQL INSERT [내부링크]

INSERT INTO &lt;테이블 이름&gt; 테이블에 데이터를 입력하기 위해서는 다음과 같은 구문 규칙...

SQL SELECT DISTINCT [내부링크]

데이터를 좀 더 추가해보도록 하겠다. 다른 질의어를 보다 효과적으로 익히기 위해서는 더 많은 데이터가 ...

닷넷과 C# 소개 [내부링크]

.NET Framework (닷넷 프레임워크) 닷넷 프레임워크(이하 닷넷)는 2002년 마이크로소프트사에서 발표한...

C# 개발 환경 (IDE) 준비: 비주얼 스튜디오 (visual studio community edition) [내부링크]

프로그래밍 공부를 시작하는 데 있어 아주 중요한 것 중 하나는 자신에게 맞는 개발환경을 선택하는 것이다...

SQL LIMIT [내부링크]

SELECT &lt;열 이름&gt; FROM &lt;테이블 이름&gt; LIMIT &lt;자료의 수&gt; SQL 질의어...

C# Hello World! [내부링크]

첫 프로그램의 대명사는 뭐니 뭐니 해도 &#x27;Hello World!&#x27;일 것이다. 너무 유명한 프로그램인 만...

C# 자료형 (data type) [내부링크]

&#x27;자료형(data type)&#x27;이란, 프로그램에서 자료를 담는 형식을 말한다. 프로그래밍 언어마다 기본...

SQL ORDER BY [내부링크]

ORDER BY &lt;열 이름&gt; ORDER BY 연산자는 SELECT 문에 의해 반환되는 결과값을 정...

C# 변수 (variables) [내부링크]

변수(variable)의 선언 변수는 자료를 담는 &#x27;그릇&#x27;이며 &#x27;이름표&#x27;다. 프로그램에 실행...

SQL 다중 질의어 (Multiple Queries) [내부링크]

한 번에 하나의 질의어만 던지는 것도 가능하지만, SQL은 여러 질의어를 동시에 제시하는 것 역시 허용...

C# 사용자 입력 받기와 형 변환 [내부링크]

사용자 입력 받기 대부분 프로그램은 단순히 계산만 하는 것을 목적으로 하지 않는다. 사용자의 입력을 받...

SQL WHERE 조건문 [내부링크]

WHERE 조건문은 테이블에서 주어진 조건의 데이터만을 추출하는 질의문이다. WHERE 구문을 사용...

C# 주석 (comment) [내부링크]

주석은 프로그램의 코드에 설명을 추가하는 것을 말한다. 주석을 통해 각각의 코드가 어떤 역할을 하는지 ...

SQL ALTER TABLE 문의 활용 [내부링크]

ADD &lt;열 이름&gt; &lt;자료형&gt; ALTER TABLE 문은 기존 테이블에 열을 추가하거나 삭제 ...

C# 상수 (constant) [내부링크]

변수의 반대말 상수(constant) 변수(variable)는 프로그램이 실행되는 동안 그 값이 변할 수 있다. 정확히 ...

SQL UPDATE [내부링크]

DB를 운영하다 보면 데이터를 수정해야 하는 일이 빈번하게 발생한다. 입력 오류가 원인일 수도 있지만, ...

C# 산술연산자 [내부링크]

모두가 알다시피 컴퓨터의 기본 기능은 &#x27;계산&#x27;이다. 따라서 C# 뿐만 아니라 모든 프로그래밍 언...

SQL DELETE [내부링크]

DELETE 문은 테이블에 존재하는 레코드를 삭제할 때 사용한다. 하나의 필드에 존재하는 데이터를 삭...

C# 산술연산자 우선 순위 [내부링크]

산술 연산자의 경우, 일반 수학에서와 마찬가지로 곱셈, 나눗셈이 덧셈이나 뺄셈보다 더 높은 우선순위를 ...

SQL LIKE, NOT LIKE, 와일드카드 [내부링크]

또 다른 질의어를 배우기 위해 데이터를 다시 입력할 필요가 있다. 이번에는 조금 더 많은 데이터를 추가하...

C# 컴파운드 연산자와 증감연산자 [내부링크]

컴파운드 연산자 지금까지 사용했던 대입 연산자(&#x3D;)는 오른쪽의 값을 왼쪽의 변수에 전달하는 역할을...

SQL 비교 연산자 [내부링크]

WHERE 문은 SQL에 있어 매우 강력하고 유용한 도구다. 이 도구를 좀 더 효과적으로 사용하기 위해...

C# if 문 [내부링크]

if 문은 주어진 조건이 참(true)인 경우에만 주어진 코드블럭을 실행한다. 즉, 주어진 조건이 거짓(false)...

SQL 산술 연산자 [내부링크]

DB는 데이터를 저장하고 불러오는 것만 가능할까? 물론 그것이 주요 기능이고 DB가 존재하는 이유다. ...

C# switch 문 [내부링크]

주어진 조건에 따라 서로 다른 연산을 실행할 수 있는 것은 if 문뿐만이 아니다. switch 문을 이용해도 조...

SQL 문자형 함수 [내부링크]

MariaDB는 문자(열)를 처리하기 위해 다음과 같은 함수를 제공하고 있다. 아래 예시들은 이 중 몇몇 함...

C# 비교 연산자 [내부링크]

if 문을 공부하면서 우리는 서로 다른 변수값의 크기를 비교했었다. 이렇게 서로 다른 데이터값의 크기를 ...

SQL 숫자형 함수 [내부링크]

아래 질의문은 테스트 테이블(tests)에서 한국어 점수와 영어 점수의 평균값을 계산해줄 것이다. 아래 질의...

C# while 문과 do-while 문 [내부링크]

주어진 조건이 &#x27;참&#x27;일 때 한 번만 실행하는 조건문과 달리, 반복문을 사용하면 조건이 &#x27;참&...

SQL 날짜형 함수 [내부링크]

DB의 존재 목적이 데이터의 관리이기 때문에 데이터가 생성되거나 수정된, 그리고 삭제된 날짜와 시간 등...

C# for 문 [내부링크]

while 문의 변형 형태라고 볼 수 있는 for 문은 while 문과 마찬가지로 조건식이 참인 동안 주어진 명령문...

SQL AS 키워드 [내부링크]

&#x27;Alias(별칭)&#x27;라고도 불리는 AS 기능은 질의문의 결과를 보여주는 테이블 또는 해당 테이블의...

C# break와 continue [내부링크]

break 우리는 이미 break 명령어를 사용해 보았다. switch 문을 공부할 때 break가 등장했었는데, break 명...

SQL 주석 달기 [내부링크]

어떤 언어로 어떤 프로그램을 만들든지 문서화의 중요성은 아무리 강조해도 지나치지 않을 것이다. 그리고 ...

C# 논리 연산자 [내부링크]

논리 연산자는 여러 연산자를 결합하는 데 사용하며 결과값은 항상 참(true)과 거짓(false) 둘 중 하나가 ...

SQL 서브쿼리 [내부링크]

하나의 질의문은 하나의 기능만 수행하여 그 결과값을 반환한다. 그러나 DB를 관리하다 보면 좀 더 정교...

C# 함수(메소드)의 이해 [내부링크]

&#x27;함수(function)&#x27;는 하나의 목적을 구현하기 위한 명령문들의 집합으로 &#x27;{ &#x27;로 시작하...

SQL 닷 연산자 [내부링크]

지금까지의 모든 질의어는 오직 하나의 테이블 안에서만 작동했었다. 그러나 SQL을 사용하는 진짜 목적...

C# 함수 (인수 전달의 여러 방법) [내부링크]

인수 전달 방법 (1) 인수(함수에 전달되는 데이터값)는 다음과 같이 함수를 호출하면서 함께 전달하는 것이...

SQL JOIN 문의 이해 [내부링크]

닷 연산자를 사용하여 여러 테이블의 자료를 다룰 수도 있지만, 좀 더 정교한 방법으로 이와 같은 기능을 ...

C# 함수 호출의 여러 방법 [내부링크]

인수를 전달하는 방법이 다양한 만큼 함수를 호출하는 방법에도 여러 가지가 존재한다. 어떤 방법으로 함수...

SQL UNION 연산자 [내부링크]

지금까지의 SELECT 문은 각각의 결과값만을 반환해왔다. 하지만 둘 이상의 SELECT 문을 실행한...

C# 순환함수와 함수 오버로딩 [내부링크]

순환함수 (재귀함수) 함수는 필요에 따라 자기 자신을 호출할 수도 있다. 이런 식으로 구성된 함수를 &#x27...

SQL GROUP BY, HAVING 연산자 [내부링크]

GROUP BY 연산자 GROUP BY는 동일한 데이터 값을 이용해 레코드의 수를 계산하는 데 사용된...

C# 클래스의 이해 [내부링크]

모두가 알다시피 곱셈은 덧셈의 연장이고, 나눗셈의 뺄셈의 연장이다. 그런 관점에서 봤을 때, 수학에 존재...

SQL 테이블 복제 (INSERT INTO SELECT) [내부링크]

INSERT INTO SELECT 문은 하나의 테이블에 저장된 데이터의 일부 혹은 전부를 다른 테이블...

C# 접근 제한자 public vs. private [내부링크]

클래스를 구성하는 멤버들은 각각의 필요에 따라 자신이 속한 클래스 안에서만 사용할 수도 있고, 클래스 ...

C# 캡슐화와 정보 은닉 [내부링크]

객체지향 프로그래밍의 핵심 개념 중 하나인 &#x27;캡슐화(encapsulation)&#x27;는 &#x27;정보 은닉(inform...

C# 프로퍼티 [내부링크]

앞서 공부한 것처럼 클래스의 변수를 캡슐화하는 것은 매우 좋은 코딩 습관이다. 하지만 캡슐화해줘야 하는...

SQL 테이블 이름 변경 (RENAME TABLE) [내부링크]

다양한 테이블을 만들어 관리하다 보면 보다 효과적인 관리를 위해 이미 만들어진 테이블의 이름을 바꿔야 ...

C# this 키워드 [내부링크]

클래스에서 선언한 멤버 변수와 함수의 매개변수는 동일한 이름을 가질 수 있다. 이렇게 하면 어떤 매개변...

C# 생성자와 소멸자 [내부링크]

생성자 &#x27;생성자(constructor)&#x27;는 특별한 종류의 함수다. 생성자는 클래스의 인스턴스가 만들어질...

C# 클래스, 함수, 프로퍼티, 생성자 비교 [내부링크]

클래스와 함수, 그리고 프로퍼티와 생성자 등이 초심자에게는 모두 비슷해 보일 수 있다. 이런 어려움을 돕...

C# readonly 접근 제한자 [내부링크]

&#x27;readonly 접근 제한자&#x27;는 클래스의 멤버 변수의 값이 최초 선언된 이후에 수정되는 것을 막아준...

C# 배열의 선언과 값의 배정 [내부링크]

&#x27;배열(array)&#x27;은 하나의 자료가 아닌 &#x27;일련의 자료&#x27;를 저장하기 위해 사용되는 자료구...

SQL 제약조건 (CONSTRAINTS) [내부링크]

SQL 제약조건을 통해 테이블 안에 저장될 데이터의 규칙을 정할 수 있다. 즉, 미리 정해진 형태의 데이...

C# foreach 문 [내부링크]

앞선 포스팅에서도 언급했듯이 배열은 조건문이나 반복문과 함께 자주 사용된다. 때문에 C#에서는 배열에 ...

C# 2차원 배열 [내부링크]

배열에 데이터를 저장하는 데에는 순차적인 것 이외에 하나의 표처럼 저장하는 방식도 있다. 즉, 열과 행을...

C# 불규칙 배열 [내부링크]

앞서 배운 2차원 배열은 매우 유용한 도구임에 틀림없다. 하지만 2차원 배열이 가지는 치명적인 약점이 있...

SQL FOREIGN KEY (외래키) [내부링크]

&#x27;외래키&#x27;, &#x27;외부키&#x27; 혹은 &#x27;참조키&#x27;라고도 불리는 FOREIGN KEY(이...

C# 배열 프로퍼티와 집계 함수 [내부링크]

C#에서는 배열과 함께 사용할 수 있는 많은 수의 프로퍼티와 함수들을 제공하고 있다. 이번 장에서는 가장...

C# indexer (인덱서) [내부링크]

배열과 유사한 형태를 가지는 &#x27;인덱서(indexer)&#x27;는 무엇일까? &#x27;인덱서&#x27;는 배열과 프로...

C# enum (열거형) [내부링크]

가장 쉽게 말해, &#x27;열거형 클래스(enum class)&#x27;는 &#x27;상수(constant)의 집합&#x27;이다. 여러 ...

C# static (정적 선언)_1 [내부링크]

&#x27;정적 선언&#x27;이라고 불리는 &#x27;static&#x27;은 무엇이고 왜 필요한 것일까? 이것을 이해하기 ...

C# static (정적 선언)_2 [내부링크]

그렇다면 동적으로 선언된 클래스가 정적 변수나 정적 함수를 가질 수 있을까? 그것은 가능한 일이다. 뿐만...

C# 상속 (inheritance) [내부링크]

객체지향 프로그래밍의 핵심 개념 중 하나인 &#x27;상속(inheritance)&#x27;은 이미 존재하는 다른 클래스...

C# protected 접근 제한자 [내부링크]

&#x27;protected&#x27;는 &#x27;private&#x27;과 유사해 보인다. 하지만 private이 모든 외부의 접근을 차...

C# 다형성 (polymorphism) [내부링크]

객체지향 프로그래밍의 3대 특징을 캡슐화, 상속, 그리고 다형성이라고 말한다. &#x27;다형성(polymorphism...

C# 추상 클래스 (abstract) [내부링크]

앞서 설명한 &#x27;다형성&#x27;은 서로 다른 자식 클래스가 부모 클래스로부터 동일한 함수를 물려받되, ...

'MariaDB 스타터'가 출간되었습니다! [내부링크]

여러분의 관심과 성원에 힘입어, 그 동안 연재되어 오던 MariaDB가 &#x27;MariaDB 스타터&#x27;라는 ...

'MariaDB Starter' 영어판 출간! [내부링크]

여러분의 성원에 힘입어 &#x27;MariaDB Starter&#x27;가 영어판으로 출간되어 미국 아마존(Amazon.com...

C# 인터페이스 (interface) [내부링크]

&#x27;인터페이스(interface)&#x27;는 추상 클래스 보다 높은 수준의 추상 멤버로만 구성된 클래스를 말한...

C# 구조체 (struct) [내부링크]

&#x27;구조체(struct)&#x27;는 많은 부분에서 클래스처럼 보일 수도 있지만 구조체는 클래스가 아닌 &#x27;...

C# 델리게이트 (delegate) [내부링크]

C#의 모든 변수는 데이터를 저장하기 위해 존재한다는 것은 이미 알고 있는 사실이다. 그러면 &#x27;함수&...

SQL 사용자 계정 관리 [내부링크]

DB를 운영하다 보면 여러 명의 관리자가 필요할 수도 있고, 일부 기능만 허용하는 사용자도 필요할 수 있...

SQL DB의 백업 및 복원 [내부링크]

DB를 만들고 관리하는 목적이 데이터의 저장인 만큼, DB를 백업하고 복원할 수 있어야 하는 것은 너무...

C# 제네릭 (generic type) [내부링크]

변수를 사용하기 위해서는 변수의 자료형을 미리 정해주어야 한다. 간결하고 이해하기 쉬운 이 방법은 그러...

SQL 자동 백업 (scheduled backup) [내부링크]

만일의 사태를 대비해 주기적으로 DB를 백업하는 것은 두말할 것 없이 중요하다. 하지만 아쉽게도 무료로...

C# 제네릭 클래스 (generic class) [내부링크]

제네릭 타입은 클래스에도 적용할 수 있는데, 이를 &#x27;제네릭 클래스(generic class)&#x27;라고 부른다....

C# 리스트 (List) [내부링크]

리스트는 배열과 유사하다. 하지만 배열에 비해 자료의 입출력이 더 역동적이고 특히 크기를 자유자재로 조...

C# 정렬된 리스트 (SortedList) [내부링크]

앞서 공부한 리스트(List)와 달리 &#x27;정렬된 리스트(SortedList)&#x27;는 키(key)와 자료를 한 묶음...

C# var 키워드 [내부링크]

var 키워드 C#에서 변수를 사용하는 기본적인 방법은 아래와 같이 변수의 자료형을 먼저 선언하는 것이며,...

C# 익명 타입 (anonymous type) [내부링크]

이전 포스팅에서 &#x27;var&#x27;에 대해 알아본 것처럼, var 을 사용하면 코드를 한결 간소화할 수 있다. ...

C# dynamic (동적 변수) [내부링크]

&#x27;var&#x27; 키워드를 사용하면 좀 더 간결한 코드를 작성할 수 있을 뿐 아니라, 익명 타입과 같이 다...

C# 닷넷 표준 서식 문자열 [내부링크]

표준 서식 문자열은 출력값의 형식을 정의하는데 사용한다. 예를 들어, 소수점 두 자리까지만 출력을 원한...

C# 사용자 정의 서식 문자열 [내부링크]

C#에서 기본적으로 제공하는 서식이 이외에도 개발자가 직접 서식을 정의하여 사용할 수 있는데, 다음과 ...

C# GUI 기본 [내부링크]

&#x27;GUI(Graphical User Interface)&#x27;란, 소프트웨어 사용의 편리를 위해 각각의 기능을 버튼...

C# GUI Button 컨트롤 (1) [내부링크]

이번 포스팅에서는 아주 간단한 기능을 가진 윈도우 프로그램부터 제작해보자. Visual Studio에서 ‘Hel...

C# GUI Button 컨트롤 (2) [내부링크]

이번에는 조금 더 현실적인 프로그램을 만들어보도록 하자. 모든 프로그램이 그러하듯 단순히 정보를 보여...

C# GUI 동작 원리: 메시지와 이벤트 [내부링크]

이제 대충 윈도우 폼 프로그래밍이 어떤 식으로 이루어지는지에 대해 느낌이 왔을 것이다. 더 많은 것을 만...

C# GUI Label 컨트롤 (1) [내부링크]

라벨 컨트롤은 가장 많이 사용하는 컨트롤 중 하나로 폼 안에 위치한 다른 컨트롤을 설명하는 용도와 더불...

C# GUI Label 컨트롤 (2) [내부링크]

앞선 포스팅에서 언급한 것처럼 라벨(label)은 문자(열)만 출력하는 데 그치지 않고, 이미지를 출력하는 데...

파이썬 소개 [내부링크]

1991년, 네덜란드 출신 프로그래머 귀도 반 로섬에 위해 처음 발표한 파이썬은 30년이 지난 지금 각종 통계...

파이썬 개발환경의 준비 : PyCharm Community Edition [내부링크]

프로그래밍을 처음 공부할 때 윈도우의 노트패드 등 쉽게 접근할 수 있는 간단한 도구를 사용하라고 말하는...

파이썬 주석 달기 [내부링크]

주석은 프로그램 코드에 설명을 추가하는 것을 말하는데, 주석을 잘 달아주면 각각의 코드가 어떤 역할을 ...