>  기사  >  php教程  >  MySQL 명령 목록

MySQL 명령 목록

高洛峰
高洛峰원래의
2016-12-14 10:40:441072검색

1. 데이터베이스에 연결합니다
형식: mysql -h 호스트 주소 -u 사용자 이름 -p 사용자 비밀번호
1.1.
먼저 DOS 창을 열고 mysqlbin 디렉토리를 입력한 다음 mysql -u root -p 명령을 입력하면 비밀번호를 입력하라는 메시지가 표시됩니다.
입력할 수도 있고 입력하지 않을 수도 있습니다. 사용자 이름 앞에는 공백이 있어야 하며, 비밀번호 앞에는 공백이 없어야 합니다. 그렇지 않으면 비밀번호를 다시 입력하라는 메시지가 표시됩니다.
MYSQL을 방금 설치한 경우 슈퍼유저 루트에는 비밀번호가 없으므로 Enter 키를 눌러 MYSQL을 입력하면 됩니다. mysql>

1.2 원격 호스트 MYSQL에 연결합니다.

원격 호스트의 IP는 110.110.110.110, 사용자 이름은 root, 비밀번호는 abcd123이라고 가정합니다. 그런 다음 다음 명령을 입력합니다:
mysql -h110.110.110.110 -u root -p 123; (참고: u와 root 사이에 공백을 추가할 필요가 없으며 다른 경우에도 마찬가지입니다.)
1.3 MYSQL 명령 종료: 종료(반납)

2. 사용자 추가
형식: 데이터베이스에서 선택 권한 부여.* "비밀번호"로 식별되는 사용자 이름@로그인 호스트
2.1 사용자 test1 추가 비밀번호 abc를 사용하여 모든 호스트에 로그인하고 모든 데이터베이스에 대한 쿼리, 삽입, 수정 및 삭제 권한을 가질 수 있습니다.

먼저 루트 사용자로 MYSQL에 연결한 후 다음 명령을 입력하세요.

grant select,insert,update,delete on *.* to [email=test1@”%]test1@”%[/email]” Identified by “abc”;

그러나 사용자를 추가하는 것은 매우 위험합니다. 인터넷상의 어느 컴퓨터에서나 mysql 데이터베이스에 로그인하여 데이터로 원하는 작업을 수행할 수 있습니다. 해결 방법은 2.2를 참조하세요.
2.2 비밀번호가 abc인 사용자 test2를 추가하면 해당 사용자는 localhost에만 로그인할 수 있고 데이터베이스 mydb를 쿼리, 삽입, 수정 및 삭제할 수 있습니다. (localhost는 로컬 호스트, 즉 MYSQL 데이터베이스))가 위치하므로, 사용자가 test2의 비밀번호를 알고 있더라도 인터넷에서 데이터베이스에 직접 접근할 수 없고, MYSQL 호스트의 웹 페이지를 통해서만 접근할 수 있다.

grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;

test2에 비밀번호가 포함되지 않도록 하려면 다른 명령을 입력하여 비밀번호를 제거할 수 있습니다.

grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”

3. 데이터베이스 운영

3.1 데이터베이스 생성
참고: 데이터베이스를 생성하기 전에 먼저 Mysql 서버에 연결해야 합니다.
명령: create Database 3f1d2f31bc23866b3c532153a3391212
예제 1: xhkdb라는 이름의 데이터베이스 생성

mysql> create database xhkdb;

예제 2: 데이터베이스 생성 및 사용자 할당
①CREATE DATABASE 데이터베이스 이름;
②GRANT SELECT,INSERT,UPDATE, DELETE,CREATE, DROP,ALTER ON 데이터베이스 이름.* TO username@localhost IDENTIFIED BY 'password';
③SET PASSWORD FOR 'database name'@'localhost' = OLD_PASSWORD('password');
3개의 명령 실행 순서대로 데이터베이스 생성을 완료합니다.
참고: 중국어 '비밀번호'와 '데이터베이스'는 사용자가 직접 설정해야 합니다.

3.2 데이터베이스 표시
명령: 데이터베이스 표시(참고: 끝에 s가 있음)

mysql> show databases

3.3 데이터베이스 삭제
명령: 데이터베이스 삭제 29a40820c7c7bfe9c0f66fe9f182b5a0 사용
예: xhkdb 데이터베이스가 있으면 액세스를 시도합니다. mysql> >화면 프롬프트: 데이터베이스 변경됨
use 문은 db_name 데이터베이스를 후속 문에 대한 기본(현재) 데이터베이스로 사용하도록 MySQL에 알릴 수 있습니다. 이 데이터베이스는 세그먼트가 끝날 때까지 또는 다른 USE 문이 실행될 때까지 기본 데이터베이스로 유지됩니다.

mysql> USE db1;
mysql> SELECT COUNT(*) FROM mytable; # selects from db1.mytable
mysql> USE db2;
mysql> SELECT COUNT(*) FROM mytable; # selects from db2.mytable
USE 문을 사용하여 특정 현재 데이터베이스를 표시해도 다른 테이블에 액세스하는 데 방해가 되지 않습니다. 데이터베이스. 다음 예에서는 db1 데이터베이스의 작성자 테이블과 db2 데이터베이스의 편집 테이블에 액세스할 수 있습니다.

mysql> USE db1;
mysql> SELECT author_name,editor_name FROM author,db2.editor
 ->  WHERE author.editor_id = db2.editor.editor_id;
데이터베이스를 종료하거나 다른 데이터베이스에 연결하려면 '다른 데이터베이스 이름' 사용자만 사용하면 됩니다.

3.5 현재 선택된 데이터베이스

명령: mysql> select Database();
MySQL의 SELECT 명령은 다른 프로그래밍 언어의 인쇄 또는 쓰기와 유사하며, 문자열을 표시하는 데 사용할 수 있습니다. 숫자, 수학식의 결과 등 MySQL에서 SELECT 명령의 특수 기능을 사용하는 방법은 무엇입니까?

(1) MYSQL 버전을 표시합니다

mysql> select version(); 
+-----------------------+ 
| version()    | 
+-----------------------+ 
| 6.0.4-alpha-community | 
+-----------------------+ 
1 row in set (0.02 sec)
(2). 현재 시간을 표시합니다

mysql> select now(); 
+---------------------+ 
| now()    | 
+---------------------+ 
| 2009-09-15 22:35:32 | 
+---------------------+ 
1 row in set (0.04 sec)
(3). 일

SELECT DAYOFMONTH(CURRENT_DATE); 
+--------------------------+ 
| DAYOFMONTH(CURRENT_DATE) | 
+--------------------------+ 
|      15 | 
+--------------------------+ 
1 row in set (0.01 sec) 
  
SELECT MONTH(CURRENT_DATE); 
+---------------------+ 
| MONTH(CURRENT_DATE) | 
+---------------------+ 
|     9 | 
+---------------------+ 
1 row in set (0.00 sec) 
  
SELECT YEAR(CURRENT_DATE); 
+--------------------+ 
| YEAR(CURRENT_DATE) | 
+--------------------+ 
|    2009 | 
+--------------------+ 
1 row in set (0.00 sec)
(4). 문자열

mysql> SELECT "welecome to my blog!"; 
+----------------------+ 
| welecome to my blog! | 
+----------------------+ 
| welecome to my blog! | 
+----------------------+ 
1 row in set (0.00 sec)
(5)을 사용하는 경우

select ((4 * 4) / 10 ) + 25; 
+----------------------+ 
| ((4 * 4) / 10 ) + 25 | 
+----------------------+ 
|    26.60 | 
+----------------------+ 
1 row in set (0.00 sec)
(6)을 연결합니다.

참고: 여기서는 CONCAT() 함수를 사용하여 문자열을 연결합니다. 그리고 앞서 배운 AS를 사용해 결과 컬럼 'CONCAT(f_name, " ", l_name)'에 가명을 부여했습니다
select CONCAT(f_name, " ", l_name) 
AS Name
from employee_data 
where title = 'Marketing Executive'; 
+---------------+ 
| Name   | 
+---------------+ 
| Monica Sehgal | 
| Hal Simlai | 
| Joseph Irvine | 
+---------------+ 
3 rows in set (0.00 sec)

4. 테이블 작업

4.1 테이블 생성

명령: create table 722e3d59fd24604761db25f00f9b264f ( 05e53598b3333c5d867d41907a8740c6 762f313d7c598048011288763eb402bb [,..9b25aed73ca07819ed1808703b8f8173 e5c0d4be8e2fbfc7b53b811c65e8ac15]);
예를 들어 MyClass Table

4.2 테이블 구조 가져오기

명령: desc 테이블 이름 또는 테이블 이름의 열 표시
mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));
mysql> desc MyClass;
mysql> show columns from MyClass;

使用MySQL数据库desc 表名时,我们看到Key那一栏,可能会有4种值,即' ','PRI','UNI','MUL'。
(1).如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列;
(2).如果Key是PRI,  那么该列是主键的组成部分;
(3).如果Key是UNI,  那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL);
(4).如果Key是MUL,  那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL。
如果对于一个列的定义,同时满足上述4种情况的多种,比如一个列既是PRI,又是UNI,那么"desc 表名"的时候,显示的Key值按照优先级来显,PRI->UNI->MUL。那么此时,显示PRI。
一个唯一性索引列可以显示为PRI,并且该列不能含有空值,同时该表没有主键。
一个唯一性索引列可以显示为MUL, 如果多列构成了一个唯一性复合索引,因为虽然索引的多列组合是唯一的,比如ID+NAME是唯一的,但是没一个单独的列依然可以有重复的值,只要ID+NAME是唯一的即可。

4.3删除表
命令:drop table a26d98d33123a70024fa8ba5642906c6
例如:删除表名为 MyClass 的表

mysql> drop table MyClass;

DROP TABLE用于取消一个或多个表。您必须有每个表的DROP权限。所有的表数据和表定义会被取消,所以使用本语句要小心!
注意:对于一个带分区的表,DROP TABLE会永久性地取消表定义,取消各分区,并取消储存在这些分区中的所有数据。DROP TABLE还会取消与被取消

的表有关联的分区定义(.par)文件。
对与不存在的表,使用IF EXISTS用于防止错误发生。当使用IF EXISTS时,对于每个不存在的表,会生成一个NOTE。
RESTRICT和CASCADE可以使分区更容易。目前,RESTRICT和CASCADE不起作用。

4.4向表插入数据
命令:insert into a26d98d33123a70024fa8ba5642906c6 [( d4e7ec1944da0629f9db5d84216a428c[,..2c85b2db0c99e1ea238a1572644c7331 ])] values ( 值1 )[, ( 值n )]
例如:往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为82.99, 编号为3 的名为

Wang 的成绩为96.5。
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
注意:insert into每次只能向表中插入一条记录。

4.5查询表
(1)、查询所有行
命令: select f7b669960012ec3b697d0ecedc519e2d from 4d76b20d91d2b1cadcd47c2c81e2bca2 where b3edc94e70b2c7ee0c3cfeb91d0d0010
例如:查看表 MyClass 中所有数据
mysql> select * from MyClass;
(2)、查询前几行数据
例如:查看表 MyClass 中前2行数据
mysql> select * from MyClass order by id limit 0,2;
select一般配合where使用,以查询更精确更复杂的数据。

4.6删除表
命令:delete from 表名 where 表达式
例如:删除表 MyClass中编号为1 的记录
mysql> delete from MyClass where id=1;

4.7修改表中的数据
语法:update 表名 set 字段=新值,… where 条件
mysql> update MyClass set name='Mary' where id=1;

例子1:单表的MySQL UPDATE语句:

 UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]

例子2:多表的UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]

UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。


4.8增加表字段
命令:alter table 表名 add字段 类型 其他;
例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0
mysql> alter table MyClass add passtest int(4) default '0'[/code]
加索引:mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
例子: mysql> alter table employee add index emp_name (name);
加主关键字的索引:mysql> alter table 表名 add primary key (字段名);
例子: mysql> alter table employee add primary key(id);
加唯一限制条件的索引:mysql> alter table 表名 add unique 索引名 (字段名);
例子: mysql> alter table employee add unique emp_name2(cardnumber);
删除某个索引:mysql> alter table 表名 drop index 索引名;
例子: mysql>alter table employee drop index emp_name;
增加字段:mysql> ALTER TABLE table_name ADD field_name field_type;
修改原字段名称及类型:mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
修改字段类型:mysql>ALTER TABLE table_name MODIFY colum_name field_type new_type
删除字段:MySQL ALTER TABLE table_name DROP field_name;

4.9修改表名
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改为YouClass

mysql> rename table MyClass to YouClass;

当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。
如果在多表更名中,MySQL 遭遇到任何错误,它将对所有被更名的表进行倒退更名,将每件事物退回到最初状态。
RENAME TABLE 在 MySQL 3.23.23 中被加入。


五、备份数据

命令在DOS的[url=file://\\mysql\\bin]\\mysql\\bin[/url]目录下执行
(1).导出整个数据库
导出文件默认是存在mysql\bin目录下
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql
(2).导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql
(3).导出一个数据库结构
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table
(4).带语言参数导出
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql
例如,将aaa库备份到文件back_aaa中:

[root@test1 root]# cd /home/data/mysql
[root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa

六、一个完整的数据库创建实例

drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
 id int(3) auto_increment not null primary key,
 name char(10) not null,
 address varchar(50) default ''深圳'',
 year date
); //建表结束
 
//以下为插入字段
insert into teacher values('''',''glchengang'',''深圳一中'',''1976-10-10'');
insert into teacher values('''',''jack'',''深圳一中'',''1975-12-23'');

注:在建表中
(1)、将ID设为长度为3的数字字段:int(3);并让它每个记录自动加一:auto_increment;并不能为空:not null;而且让他成为主字段primary key。
(2)、将NAME设为长度为10的字符字段
(3)、将ADDRESS设为长度50的字符字段,而且缺省值为深圳。

如果你在mysql提示符键入上面的命令也可以,但不方便调试。
(1)、你可以将以上命令原样写入一个文本文件中,假设为school.sql,然后复制到c:\\下,并在DOS状态进入目录[url=file://\\mysql\\bin]\

\mysql\\bin[/url],然后键入以下命令:mysql -uroot -p密码 541df8edea06165a8e9c40987b9b8ba8 source c:\\school.sql; 也可以将school.sql文件导入数据库中。

以上就是完整版的Mysql命令大全,希望对大家熟练使用Mysql命令有所帮助。


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.