다음은 우리가 자주 사용하고 매우 유용한 MySQL 명령입니다. 아래에서 #은 Unix 명령줄에서 명령을 실행한다는 의미이고, mysql> 은 현재 MySQL 서버에 로그인되어 있고 mysql 명령이 mysql 클라이언트에서 실행된다는 의미입니다.
MySQL에 로그인하려면 -h로 호스트 이름을 지정해야 합니다.
# [mysql dir]/bin/mysql -h hostname -u root -p
데이터베이스를 만듭니다.
mysql> create database [databasename];
모든 데이터베이스를 나열합니다.
mysql> show databases;
데이터베이스로 전환합니다.
mysql> use [db name];
데이터베이스의 모든 테이블을 표시합니다.
mysql> show tables;
데이터 테이블의 필드 형식을 봅니다.
mysql> describe [table name];
데이터베이스를 삭제합니다.
mysql> drop database [database name];
데이터 테이블을 삭제합니다.
mysql> drop table [table name];
모든 데이터를 데이터 테이블로 표시합니다.
mysql> SELECT * FROM [table name];
지정된 데이터 테이블의 컬럼 정보를 반환합니다.
mysql> show columns from [table name];
선택한 행의 표시를 필터링하려면 "무엇이든" 값을 사용하세요.
mysql> SELECT * FROM [table name] WHERE [field name] = "whatever";
이름 "Bob"과 전화번호 "3444444"가 포함된 모든 기록을 표시합니다.
mysql> SELECT * FROM [table name] WHERE name = "Bob" AND phone_number = '3444444';
이름 "Bob"과 전화번호 "3444444"가 포함되지 않은 모든 기록을 표시하고 전화번호 필드를 기준으로 정렬합니다.
mysql> SELECT * FROM [table name] WHERE name != "Bob" AND phone_number = '3444444' order by phone_number;
이름이 "bob"으로 시작하고 전화번호가 "3444444"인 모든 레코드를 표시합니다.
mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444';
이름이 "bob"으로 시작하고 전화번호가 "3444444"인 레코드 1~5번째를 표시합니다.
mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444' limit 1,5;
정규식을 사용하여 레코드를 찾습니다. 대소문자를 구분하려면 "정규식 바이너리"를 사용하세요. 이 명령은 a로 시작하는 모든 레코드를 찾습니다.
mysql> SELECT * FROM [table name] WHERE rec RLIKE "^a";
고유한 기록을 반환합니다.
mysql> SELECT DISTINCT [column name] FROM [table name];
선택한 기록을 오름차순 또는 내림차순으로 표시합니다.
mysql> SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;
행 수를 반환합니다.
mysql> SELECT COUNT(*) FROM [table name];
지정된 열 값의 합계를 통계합니다.
mysql> SELECT SUM(*) FROM [table name];
테이블에 참여하세요.
mysql> select lookup.illustrationid, lookup.personid,person.birthday from lookup left join person on lookup.personid=person.personid=statement to join birthday in person table with primary illustration id;
새 사용자를 만듭니다. 루트로 로그인하십시오. mysql 데이터베이스로 전환하고, 사용자를 생성하고, 권한을 새로 고칩니다.
# mysql -u root -p mysql> use mysql; mysql> INSERT INTO user (Host,User,Password) VALUES('%','username',PASSWORD('password')); mysql> flush privileges;
unix 명령줄에서 사용자 비밀번호를 변경하세요.
# [mysql dir]/bin/mysqladmin -u username -h hostname.blah.org -p password 'new-password'
mysql 명령줄에서 사용자 비밀번호를 변경하세요. 루트로 로그인하여 비밀번호를 설정하고 권한을 업데이트하세요.
# /etc/init.d/mysql stop # mysqld_safe --skip-grant-tables & # mysql -u root mysql> use mysql; mysql> update user set password=PASSWORD("newrootpassword") where User='root'; mysql> flush privileges; mysql> quit # /etc/init.d/mysql stop # /etc/init.d/mysql start
루트 비밀번호가 비어 있으면 루트 비밀번호를 설정하세요.
# mysqladmin -u root password newpassword
루트 비밀번호를 업데이트하세요.
# mysqladmin -u root -p oldpassword newpassword
사용자 "bob"이 비밀번호 "passwd"를 사용하여 localhost에서 서버에 연결하도록 허용합니다. 루트로 로그인하고 mysql 데이터베이스를 전환하십시오. 권한을 설정하고 권한을 업데이트하세요.
# mysql -u root -p mysql> use mysql; mysql> grant usage on *.* to bob@localhost identified by 'passwd'; mysql> flush privileges;
데이터베이스 db에 대한 권한을 설정합니다. 루트로 로그인하고 mysql 데이터베이스로 전환하여 권한을 부여하고 권한을 업데이트하세요.
# mysql -u root -p mysql> use mysql; mysql> INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('%','databasename','username','Y','Y','Y','Y','Y','N'); mysql> flush privileges;
또는
mysql> grant all privileges on databasename.* to username@localhost; mysql> flush privileges;
기존 테이블의 데이터를 업데이트합니다.
mysql> UPDATE [table name] SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where [field name] = 'user';
테이블에서 [필드 이름] = '무엇이든'인 행을 삭제합니다.
mysql> DELETE from [table name] where [field name] = 'whatever';
데이터베이스에 대한 권한을 업데이트합니다.
mysql> flush privileges;
열을 삭제하세요.
mysql> alter table [table name] drop column [column name];
DB에 컬럼을 추가합니다.
mysql> alter table [table name] add column [new column name] varchar (20);
열 이름을 변경합니다.
mysql> alter table [table name] change [old column name] [new column name] varchar (50);
고유 열을 추가합니다.
mysql> alter table [table name] add unique ([column name]);
열 값을 더 크게 설정하세요.
mysql> alter table [table name] modify [column name] VARCHAR(3);
고유한 열을 삭제하세요.
mysql> alter table [table name] drop index [colmn name];
CSV 파일을 테이블로 가져옵니다.
mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);
모든 데이터베이스를 sql 파일로 내보냅니다.
# [mysql dir]/bin/mysqldump -u root -ppassword --opt >/tmp/alldatabases.sql
데이터베이스를 내보냅니다.
# [mysql dir]/bin/mysqldump -u username -ppassword --databases databasename >/tmp/databasename.sql
데이터베이스에서 테이블을 내보냅니다.
# [mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql
SQL 파일에서 데이터베이스(데이터 테이블)를 복원합니다.
# [mysql dir]/bin/mysql -u username -ppassword databasename < /tmp/databasename.sql
데이터 테이블 생성 예시 1.
mysql> CREATE TABLE [table name] (firstname VARCHAR(20), middleinitial VARCHAR(3), lastname VARCHAR(35),suffix VARCHAR(3),officeid VARCHAR(10),userid VARCHAR(15),username VARCHAR(8),email VARCHAR(35),phone VARCHAR(25), groups VARCHAR(15),datestamp DATE,timestamp time,pgpemail VARCHAR(255));
데이터 테이블 생성 예시 2.
mysql> create table [table name] (personid int(50) not null auto_increment primary key,firstname varchar(35),middlename varchar(50),lastnamevarchar(50) default 'bato');