MySQL 部分用法--帮助命令

1.NT上操作mysql(管理员身份运行dos)

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

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

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

control-D断开\c取消命令

3.1 语句

连接MySQL服务器mysql �Ch 主机名 �Cu 用户名 �Cp 用户密码 如果你在一个表上有索引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

直接删除数据库,不提醒drop database name

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

重命名表: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;

帮助命令后: \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中用户密码

#在控制台上输入

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

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

mysqlflush privileges; //刷新数据库

mysqlquit

bash$ mysql -u root mysql

mysqlset password for hunte=password('new password');

mysqlquit

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

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

导入/

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

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

mysqldump --opt school teacher student > school.teacher.student.sql

注释:将数据库school中的teacher表和st?nt表备份到school.teacher.student.sql文件,school.teacher.student.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退出mysqlmysql < all-databases.sql)

测试:进入安装有MYSQLDUMP的文件夹:

mysqldump -h localhost -u root -p lwf_db shop> d:\shop.sql

//-h地址 �Cu用户名 �Cp数据库

查询问题

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解决你的问题。

句法与语法

大小写问题

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;这样就是错误的大小写必须一致。

演示引号和转义如何工作

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 |

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

引号/斜线

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 |

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

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

注释句法

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;

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

语句用法

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的值比较总为假!

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句法

重命名表,从t1t2mysql> 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), ADD PRIMARY KEY (a);

删出列c

mysql> ALTER TABLE t2 DROP COLUMN c;


你可能感兴趣的:(mysql,database,帮助命令)