MySQL 部分命令用法--帮助命令

转自:http://zhumeng8337797.blog.163.com/blog/static/1007689142011279194234/


NT上操作mysql

启动:NET START mysql                  停止:NET STOP mysql

杀死MySQL服务器:C:\mysql\bin\mysqladmin -u root shutdown

frmMYIMYD   分别是   MyISAM   表的表结构\索引\数据文件

control-D断开    \c 取消命令

3.1 语句

mysql 主机名 用户名 用户密码          连接MySQL服务器

如果你在一个表上有索引,SHOW INDEX FROM tbl_name生成有关它们的信息

 

当前是哪个数据库

mysql> SELECT DATABASE();

当前数据库包含哪些表

mysql> SHOW TABLES;

查看表结构

mysql> DESCRIBE 表名;

查看服务器上当前存在什么数据库

mysql> SHOW DATABASES;

如果test数据库存在,尝试存取它

mysql> USE test// USE语句,必须在一个单行上给出,不需要一个分号

创建数据库

mysql> CREATE DATABASE 库名;

创建数据库中的表

create table TABLENAME (NAME1 int, NAME2 char(10), …… );

删除数据库前,有提示

mysqladmin drop databasename

重命名表:

mysql > alter table t1 rename t2;

备份数据库

shell> mysqldump -h host -u root -p dbname >dbname_backup.sql

恢复数据库

shell> mysqladmin -h myhost -u root -p create dbname

表中增加字段

alter table dbname add column userid int(11) not null primary key auto_increment;

直接删除数据库,不提醒

drop database name

//drop database if exists school; //如果存在SCHOOL则删除

 

 

 

帮助命令后:     \h := help := \?

\?

同‘help’。

print

\p

打印当前命令

clear

\c

清除命令。

prompt

\R

改变提示符

connect

\r

连接服务器,可选数据库和主机。

quit

\q

退出

delimiter

\d

设置定界符,

rehash

\#

彻底重建无用信息

ego

\G

发送命令到服务器,直显结果。

source

\.

执行一个SQL脚本,

exit

\q

退出,同quit

status

\s

取得服务器信息

go

\g

发送命令到服务器

tee

\T

设置输出文件,并追加。

help

\h

显示帮助

use

\u

使用另一个数据库。

notee

\t

不能写入输出文件。

warnings

\W

每一条语句后显警告。

 

 

 

nowarning

\w

不显警告

 

 

创建数据库            mysql> CREATE DATABASE 库名;

//――――――――――――――――――――――――――――

创建数据库表

1.

CREATE TABLE shop (

 Article           INT(4) UNSIGNED ZEROFILL          DEFAULT '0000'       NOT NULL,

 dealer           CHAR(20)                       DEFAULT ''           NOT NULL,

 price            DO LE(16,2)                   DEFAULT '0.00'        NOT NULL,

 PRIMARY KEY(article, dealer)       )        ;

// UNSIGNED ZEROFILL unsigned表明数据类型是无符号的数值类型。zerofill用零来填充。

 

INSERT INTO shop VALS(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69),(3,'D',1.25),(4,'D',19.95);

 

2.

create table teacher (

id int(3) auto_increment not null primary key,

name char(10) not null,           address varchar(50) default '深圳',        year date                   )        ;

//每个记录自动加一auto_increment

insert into teacher vals('','glchengang','深圳一中','1976-10-10'),('','jack','深圳一中','1975-12-23');

SELECT article, dealer, price  FROM   shop                  ORDER BY price DESC     

LIMIT 1  // LIMIT子句只得到的第一行

 

3.2 学习使用

3.2.1 修改mysql中用户密码

#在控制台上输入

bash$ mysql -u root mysql      #mysql客户程序

mysql update user set password=password("new password") where user='hunte';

mysql flush privileges; //刷新数据库

mysql quit

 

bash$ mysql -u root mysql

mysql set password for hunte=password('new password');

mysql quit

 

bash$ mysqladmin -u root "old password" "new password"

 

mysql 改了root密码后无法登录:-uroot之间不留空格     mysql   -uroot   -p

 

3.2.2导入/

导出表mysqldump --opt school > school.sql

注释:将数据库school中的表全部备份到school.sql文件,school.sql是一个文本文件,文件名任取。

mysqldump --opt school teacher st?nt > school.teacher.st?nt.sql

注释:将数据库school中的teacher表和st?nt表备份到school.teacher.st?nt.sql文件,school.teacher.st?nt.sql是一个文本文件,文件名任取,打开看看你会有新发现。

 

导入表        mysql>create database school;       mysql>use school;

mysql>source school.sql;      (或将school.sql换为school.teacher.sql / school.teacher.st?nt.sql)

 

导出数据库mysqldump --databases db1 db2 > db1.db2.sql

注释:将数据库dbldb2备份到db1.db2.sql文件,db1.db2.sql是一个文本文件,文件名任取。

(举个例子:mysqldump -h host -u user -p pass --databases dbname > file.dump就是把host上的以名字user,口令pass的数据库dbname导入到文件file.dump中。)

 

导入数据库mysql < db1.db2.sql

复制数据库mysqldump --all-databases > all-databases.sql

注释:将所有数据库备份到all-databases.sql文件,all-databases.sql是一个文本文件,文件名任取。

 

导入数据库

mysql>drop database a;           mysql>drop database b;           mysql>drop database c;           ...

mysql>source all-databases.sql;           (exit退出mysql mysql < all-databases.sql)

 

测试

1.进入安装有MYSQLDUMP的文件夹:

mysqldump -h localhost -u root -p lwf_db shop> d:\shop.sql           //-h地址 –u用户名 –p数据库

 

3.2.3查询问题

1.不支持INNOT IN

MySQL中下列语句还不能工作:

SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);

SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);

 

然而,在很多情况下,你可以重写查询,而不用子选择:

SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id;

SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id where table2.id IS NULL

 

2.

MySQL还不支持Oracle SQL的扩展:SELECT ... INTO TABLE ....,相反MySQL支持ANSI SQL句法INSERT INTO ... SELECT ...基本上他们是一样的。另外,你可使用SELECT INTO OUTFILE...CREATE TABLE ... SELECT解决你的问题。

3.3 句法与语法

3.3.1 大小写问题

MySQLwindows下是不区分大小写的;在linux下表名区分大小写;如何让在windows下大小写敏感,相应的更改windowsMySQL的设置就行了。

 

MySQL的配置文件my.ini中增加一行:lower_case_table_names = 0其中0:区分大小写,1:不区分大小写

 

MySQLLinux下数据库名、表名、列名、别名大小写规则是这样的:

  1、数据库名与表名是严格区分大小写的;

  2、表的别名是严格区分大小写的;

  3、列名与列的别名在所有的情况下均是忽略大小写的;

  4、变量名也是严格区分大小写的;

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;这样就是错误的大小写必须一致

 

3.3.2 演示引号和转义如何工作:

mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';

+-------+---------+-----------+--------+--------+

| hello | "hello" | ""hello"" | hel'lo | 'hello |

+-------+---------+-----------+--------+--------+

 

mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";

+-------+---------+-----------+--------+--------+

| hello | 'hello' | ''hello'' | hel"lo | "hello |

+-------+---------+-----------+--------+--------+

 

3.3.3 引号/斜线

NUL         ASCII  0                         '\0'(一个反斜线和一个ASCII '0')表示它。

               ASCII  92    反斜线。用'\\'表示。

'                  ASCII  39    单引号。用“\'”表示。

              ASCII  34    双引号。用“\"”表示。

如果标识符是一个限制词或包含特殊字符用单引号引用。

select @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;

+----------------------+------+------+------+

| @t1:=(@t2:=1)+@t3:=4 | @t1  | @t2  | @t3  |

+----------------------+------+------+------+

|                    5 |    5 |    1 |    4 |

+----------------------+------+------+------+

(这里,不得不使用 := 句法,因为 = 是为比较保留的)

 

3.3.4注释句法

MySQL服务器支持# to end of line-- to end of line/* in-line or multiple-line */注释风格:

mysql> select 1+1;     # This comment contins to the end of line

mysql> select 1+1;     -- This comment contins to the end of line

mysql> select 1 /* this is an in-line comment */ + 1;

注意--注释风格要求你在--以后至少有一个空格!

 

3.3.5语句用法

expr BETWEEN min AND max

如果expr对大于或等于minexpr是小于或等于maxBETWEEN返回1,否则它返回0。如果所有的参数类型是一样得,这等价于表达式(min <= expr AND expr <= max)。第一个参数(expr)决定比较如何被执行。如果expr是一个大小写不敏感的字符串表达式,进行一个大小写不敏感的字符串比较。如果expr是一个大小写敏感的字符串表达式,进行一个大小写敏感的字符串比较。如果expr是一个整数表达式,进行整数比较。否则,进行一个浮点(实数)比较。

mysql> select 1 BETWEEN 2 AND 3;                -> 0

mysql> select 'b' BETWEEN 'a' AND 'c';          -> 1

mysql> select 2 BETWEEN 2 AND '3';              -> 1

mysql> select 2 BETWEEN 2 AND 'x-3';           -> 0            //大小比较,->是返回“真/假”值

 

expr IN (val,...)

如果expr是在IN表中的任何值,返回1,否则返回0。如果所有的值是常数,那么所有的值根据expr类型被计算和排序,然后项目的搜索是用二进制的搜索完成。这意味着如果IN值表全部由常数组成,IN是很快的。如果expr是一个大小写敏感的字符串表达式,字符串比较以大小写敏感方式执行。

mysql> select 2 IN (0,3,5,'wefwf');                   -> 0

mysql> select 'wefwf' IN (0,3,5,'wefwf');        -> 1

expr NOT IN (val,...) NOT (expr IN (val,...))相同。

ISNULL(expr) 如果exprNULLISNULL()返回1,否则它返回0

mysql> select ISNULL(1+1);                                -> 0

mysql> select ISNULL(1/0);                                -> 1

 

注意,使用=NULL的值比较总为假!

 

COALESCE(list) 回来list中第一个非NULL的单元。 //coalesce接合      coal

mysql> select COALESCE(NULL,1);                   -> 1

mysql> select COALESCE(NULL,NULL,NULL);     -> NULL

 

INTERVAL(N,N1,N2,N3,...)                                                   //interval间隔距离

如果N< N1,返回0,如果N< N2,返回1等等。所有的参数被当作整数。为了函数能正确地工作,它要求N1<N2<N3< ...<Nn。这是因为使用二进制搜索(很快) //与最先大于第一个数的间隔几个位置。

mysql> select INTERVAL(23, 1, 15, 17, 30, 44, 200);     -> 3

mysql> select INTERVAL(10, 1, 10, 100, 1000);         -> 2

mysql> select INTERVAL(22, 23, 30, 44, 200);          -> 0 

 

ALTER TABLE句法                                  OPTIMIZE TABLE tbl_name回收闲置的空间。

重命名表,从t1t2

mysql> ALTER TABLE t1 RENAME t2;

为了改变列a,从INTEGER改为TINYINT NOT NULL(名字一样),并且改变列b,从CHAR(10)改为CHAR(20),同时重命名它,从b改为c

mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);

增加一个新TIMESTAMP列,名为d

mysql> ALTER TABLE t2 ADD d TIMESTAMP;

在列d上增加一个索引,并且使列a为主键

mysql> ALTER TABLE t2 ADD INDEX (d), ADDPRIMARY KEY (a);

删出列c

mysql> ALTER TABLE t2 DROP COLUMN c;

 v

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值