Mysql常用命令详解
Mysql安装目录
数据库目录
/var/lib/mysql/
配置文件
/usr/share/mysql(mysqlserver命令及配置文件)
相关命令
/usr/bin(mysqladmin mysqldump等命令)
启动脚本
/etc/initd/mysql(启动脚本文件mysql的目录)
系统管理
连接MySQL
格式:
mysql -h 主机地址 -u用户名 -p用户密码
例 1:连接到本机上的 MySQL。
hadoop@ubuntu:~$ mysql
-uroot -pmysql;
例 2:连接到远程主机上的 MYSQL。
hadoop@ubuntu:~$ mysql -h
127001 -uroot -pmysql;
修改新密码
在终端输入:mysql -u用户名 -p密码,回车进入Mysql。
>
use mysql;
> update user set password=PASSWORD('新密码') where
user='用户名';
> flush privileges; #更新权限
> quit; #退出
增加新用户
格式:grant select on 数据库 to
用户名@登录主机 identified by '密码'
举例:
例 1:增加一个用户 test1 密码为
abc,让他可以在任何主机上登录,并对所有数据库有
查询、插入、修改、删除的权限。首先用以 root 用户连入
MySQL,然后键入以下命令:
mysql>grant select,insert,update,delete on to
root@localhost identified by 'mysql';
或者
grant all privileges on to
root@localhost identified by 'mysql';
然后刷新权限设置。
flush privileges;
例
2:如果你不想 root 有密码 *** 作数据库“mydb”里的数据表,可以再打一个命令将密码消掉。
grant
select,insert,update,delete on mydb to root@localhost identified by
'';
删除用户
hadoop@ubuntu:~$ mysql
-u用户名 -p密码
mysql>delete from user where user='用户名' and
host='localhost';
mysql>flush privileges;
//删除用户的数据库
mysql>drop
database dbname;
数据库 *** 作
显示所有的数据库
mysql> show databases;(注意:最后有个
s)
创建数据库
mysql> create database
test;
连接数据库
mysql> use
test;
查看当前使用的数据库
mysql> select
database();
当前数据库包含的表信息
mysql>
show tables; (注意:最后有个 s)
删除数据库
mysql> drop database
test;
表 *** 作
备注: *** 作之前使用“use
<数据库名>”应连接某个数据库。
建表
命令:create
table <表名> (<字段名 1> <类型 1> [,<字段名 n> <类型
n>]);
例子:
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));
获取表结构
命令: desc 表名,或者show columns from
表名
例子:
mysql> describe MyClass
mysql> desc MyClass;
mysql>
show columns from MyClass;
删除表
命令:drop table <表名>
例如:删除表名为
MyClass 的表
mysql> drop table MyClass;
插入数据
命令:insert into <表名> [( <字段名
1>[,<字段名 n > ])] values ( 值 1 )[, ( 值 n )]
例子:
mysql> insert
into MyClass values(1,'Tom',9645),(2,'Joan',8299), (2,'Wang',
9659);
查询表中的数据
查询所有行
mysql>
select from MyClass;
查询前几行数据
例如:查看表 MyClass 中前 2 行数据
mysql>
select from MyClass order by id limit 0,2;
或者
mysql> select from
MyClass limit 0,2;
删除表中数据
命令:delete from 表名 where 表达式
例如:删除表
MyClass 中编号为 1 的记录
mysql> delete from MyClass where id=1;
修改表中数据
命令:update 表名 set 字段=新值, where
条件
mysql> update MyClass set name='Mary' where id=1;
在表中增加字段
命令:alter table 表名 add 字段 类型
其他;
例如:在表 MyClass 中添加了一个字段 passtest,类型为 int(4),默认值为 0
mysql> alter
table MyClass add passtest int(4) default '0'
更改表名
命令:rename table 原表名 to 新表名;
例如:在表
MyClass 名字更改为 YouClass
mysql> rename table MyClass to
YouClass;
更新字段内容
命令:update 表名 set
字段名 = 新内容
update 表名 set 字段名 = replace(字段名, '旧内容', '新内容');
例如:文章前面加入 4
个空格
update article set content=concat(' ', content);
数据库导入导出
从数据库导出数据库文件
使用“mysqldump”命令
首先进入 DOS
界面,然后进行下面 *** 作。
1)导出所有数据库
格式:mysqldump -u [数据库用户名] -p
-A>[备份文件的保存路径]
2)导出数据和数据结构
格式:mysqldump -u [数据库用户名] -p
[要备份的数据库名称]>[备份文件的保存路径]
举例:
例 1:将数据库 mydb 导出到 e:\MySQL\mydbsql
文件中。
打开开始->运行->输入“cmd”,进入命令行模式。
c:\> mysqldump -h localhost -u
root -p mydb >e:\MySQL\mydbsql
然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。
例
2:将数据库 mydb 中的 mytable 导出到 e:\MySQL\mytablesql 文件中。
c:\> mysqldump -h
localhost -u root -p mydb mytable>e:\MySQL\mytablesql
例 3:将数据库 mydb
的结构导出到 e:\MySQL\mydb_strusql 文件中。
c:\> mysqldump -h localhost -u root -p
mydb --add-drop-table >e:\MySQL\mydb_strusql
备注:-h localhost
可以省略,其一般在虚拟主机上用。
3)只导出数据不导出数据结构
格式:
mysqldump -u [数据库用户名] -p -t
[要备份的数据库名称]>[备份文件的保存路径]
4)导出数据库中的Events
格式:mysqldump -u [数据库用户名] -p
-E [数据库用户名]>[备份文件的保存路径]
5)导出数据库中的存储过程和函数
格式:mysqldump -u [数据库用户名]
-p -R [数据库用户名]>[备份文件的保存路径]
从外部文件导入数据库中
1)使用“source”命令
首先进入“mysql”命令控制台,然后创建数据库,然后使用该数据库。最后执行下面 *** 作。
mysql>source
[备份文件的保存路径]
2)使用“<”符号
首先进入“mysql”命令控制台,然后创建数据库,然后退出 MySQL,进入 DOS
界面。最后执行下面 *** 作。
mysql -u root –p < [备份文件的保存路径]
给你copy一段:
执行sql脚本,可以有2种方法:
第一种方法:
在命令行下(未连接数据库),输入 mysql -h localhost -u root -p123456 < F:\hello world\niuzisql (注意路径不用加引号的!!) 回车即可
第二种方法:
在命令行下(已连接数据库,此时的提示符为 mysql> ),输入 source F:\hello world\niuzisql (注意路径不用加引号的) 或者 \ F:\hello world\niuzisql (注意路径不用加引号的) 回车即可
在navicat for mysql中选择连接服务器的数据库,右键选择数据传输
在连接服务器中的数据库上新建备份,从备份中导出sql,再导入到本地数据库中。
找到原因,原来是MySQL导入大批量数据的时候超出了默认允许最大的数据包,所以就提示MySQL server has gone away。
找到mycnf,在[mysqld]加入:max_allowed_packet=300M。(意思是最大允许数据包300M)
重启服务即可。
如果没能解决问题,那就是默认字符集设置与数据库设置的不一致。
Windows中修改用户连接字符编码格式:C:\Program Files\MySQL\MySQL Server 51\myini文件中修改default-character-set=utf8。
Linux中修改用户连接字符编码格式:修改mycnf(目录在/etc/mycnf),在[client]增加如下代码 default-character-set = utf8 。
修改完成,重启服务。
mysql 命令导入sql 进入mysql 安装所在的目录的子目录bin 输入执行导入sql的命令 例如: 你的mysql 安装在 d:\mysql 步骤如下: 开始 -> 运行 -> 输入CMD D: cd mysql\bin mysql -u root -p123456 test <d:\asql 其中 root 为你的mysql管理员用户名, 123456 为密码 test为数据库名称 d:\asql 为备份下来的数据文件所在位置
基本步骤如下:
一、创建包含sql命令的sql脚本文件
文件中包含一系列的sql语句,每条语句最后以;结尾,假设文件名为sssql,文件内容示例如下(使用“--”进行注释):--创建表create table 表名称(Guid Varchar(38) not null primary key,
Title Varchar(255),
) TYPE=InnoDB;--在表A中增加字段Status
alter table A add Status TinyInt default '0';--在表A上创建索引
create index XX_TaskId_1 on A(Id_);
--在A表中添加一条记录
Insert into A (Id,ParentId, Name) values(1,0,'名称');
--添加、修改、删除数据后,有可能需要提交事务
Commit;二、执行sql脚本文件方法一 使用cmd命令执行(以windows为例,unix或linux的在其类似的控制台下运行)
格式:Mysql的bin目录\mysql –u用户名 –p密码 –D数据库<sql脚本文件路径全名
示例:D:\mysql\bin\mysql –uroot –p123456 -Dtest<d:\test\sssql注意事项:1、如果在sql脚本文件中使用了use 数据库,则-D数据库选项可以忽略
2、如果Mysql的bin目录中包含空格,则需要使用“”包含,如:
“C:\Program Files\mysql\bin\mysql” –u用户名 –p密码 –D数据库<sql脚本文件路径全名
3、如果需要将执行结果输出到文件,可以采用以下模式
D:\mysql\bin\mysql –uroot –p123456 -Dtest<d:\test\sssql>d:\ddtxt
方法二 进入mysql的控制台后,使用source命令执行
1、进入mysql控制台
D:\mysql\bin\mysql –uroot –p123456 -Dtest
2、执行sql脚本文件
oracle 10g的DBMS_XPLAN包中display_cursor函数不同于display函数,display_cursor用于显示SQL语句的真实的执行计划,在大多数情况下,
显示真实的执行计划有助于更好的分析SQL语句的全过程,尤其是运行此SQL语句实时的I/O开销。通过对比预估的I/O与真实的I/O开销来判断
SQL语句所存在问题,如缺少统计信息,SQL语句执行的次数,根据实际中间结果集的大小来选择合适的连接方式等。本文仅仅讲述
display_cursor函数的使用。
一、display_cursor函数用法
1、display_cursor函数语法
DBMS_XPLANDISPLAY_CURSOR(
sql_id IN VARCHAR2 DEFAULT NULL,
cursor_child_no IN NUMBER DEFAULT NULL,
format IN VARCHAR2 DEFAULT 'TYPICAL');
2、display_cursor函数参数描述
sql_id
指定位于库缓存执行计划中SQL语句的父游标。默认值为null。当使用默认值时当前会话的最后一条SQL语句的执行计划将被返回
可以通过查询V$SQL 或V$SQLAREA的SQL_ID列来获得SQL语句的SQL_ID。
cursor_child_no
指定父游标下子游标的序号。即指定被返回执行计划的SQL语句的子游标。默认值为0。如果为null,则sql_id所指父游标下所有子游标
的执行计划都将被返回。
format
控制SQL语句执行计划的输出部分,即哪些可以显示哪些不显示。使用与display函数的format参数与修饰符在这里同样适用。
除此之外当在开启statistics_level=all时或使用gather_plan_statistics提示可以获得执行计划中实时的统计信息
有关详细的format格式描述请参考:dbms_xplan之display函数的使用 中format参数的描述
下面给出启用统计信息时format新增的修饰符
iostats 控制I/O统计的显示
last 默认,显示所有执行计算过的统计。如果指定该值,则只显示最后一次执行的统计信息
memstats 控制pga相关统计的显示
allstats 此为iostats memstats的快捷方式,即allstats包含了iostats和memstats
run_stats_last 等同于iostats last。只能用于oracle 10g R1
run_stats_tot 等同于iostats。只能用于oracle 10g R1
抓一个最近一小时最消耗IO的SQL:
SELECT sql_id, COUNT()
FROM gv$active_session_history ash, gv$event_name evt
WHERE ashsample_time > SYSDATE - 1 / 24
AND ashsession_state = 'WAITING'
AND ashevent_id = evtevent_id
AND evtwait_class = 'User I/O'
GROUP BY sql_id
ORDER BY COUNT() DESC;
执行上面的SQL:
SQL> SELECT sql_id, COUNT()
FROM gv$active_session_history ash, gv$event_name evt
2 3 WHERE ashsample_time > SYSDATE - 1 / 24
4 AND ashsession_state = 'WAITING'
5 AND ashevent_id = evtevent_id
6 AND evtwait_class = 'User I/O'
7 GROUP BY sql_id
8 ORDER BY COUNT() DESC;
SQL_ID COUNT()
------------- ----------
g7fu6qba82m6b 668
63r47zyphdk06 526
9f5m4wd88nc1h 514
593p47drw5fhk 232
br91w16jzy4fu 120
4fvwyjpnh6tp7 78
gm0nrbfuj8kzr 70
2184k363hw4xd 68
gc4dajs7g5myy 46
8vrk9sfuwfdgq 42
ccpnb4dwdmq21 40
查看SQL的执行计划:
SELECT FROM TABLE(dbms_xplandisplay_cursor('g7fu6qba82m6b'));
在SQLPLUS中执行:
SQL> set pagesize 2000
SQL> SELECT FROM TABLE(dbms_xplandisplay_cursor('g7fu6qba82m6b'));
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------
SQL_ID g7fu6qba82m6b, child number 0
-------------------------------------
UPDATE "CPDDS_PDATA""CDM_LEDGER" SET "CSTM_NAME" = :a1,"CSTM_NO" =
:a2,"PAPER_TYPE" = :a3,"PAPER_NO" = :a4,"CURR_TYPE" = :a5,"SVT_NO" =
:a6,"BAL_DIR" = :a7,"BAL" = :a8,"AVAL_BAL" = :a9,"NORM_FRATIO" =
:a10,"PK_BAL" = :a11,"DR_ACCU" = :a12,"CR_ACCU" = :a13,"LAST_TRAN_DATE" =
:a14,"LAST_TRAN_TIME" = :a15,"PRT_LINE_NUM" = :a16,"NOREG_PK_REC_NUM" =
:a17,"PK_NO" = :a18,"PWD" = :a19,"FLAG" = :a20,"FRZ_FLAG" =
:a21,"CARD_HOLD_FLAG" = :a22,"PK_HOLD_FLAG" = :a23,"BGN_INT_DATE" =
:a24,"OPEN_DATE" = :a25,"ACC_HOLD_FLAG" = :a26,"CLS_DATE" =
:a27,"OPEN_TLR" = :a28,"CLS_TLR" = :a29,"CLS_INT" = :a30,"OPEN_INST" =
:a31,"ADD_NUM" = :a32,"DAC" = :a33,"FRZ_TIMES1" = :a34,"FRZ_TIMES2" =
:a35,"HOST_SEQNO" = :a36,"D_UPDATE_DATE" = :a37 WHERE "ACC" = :b0
Plan hash value: 319441092
-----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------
| 0 | UPDATE STATEMENT | | | | 3 (100)| |
| 1 | UPDATE | CDM_LEDGER | | | | |
| 2 | INDEX UNIQUE SCAN| I_CDM_LEDGER | 1 | 269 | 2 (0)| 00:00:01 |
-----------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("ACC"=:B0)
29 rows selected
总结
1、与display函数不同,display_cursor显示的为真实的执行计划
2、对于format参数,使用与display函数的各个值,同样适用于display_cursor函数
3、当statistics_level为all或使用gather_plan_statistics提示可以获得执行时的统计信息
4、根据真实与预估的统计信息可以初步判断SQL效率低下的原因,如统计信息的准确性、主要的开销位于那些步骤等
以上就是关于mysql数据库执行sql语句怎么写全部的内容,包括:mysql数据库执行sql语句怎么写、mysql如何导入sql文件、navicat for mysql运行sql文件出错等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)