새로운 테이블의 생성(CREATE TABLE)
예제
CREATE TABLE userdb (
name CHAR(8),
id VARCHAR(10 NOT NULL,
email VARCHAR(40),
sex CHAR(1),
PRIMARY KEY(id)
)
# 특정 테이블을 다른 이름으로 똑같이 복사
CREATE TABLE userdb2 AS SELECT * FROM userdb
# 기존 테이블의 필요한 필드의 데이터만 가져와 테이블 생성
CREATE TABLE userdb3 AS SELECT name, id FROM userdb
생성된 테이블의 변경(ALTER TABLE)
ALTER TABLE userdb ADD COLUMN addr VARCHAR(100)
or
ALTER TABLE userdb ADD addr VARCHAR(100)
ALTER TABLE userdb CHANGE COLUMN addr address VARCHAR(255)
or
ALTER TABLE userdb CHANGE addr address VARCHAR(255)
ALTER TABLE userdb DROP COLUMN address
or
ALTER TABLE userdb DROP address
# 생성된 테이블의 삭제(DROP TABLE)
DROP TABLE 테이블명
ex) DROP TABLE userdb
# 데이터 검색(SELECT)
SELECT name, id FROM userdb WHERE level = 'B'
SELECT * FROM userdb
SELECT name, id, email, sex, milage, level FROM userdb
SELECT DISTINCT level FROM userdb
SELECT name, id, email FROM userdb WHERE milage > 3000 AND sex = 'M'
SELECT name, id, milage FROM userdb WHERE milage >= 3000 ORDER BY milage DESC
SELECT name, id, milage FROM userdb WHERE milage >= 3000 ORDER BY milage ASC
or
SELECT name, id, milage FROM userdb WHERE milage >= 3000 ORDER BY milage
SELECT name, id, email, milage+300 FROM userdb WHERE id = 'soony'
SELECT count(*) FROM userdb WHERE sex = 'F'
SELECT avg(milage) FROM userdb WHERE sex = 'F'
SELECT level, max(milage), min(milage), avg(milage) FROM userdb GROUP BY level
SELECT sex, max(milage), min(milage), avg(milage) FROM userdb GROUP BY sex
SELECT sex, max(milage), min(milage), avg(milage) FROM userdb GROUP BY sex HAVING sex = 'F'
SELECT name, email, milage, sex FROM userdb WHERE sex = 'F' AND milage BETWEEN 3000 AND 4000
SELECT name, email, milage, sex FROM userdb WHERE sex = 'F' AND milage >= 3000 AND milage <= 4000
SELECT name, sex, level FROM userdb WHERE level IN ('A', 'C')
SELECT name, sex, milage FROM userdb WHERE milage NOT IN (3300, 3500, 3700)
# LIKE 를 사용한 검색
SELECT name FROM userdb WHERE name LIKE '%현%'
SELECT name FROM userdb WHERE name LIKE '%현%'
SELECT name, id FROM userdb WHERE id LIKE 'm%'
# NULL 값을 갖는 데이터 검색
SELECT name, id FROM userdb WHERE email IS NULL
SELECT name, id FROM userdb WHERE email IS NOT NULL
# LIMIT 연산자를 이용한 검색
SELECT name, id, milage FROM userdb LIMIT 3
SELECT name, id, email FROM userdb WHERE milage > 3000 LIMIT 2
SELECT name, id, milage FROM userdb ORDER BY milage DESC LIMIT 3
# 1번 레코드부터 시작하여 3개의 레코드를 가져오라
# 레코드 시작은 0번째 레코드부터 시작된다.
SELECT name, id, milage FROM userdb ORDER BY milage DESC LIMIT 1, 3
# 새로운 데이터의 삽입(INSERT)
INSERT INTO userdb (name, id, email, sex, milage, level) VALUES('이완철','yunkal018','wclee@safelab.skku.ac.kr','M',3500,'B')
INSERT INTO userdb VALUES('이완철','yunkal018','wclee@safelab.skku.ac.kr','M',3500,'B')
INSERT INTO userdb (id, name) VALUES('hyunah', '김현아')
INSERT INTO userdb (id, name) VALUES(hyunah, 김현아)
# 데이터의 수정(UPDATE)
UPDATE userdb SET sex = 'F' WHERE name = '김현아'
UPDATE userdb SET sex = 'F'
UPDATE userdb SET milage = milage + 300
# 데이터의 삭제(DELETE)
DELETE FROM userdb WHERE id = 'king94'
DELETE FROM userdb // userdb 테이블의 모든 데이터가 삭제된다.
# MySQL 데이터베이스의 사용법
# MySQL 서버의 기동과 종료
./bin/safe_mysqld &
# MySQL 서버의 종료
./bin/mysqladmini -u root shutdown
# 실행중인 MySQL 서버의 재기동
./bin/mysqladmin -u root reload
# mysql client 사용법
[root@localhost /root] # mysql
mysql > show databases; // 모든 명령문은 세미콜론(;) 이나 "\g"로 끝나야 한다.
mysql > \q
[root@localhost /root] # mysql mysql // mysql 데이터베이스로 접속
mysql > show tables; // mysql데이터베이스 내의 테이블리스트를 출력한다.
------------------
Tables_in_mysql
------------------
columns_priv
db
func
host
tables_priv
user
------------------
mysql > show colums from db; // 테이블 db내의 열(필드)에 대한 정보를 출력한다.
mysql > desc db; // 위 명령과 동일한 정보가 출력된다.
mysql > select host,user,password from user;
mysql > update user set password = password('php2001') where user = 'root';
mysql > Select host, user, password from user;
[root@localhost /root]# mysqladmin -u root reload // mysql 서버 재기동
[root@localhost /root]# mysql -u root mysql // 암호 입력없으면 실패
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
[root@localhost /root]# mysql -u root -p mysql
Enter password : // 여기에 'php2001'을 입력하면 연결된다.
[root@localhost /root]# mysqladmin -u root reload // "-p"가 없으면 연결거부
[root@localhost /root]# mysqladmin -u root -p reload
Enter password : // 비밀번호를 입력한다.
[root@localhost /root]# // 정상적으로 재기동한다.
# 아래와 같이 root의 암호가 'php2001'이므로 -p 다음에 바로 'php2001'을 붙여서 입력한다.
[root@localhost /root]# mysql -u root -pphp2001 mysql // -p다음에 비밀번호를 입력
mysql >
#새로운 데이터베이스 생성
[root@localhost /root]# mysqladmin -u root -p create sample
Enter password :
[root@localhost /root]# mysql -u root -p sample
Enter password :
mysql> show tables;
Empty set (0.00 sec)
mysql>
# 생성된 데이터베이스 삭제
[root@localhost /root]# mysqladmin -u root -p drop sample // 데이터베이스 삭제
mysql> drop database sample;
# 생성된 데이터베이스 등록
mysql> insert into db values('%','sample','php','y','y','y','y','y','y','y','y','y','y');
mysql> select * from db;
mysql>
# 새로운 사용자(데이터베이스 소유자) 등록
mysql> insert into user (host, user, password) values ('localhost','php',password('php2001'));
Query OK, 1 row affected (0.00 sec)
mysql> select * from user;
mysql> exit
# 테이블의 생성과 수정 및 삭제
[root@localhost /root]# mysql -u php -p sample
mysql> show tables;
Empty set (0.00 sec)
mysql>
mysql> desc userdb;
mysql>
# userdb 테이블에서 id 필드의 데이터 타입을 varchar(12)로 수정하자.
mysql> alter table userdb modify column id varchar(12) NOT NULL;
mysql> desc userdb;
mysql> drop table userdb;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
Empty set (0.00 sec)
# 먼저 다음의 sql 문을 만들어 userdb.sql 이라는 파일로 저장한다.
create table userdb (
name CHAR(8),
id VARCHAR(10) NOT NULL,
email VARCHAR(40),
sex CHAR(1),
milage INT,
level CHAR(1),
PRIMARY KEY(id)
);
[root@localhost /root]# mysql -u php -pphp2001 sample < userdb.sql
[root@localhost /root]# mysql -u php -p sample
Enter password:
mysql> show tables;
------------------
Tables_in_sample
------------------
user_db
------------------
1 row in set (0.00 sec)
mysql>
# MySQL 에서 SQL 사용하기
[root@localhost /root]# mysql -u php - p sample
mysql> insert into userdb(name,id,email,sex,milage,level)
-> values('이완철','yunka1018','wclee@safelab.skku.ac.kr','M',3500,'B');
Query OK, 1 row affected (0.03 sec)
mysql> insert into userdb(name,id,email,sex,milage,level)
-> values('김영미','guncat','ymkim@safelab.skku.ac.kr','F',4200,'A');
Query OK, 1 row affected (0.03 sec)
mysql> insert into userdb(name,id,email,sex,milage,level)
-> values('길수현','suhyun','shyun@safelab.skku.ac.kr','F',2800,'C');
Query OK, 1 row affected (0.03 sec)
mysql>
mysql> select * from userdb;
mysql>
mysql> select name, id from userdb where level = 'B';
mysql>
mysql> select distict level from userdb;
mysql> select name,id,email from userdb where milage >= 3000 and sex = 'M';
mysql> select name,id,milage from userdb where milage >= 3000 order by milage desc;
mysql> select name,'님의 마일리지는 ', milage,'점 입니다.' from userdb order by milage;
mysql> selet name,id,email,milage+300 from userdb where id = 'soony';
mysql> select count(*) from userdb where sex = 'F';
mysql> select avg(milage) from userdb where sex = 'F';
mysql> select level,max(milage),min(milage),avg(milage) from userdb group by level;
mysql> select level,max(milage),min(milage),avg(milage) from userdb group by level having level = 'B';
mysql> select name,id,email,milage,sex from userdb where sex ='F' and milage between 3000 and 4000;
mysql> select * from userdb where level in ('A','C');
mysql> select * from userdb where level no in ('A','C');
mysql> select name from userdb where name like '%현%';
mysql> select id from userdb where id like 'm%';
mysql> insert into userdb (name, id) values ('김영배','king94');
Query OK, 1 row affected (0.00 sec)
mysql> select * from userdb;
mysql>
mysql> select * from userdb where email is null;
mysql>
mysql> select name,id,email from userdb limit 3;
mysql>
mysql> select name,id,email,milage from userdb where milage > 3000 limit 2;
mysql> select name,id,milage from userdb order by milage desc limit 3;
mysql> select name,id,milage from userdb order by milage desc limit 1,3;
mysql>
mysql> update userdb set sex = 'M', milage = 3200 where name = '김영배';
mysql> select * from userdb where name = '김영배';
mysql> delete from userdb where name = '김영배';
Query OK, 1 row affected (0.00 sec)
mysql> select * from userdb;
mysql>
# 데이터의 백업과 복구
1. 데이터의 백업
[root@localhost /root]# mysqldump -u php -p sample > sample_backup.sql
Enter password:
[root@localhost /root]# ls -l sample_backup.sql
[root@localhost /root]# mysqldump -uphp -pphp2001 sample > sample_backup.sql
# 백업 데이터의 복구
[root@localhost /root]# mysql -uphp -pphp2001 sample < sample_backup.sql
[root@localhost /root]#
'MySQL' 카테고리의 다른 글
| [MySQL] How can I reset my MySQL password? (영문) (0) | 2015.07.09 |
|---|---|
| [MySQL] Access denied for user 'root'@'localhost' (using password: YES) 오류해결 (0) | 2015.07.09 |
| [MySQL] MySQL JOIN 걸어서 업데이트(UPDATE) 하기 (0) | 2015.07.09 |
| [MySQL] MySQL 데이터베이스 추가 및 사용자 추가 (0) | 2015.07.09 |
| PHP에서 지원하는 MySQL API함수 (0) | 2015.04.23 |
# PHP에서 지원하는 MySQL API함수
mysql_connect // MySQL 서버에 연결한다.
mysql_close // MySQL 서버에 대한 연결을 종료한다.
mysql_select_db // MySQL 서버에 있는 특정 DB를 선택한다.
mysql_errno // 가장 최근 실행된 MySQL 작업에 에러 발생시 에러 번호를 반환한다.
mysql_error // 가장 최근에 실행된 MySQL 작업에 에러 발생시 해당 에러의 메시지를 반환한다.
mysql_create_db // MySQL 서버에 인자로 지정한 이름을 갖는 DB를 생성한다.
mysql_drop_db // MySQL 서버에 인자로 지정한 이름을 갖는 DB를 삭제한다.
mysql_query // 연결 식별자에 의해 연결이 확인된 서버에 sql쿼리문을 전송한다.
mysql_num_rows // 결과 레코드 세트에서 행의 수, 즉 레코드의 개수를 반환한다.
mysql_num_fields // 결과 레코드 세트에서 열의 수, 즉 필드의 수를 반환한다.
mysql_num_name // 검색된 결과 레코드 세트에서 특정 필드의 이름을 반환한다.
mysql_field_name // 검색된 결과 레코드 세트에서 특정 필드의 이름을 반환한다.
mysql_field_type // 검색된 결과 레코드 세트에서 특정 필드의 타입을 반환한다.
mysql_field_len // 검색된 결과 레코드 세트에서 특정 필드 타입의 크기를 반환한다.
mysql_field_flags // 검색된 결과 레코드 세트에서 특정 필드에 정의된 속성을 반환한다.
mysql_field_table // 검색된 결과 레코드 세트에서 특정 필드가 속해 있는 테이블의 이름을 반환한다.
mysql_fetch_row // 결과 레코드 세트에서 한 행(레코드)의 데이터를 가져온다.
mysql_fetch_array // 결과 레코드 세트에서 한행(레코드)의 데이터를 연관 배열의 형태로도 가져온다.
mysql_fetch_object // 결과 레코드 세트에서 한 행(레코드)의 데이터를 객체의 형태로 가져온다.
mysql_result // 결과 레코드 세트에서 하나의 필드값을 얻는다.
mysql_free_result // 스크립트가 실행되는 동안 점유했던 메모리 공간을 반환한다.
mysql_data_seek // 결과 레코드 세트 내에서 원하는 레코드 위치로 이동한다.
mysql_fetch_field // 결과 레코드 식별자가 가리키는 결과 레코드 세트로부터 필드 정보를 객체의 형태로 반환한다.
mysql_fetch_lengths // 결과 레코드 세트에서 레코드의 각 필드에 담긴 필드값의 크기를 구한다.
mysql_list_dbs // MySQL 서버에 존재하는 DB 목록을 얻는다.
mysql_list_tables // 현재 선택된 DB 내에 존재하는 테이블의 목록을 얻는다.
mysql_tablename // 테이블의 이름을 반환한다.
mysql_list_fields // 인자로 지정한 DB의 테이블에 존재하는 필드의 목록을 구한다.
mysql_field_seek // 레코드 내에서 필드의 포인터를 새로 지정한 위치로 이동시킨다.
mysql_db_query // MySQL 서버에 SQL문을 전송하고 실행결과로 검색되어진 레코드 세트를 가리키는 식별자를 반환한다.
mysql_pconnect // MySQL 서버에 영구적으로 연결한다. 이때 연결은 스크립트가 종료되어도 끊어지지 않는다.
# mysql_connect 함수 예제
<?
$conn = mysql_connect("localhost", "php", "php001") or die("연결 실패");
echo gettype($conn);
?>
# mysql_close 함수 예제
<?
$conn = mysql_connect("localhost", "php", "php001") or die("연결 실패");
print "데이터베이스 서버에 성공적으로 연결하였습니다.";
mysql_close($conn);
?>
# mysql_select_db 함수 예제
<?
$conn = mysql_connect("localhost", "php", "php001") or die("연결 실패");
print "데이터베이스 서버에 성공적으로 연결하였습니다.";
$status = mysql_select_db("sample");
if(!$status) {
print "DB 선택에 실패";
}
?>
# mysql_errno 함수 예제
# mysql_error 함수 예제
<?
$conn = $mysql_connect("localhost", "php", "php2001") or die("connection failed");
$status = mysql_select_db("isample");
if(!$status) {
$errorNo = mysql_errno();
$errorMsg = mysql_error();
echo "ERROR " . $errorNo . ":" . $errorMsg;
exit;
}
print "데이터베이스 서버에 성공적으로 연결하였습니다.";
?>
# mysql_create_db 함수 예제
<?
$conn = $mysql_connect("localhost", "php", "php2001") or die("connection failed");
$createDB = mysql_create_db("sample2");
if(!$createDB) {
echo "sample2 데이터베이스 생성에 실패하였습니다.<br>";
$errorNo = mysql_errno();
$errorMsg = mysql_error();
echo "ERROR " . $errorNo . ":" . $errorMsg;
exit;
} else {
print "데이터베이스를 성공적으로 생성하였습니다.";
}
mysql_close($conn);
?>
# mysql_drop_db 함수
<?
$conn = $mysql_connect("localhost", "php", "php2001") or die("connection failed");
$dropDB = mysql_drop_db("sample2");
if(!$dropDB) {
echo "sample2 데이터베이스 삭제에 실패하였습니다.<br>";
$errorNo = mysql_errno();
$errorMsg = mysql_error();
echo "ERROR " . $errorNo . ":" . $errorMsg;
exit;
} else {
print "데이터베이스를 성공적으로 삭제하였습니다";
}
mysql_close($conn);
?>
# mysql_query 함수, mysql_num_rows 함수
<?
$conn = $mysql_connect("localhost", "php", "php2001") or die("connection failed");
$status = mysql_select_db("isample");
if(!$status) {
echo "isample 데이터베이스 선택에 실패하였습니다.<br>";
$errorNo = mysql_errno();
$errorMsg = mysql_error();
echo "ERROR " . $errorNo . ":" . $errorMsg;
exit;
} else {
print "데이터베이스 서버에 성공적으로 연결하였습니다.";
}
$query = "SELECT name, id, email, sex, milage, level FROM userdb WHERE sex = 'F'";
$result = mysql_query($query,$conn);
if(!$result) {
$errorNo = mysql_errno();
$errorMsg = mysql_error();
echo "ERROR ". $errorNo . ":".$errorMsg;
exit;
}
$row = mysql_num_rows($result);
echo "검색된 레코드의 수 : ". $rows. "<br>";
$fields = mysql_num_fields($result);
echo "레코드의 필드수 : " . $fields . "<br>";
mysql_close($conn);
?>
mysql_num_fields // 결과 레코드 세트에서 열의 수, 즉 필드의 수를 반환한다.
mysql_num_name // 검색된 결과 레코드 세트에서 특정 필드의 이름을 반환한다.
mysql_field_name // 검색된 결과 레코드 세트에서 특정 필드의 이름을 반환한다.
mysql_field_type // 검색된 결과 레코드 세트에서 특정 필드의 타입을 반환한다.
mysql_field_len // 검색된 결과 레코드 세트에서 특정 필드 타입의 크기를 반환한다.
mysql_field_flags // 검색된 결과 레코드 세트에서 특정 필드에 정의된 속성을 반환한다.
mysql_field_table // 검색된 결과 레코드 세트에서 특정 필드가 속해 있는
<?
$conn = $mysql_connect("localhost", "php", "php2001") or die("connection failed");
$status = mysql_select_db("isample");
if(!$status) {
echo "isample 데이터베이스 선택에 실패하였습니다.<br>";
$errorNo = mysql_errno();
$errorMsg = mysql_error();
echo "ERROR " . $errorNo . ":" . $errorMsg;
exit;
} else {
print "데이터베이스 서버에 성공적으로 연결하였습니다.";
}
$query = "SELECT name, id, email, sex, milage, level FROM userdb WHERE sex = 'F'";
$result = mysql_query($query,$conn);
if(!$result) {
$errorNo = mysql_errno();
$errorMsg = mysql_error();
echo "ERROR ". $errorNo . ":".$errorMsg;
exit;
}
$row = mysql_num_rows($result);
echo "검색된 레코드의 수 : ". $rows. "<br>";
$fields = mysql_num_fields($result);
echo "레코드의 필드수 : " . $fields . "<br>";
echo ("<table border=0 cellpadding=10 align=center>\n");
echo ("<tr>\n");
echo ("<td width=100 bgColor=pink align=center>필드명</td>\n");
echo ("<td width=100 bgColor=pink align=center>필드타입</td>\n");
echo ("<td width=100 bgColor=pink align=center>필드크기</td>\n");
echo ("<td width=100 bgColor=pink align=center>필드속성</td>\n");
echo ("<td width=100 bgColor=pink align=center>소속테이블</td>\n");
echo ("</tr>\n");
for($i=0;$i<$fields;$i++) {
echo("<tr>\n");
$field_name = mysql_field_name($result, $i);
$field_type = mysql_field_type($result, $i);
$field_len = mysql_field_len($result, $i);
$field_flags = mysql_field_flags($result, $i);
$field_table = mysql_field_table($result, $i);
echo("<td bgColor=lightyellow align=center>$field_name</td>\n");
echo("<td bgColor=lightyellow align=center>$field_type</td>\n");
echo("<td bgColor=lightyellow align=center>$field_len</td>\n");
echo("<td bgColor=lightyellow align=center>$field_flags</td>\n");
echo("<td bgColor=lightyellow align=center>$field_table</td>\n");
echo ("</tr\n");
}
echo ("</table>");
mysql_close($conn);
?>
</body>
</html>
# mysql_fecth_array 함수
while ($row = mysql_fetch_array($result)) {
echo("<tr>\n");
echo("<td bgColor=lightyellow align=center>$row[name]</td>\n");
echo("<td bgColor=lightyellow align=center>$row[id]</td>\n");
echo("<td bgColor=lightyellow align=center>$row[email]</td>\n");
echo("<td bgColor=lightyellow align=center>$row[sex]</td>\n");
echo("<td bgColor=lightyellow align=center>$row[milage]</td>\n");
echo("<td bgColor=lightyellow align=center>$row[level]</td>\n");
echo("</tr>\n");
}
# mysql_fetch_object 함수
while ($row = mysql_fetch_object($result)) {
echo("<tr>\n");
echo("<td bgColor=lightyellow align=center>$row->name </td>\n");
echo("<td bgColor=lightyellow align=center>$row->id </td>\n");
echo("<td bgColor=lightyellow align=center>$row->email </td>\n");
echo("<td bgColor=lightyellow align=center>$row->sex </td>\n");
echo("<td bgColor=lightyellow align=center>$row->milage </td>\n");
echo("<td bgColor=lightyellow align=center>$row->level </td>\n");
echo("</tr>\n");
}
# mysql_result 함수 // int mysql_result(int result, int row[, mixed field])
<?
$conn = $mysql_connect("localhost", "php", "php2001") or die("connection failed");
$status = mysql_select_db("isample");
if(!$status) {
echo "isample 데이터베이스 선택에 실패하였습니다.<br>";
$errorNo = mysql_errno();
$errorMsg = mysql_error();
echo "ERROR " . $errorNo . ":" . $errorMsg;
exit;
} else {
print "데이터베이스 서버에 성공적으로 연결하였습니다.";
}
$query = "SELECT name, id, email, sex, milage, level FROM userdb WHERE sex = 'F'";
$result = mysql_query($query,$conn);
if(!$result) {
$errorNo = mysql_errno();
$errorMsg = mysql_error();
echo "ERROR ". $errorNo . ":".$errorMsg;
exit;
}
$row = mysql_num_rows($result);
echo "검색된 레코드의 수 : ". $rows. "<br>";
$fields = mysql_num_fields($result);
echo "레코드의 필드수 : " . $fields . "<br>";
echo ("<table width=600 border=0 cellpadding=10 align=center> \n");
echo ("<tr>\n");
for($j=0;$j<$fields;$j++) {
$name = mysql_field_name($result,$j);
echo("<td bgcolor=pink align='center'>$name</td>\n");
}
echo("</tr>\n");
echo("<tr>\n");
for ($i=0;$i<$rows;$i++) {
for($j=0;$j<$fields;$j++) {
$value=mysql_result($result, $i, $j);
echo("<td bgColor=lightyellow align=center>$value</td>\n");
}
echo("</tr>");
}
echo("</tr>\n");
echo("</table>");
mysql_close($conn);
?>
</body>
</html>
'MySQL' 카테고리의 다른 글
| [MySQL] How can I reset my MySQL password? (영문) (0) | 2015.07.09 |
|---|---|
| [MySQL] Access denied for user 'root'@'localhost' (using password: YES) 오류해결 (0) | 2015.07.09 |
| [MySQL] MySQL JOIN 걸어서 업데이트(UPDATE) 하기 (0) | 2015.07.09 |
| [MySQL] MySQL 데이터베이스 추가 및 사용자 추가 (0) | 2015.07.09 |
| ★ MySQL DB SQL Statement (0) | 2015.04.23 |
패키지
1. 패키지는 클래스 이름의 일부이다.
- 전체클래스 이름 = 상위패키지.하위패키지.클래스
- 클래스명이 같아도 패키지명이 다르면 다른 클래스로 취급한다.
2. 패키지 선언은 클래스 선언 첫 줄에 해야 한다.
3. 상위 패키지와 하위 패키지는 도트(.)로 구분한다.
4. 패키지 이름 규칙
- 전부 알파벳 소문자로 작성하는 것이 관례이다.
- 숫자로 시작해서는 안된다.
- _, $ 를 제외한 특수문자를 사용해서는 안된다.
- 회사 도메인의 역순으로 패키지 이름을 보통 만든다.
패키지 선언된 .java 파일 컴파일
c:\temp\javac -d . Application.java
c:\temp\java sec12.exam01_package_compile.Application
접근제한자
|
접근제한 |
적용 대상 |
접근할 수 없는 클래스 |
|
public |
클래스, 필드, 생성자, 메소드 |
없음 |
|
protected |
필드, 생성자, 메소드 |
자식 클래스가 아닌 다른 패키지에 소속된 클래스 |
|
default |
클래스, 필드, 생성자, 메소드 |
다른 패키지에 소속된 클래스 |
|
private |
필드, 생성자, 메소드 |
모든 외부 클래스 |
# default 접근 제한 - 같은 패키지에 속한 외부 클래스 접근 가능, 다른 패키지에 속한 외부 클래스 접근 불가
class 클래스명 { ... }
# public 접근 제한 - 모두 접근 가능
public class 클래스명 { ... }
# protected 접근 제한
protected className { ... }
# private 접근 제한 : 내부 클래스 내부에서만 접근 가능, 외부 클래스 및 외부 패키지에서 접근 불가
private className { ... }
# 필드 선언 : public / protected / private / static 타입 필드
# 메소드 선언 : public / protected / private / static 리턴타입 메소드 (...) { ... }
'JAVA Programming' 카테고리의 다른 글
| protected 접근 제한자 (0) | 2015.04.27 |
|---|---|
| 어노테이션(Annotation) #2 (0) | 2015.04.23 |
| 어노테이션(Annotation) #1 (0) | 2015.04.23 |
| Getter와 Setter (0) | 2015.04.23 |
| non-static 멤버와 static 멤버의 특징 (0) | 2015.04.23 |
Eclipse에 Android 설치 후 메뉴 File-> New->Android Project가 안보일 때가 있다.. ㅡㅡ
이럴 경우
1. 메뉴 Window -> Customize Perspective.. 클릭
2. Customize Perspective창의 Shortcuts 탭 클릭
3. Android Project 체크 -> OK버튼 클릭
그밖의 팁
Windows - > Show View - > Package Explorer : 기본 창
Windows - > Show View - > Navigator : 윈도우 탐색기와 같은 역할을 한다.
패키지 경로 View : Project Explorer 창 -> ▼ 버튼 클릭 -> Package Presentation -> Flat or Hierarchical 선택해서 볼수 있도록 함. Hierarchical 가 일목요연하게 볼수 있다. 추천.
import 문
Source > Organize imports (단축키: Ctrl+Shift+O)
1. Window>Preference>Java>Code Style>Organize imports를 선택
2. NUmber of imports needed for .*의 99를 1롤 변경하고 [OK] 버튼을 클릭한다.
3. 다시한번 Ctrl+Shift+O 를 실행해본다.
Parent Class 를 상속한 Child Class 에서 코딩 시 Ctrl + Space 를 누르면 오버라이드된 필드, 메소드를 확인 할 수 있다.
'Eclipse' 카테고리의 다른 글
| 이클립스 컬럼모드 사용하기 (0) | 2015.07.09 |
|---|---|
| 이클립스 workspace 변경 방법 (0) | 2015.07.09 |
| 이클립스 속도 향상 (eclipse.ini 수정) (0) | 2015.07.09 |
| 이클립스를 효율적으로 사용하기 위한 10가지 팁 (0) | 2015.04.23 |
| 이클립스 단축키(Shortcut) (0) | 2015.04.23 |
지난 몇년간 나는 초중급 개발자들을 많이 만나왔지만 그들의 이클립스 편집기를 다루는 실력은 별로 였다. 광범위한 이클립스의 기능을 완전이 이해하고 활용하지 못하기 때문이다. 그래서 프로그래밍을 효율적으로 만드는 나만의 10가지 팁을 글로 쓰기로 했다.
목차
[숨기기]- 1 텍스트 파일 인코딩
- 2 빌드시 자동 저장
- 3 타입 필터
- 4 디버깅시에 스텝 필터 사용
- 5 항상 마지막에 실행한 애플리케이션을 실행하게 하기
- 6 실행 설정을 프로젝트에 저장하기
- 7 실행 설정을 메뉴에 보이게 하기
- 8 저장시 imports 정리하기
- 9 저장시 수정한 소스 포맷팅
- 10 이클립스가 코딩하게 하기
- 11 (보너스) SSD를 달자
- 12 참조
텍스트 파일 인코딩
이클립스의 디폴트 파일 인코딩은 운영체제의 기본값으로 설정된다. 그러나 플랫폼 독립적인 앱을 만들기 위해서는 파일 인코딩을 UTF-8로 설정해야 한다. UTF-8을 사용함으로서
- 다른 OS에서의 특수 문자 문제
- 다른 OS에서 다른 사람이 작업할때 발생할 수 있는 문제
등을 미연에 방지 할 수 있다. 이 설정은 Preferences > General > Workspace나 프로젝트 설정에서 찾을 수 있다.
| 역자주 | 이 설정은 전체 워크스페이스보다는 프로젝트 설정에서 지정할 것을 권장한다, SCM을 통해 소스가 공유될 경우 인코딩 정보가 공유되기 때문이다. --Jeeeyul 2013년 1월 17일 (목) 18:07 (KST) |
[편집] 빌드시 자동 저장
나를 비롯한 많은 사람들이 끊임없이 저장 명령(Ctrl+S)을 누르고 있다는 것을 알았다. (심한 경우, 마우스로 툴바의 저장 명령으로 하는 사람도 있다.) 이런 패턴은 저장하지 않은 소스코드를 날려버리지 않기 위해서 인것으로 추정된다. '빌드시 자동 저장'을 활성화 함으로서 많은 키 스트로크를 줄일 수 있다. 이 옵션은 Preferences > General > Workspace 에 있다.
[편집] 타입 필터
타입 필터는
- Open Type 명령
- Content assist
- quick fix
시 나오는 후보들중(클래스나 인터페이스)에서 제외할 것들을 지정할 때 사용된다. RCP 혹은 SWT 개발자라면 AWT나 Swing에 관한 추천은 제거하고 싶을 것이다. 이럴 때 사용하면 유용하다. 이것은 Preferences > Java > Appearance > Type Filters 에 있다.
[편집] 디버깅시에 스텝 필터 사용
스텝필터로 원하지 않는 타입들을 필터링할 수도 있고 디버깅시 브레이크 포인트가 걸리지 않게 할 수 도 있다. 이렇게 함으로서 관심있는 코드만 볼 수 있고 소스가 있지도 않은 부분까지 브레이크가 걸리는 것을 막을 수 있다. Effective Mockito 에 Mockito와 스텝필터링에 관한 글을 한번 읽어 보아라. 이 옵션은 Preferences > Java > Debug > Step Filtering에 있다.
[편집] 항상 마지막에 실행한 애플리케이션을 실행하게 하기
이 옵션은 마지막으로 실행한 설정으로 앱을 실행하게 한다. 이클립스는 기본적으로 선택된 리소스와 연결되어 있는 설정으로 실행하려고 하는데 이는 불편한다. 이 옵션은 Preferences > Run/Debug > Launching 에 있다. 실행할때 이전에 실행된 인스턴스를 자동으로 죽이고 싶다면 실행된 인스턴스 자동으로 죽이고 OSGi 앱 실행하기란 글을 보자.
[편집] 실행 설정을 프로젝트에 저장하기
누구나 일정 시간을 실행 설정을 만드는 데 허비한다. 이 설정을 프로젝트 내에 파일로 저장할 수 있고, 이로 인해 git이나 svn등을 통해서 체크인이 가능하여, 이 설정을 동료들과 쉽게 공유할 수 있다. 이 옵션은 Menu: Run > Run Configurations... > Launch Configuration Tab: Common 에 있다.
[편집] 실행 설정을 메뉴에 보이게 하기
여러개의 실행 설정을 가지고 있다면, 자주쓰는 설정을 실행/디버그 메뉴에 추가할 수 있다. 이 작업은 Menu: Run > Run Configurations... > Launch Configuration Tab: Common 에서 할 수 있다.
[편집] 저장시 imports 정리하기
이클립스 자바 개발자는 대개 imports에 대해서 걱정할 필요가 없다. imports들은 클래스 파일에 자동으로 추가가 되기 때문이다. 그러나 소스 수정/삭제 시에 특정 imports가 유효하지 않게 될 수 있다. 이것을 수정하기 위해서 직접 "Organize Imports"를 실행하거나, 저장할때 자동으로 실행되게 할 수 도 있다. 이 옵션은 Preferences > Java > Editor > Save Actions 에 있고 개별 프로젝트 설정에서도 할 수도 있다.
[편집] 저장시 수정한 소스 포맷팅
이클립스에서 코드 포맷팅은 아주 유용하다. 코드가 프로젝트들 간에 일관되게 포맷팅이 되기에, 읽기 쉽고 이해하기 쉬운 코드를 만들어 준다. 그러나 전체 파일에 포맷팅을 적용하면 이전버전과의 차이점을 볼때 문제를 복잡하게 만들 수 있다. 그래서 저장시에 수정된 소스에만 자동 포맷팅을 해주는 것이 옳은 선택일 수 있다. 이 옵션은 Preferences > Java > Editor > Save Actions 에 있고 개별 프로젝트 설정에서도 할 수 잇다. 소스에 코딩 가이드라인을 의무화 하고 싶다면 이클립스 Checkstyle 플러그인을 확인해 보자.
[편집] 이클립스가 코딩하게 하기
좋은 IDE라면 개발자의 생각하는 속도에 맞춰서 코딩을 할 수 있게 지원을 해야 한다. 이클립스는 리팩토링, Quick fix, Content Assist, 코드 자동완성 등을 동해서 이를 지원한다. 그러니 IDE가 지원해주는 것을 충분히 활용하자.
예를들어 보자. 함수의 인자를 클래스의 필드로 저장하고 싶다면, 함수의 인자의 커서를 위치시킨후에 Quick fix를 실행하고 Assign parameter to new filed 를 선택하면 이걸로 끝이다. getter가 필요하다면 클래스 어딘가에서 get을 치고 Content assist를 실행하면 이클립스가 해당 함수를 자동으로 만들어 준다. 같은 시퀀스로 setter, 생성자, main 함수등 도 만들 수 있다.
- Quick fix : ctrl+1 혹은 맥에선 cmd+1
- content assist : ctrl+space
- quick access : ctrl+3 혹은 맥에선 cmd+3
- open type : shift + ctrl + T 혹은 맥에선 shift + cmd + T
키보드 단축키를 배우고 싶다면 Mousefeed 플러그인을 사용하자. 이 플러그인은 방금 사용한 마우스 액션에 대해서 키보드 단축키를 보여준다.
| 역자주 | 자바 에디터에서 Alt+Shift+S를 종종 눌러보라, 생각보다 훨씬 더 많은 코드들을 자동으로 생성할 수 있다! --Jeeeyul 2013년 1월 17일 (목) 18:10 (KST) |
[편집] (보너스) SSD를 달자
이클립스는 수 많은 작은 파일들(소스코드, 컴파일된 .clas파일들, 메타 데이터, 로컬 히스토리....)을 다뤄야 한다. 그리고 하드 디스크는 당신이 하는 일에 많은 영향을 끼친다. 그래서 SSD로 업그레이드를 하면 성능 향상을 얻을 수 있고 이는 생산성 증대로 이어진다. 이 주제에 대한 Dr. Dobb의 글(역자 주: 6초 걸리던 게 5초 걸린다고 되어있음)이 있으니 참고하자.
[편집] 참조
원문 : http://eclipsesource.com/blogs/2012/10/26/top-10-tips-how-to-be-more-productive-with-the-best-ide/
'Eclipse' 카테고리의 다른 글
| 이클립스 컬럼모드 사용하기 (0) | 2015.07.09 |
|---|---|
| 이클립스 workspace 변경 방법 (0) | 2015.07.09 |
| 이클립스 속도 향상 (eclipse.ini 수정) (0) | 2015.07.09 |
| Eclipse에서 Android Project가 안보일 때 (0) | 2015.04.23 |
| 이클립스 단축키(Shortcut) (0) | 2015.04.23 |



