mysql数据库执行sql语句怎么写

mysql数据库执行sql语句怎么写,第1张

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文件出错等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9858168.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存