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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库执行sql语句怎么写相关的知识,希望对你有一定的参考价值。

mysql常用命令详解

Mysql安装目录
数据库目录
/var/lib/mysql/
配置文件
/usr/share/mysql(mysql.server命令及配置文件)
相关命令
/usr/bin(mysqladmin mysqldump等命令)
启动脚本
/etc/init.d/mysql(启动脚本文件mysql的目录)

系统管理
连接MySQL
格式:
mysql -h 主机地址 -u用户名 -p用户密码
例 1:连接到本机上的 MySQL。
hadoop@ubuntu:~$ mysql
-uroot -pmysql;

例 2:连接到远程主机上的 MYSQL。
hadoop@ubuntu:~$ mysql -h
127.0.0.1 -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',96.45),(2,'Joan',82.99), (2,'Wang',
96.59);

查询表中的数据
查询所有行
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\mydb.sql
文件中。
打开开始->运行->输入“cmd”,进入命令行模式。
c:\> mysqldump -h localhost -u
root -p mydb >e:\MySQL\mydb.sql
然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。


2:将数据库 mydb 中的 mytable 导出到 e:\MySQL\mytable.sql 文件中。
c:\> mysqldump -h
localhost -u root -p mydb mytable>e:\MySQL\mytable.sql

例 3:将数据库 mydb
的结构导出到 e:\MySQL\mydb_stru.sql 文件中。
c:\> mysqldump -h localhost -u root -p
mydb --add-drop-table >e:\MySQL\mydb_stru.sql
备注:-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 < [备份文件的保存路径]
参考技术A 如果你是在命令提示符下键入SQL语句,
结尾需要加分号,回车即可,
如果你是在MYSQL的一个集成开发环境下操作,将SQL语句键入页面上方的一个框里,然后按菜单栏上的三角箭头本回答被提问者采纳

sql查询 更新语句怎么写

1、首先需要打开sql server 数据库。

2、点击新建查询按钮,进入sql 执行界面。

3、编写sql 更新语句,update  tablename set  name='更新' ,点击执行按钮。

4、使用查询语句,检查是否更新成功,select * from tablename。

5、上面的语句是对数据库进行批量更新,如果更新指定的信息可以在update 语句后面加上where语句update  tablename set  name='根据条件更新'  where id=1 。

6、使用查询语句,检查是否更新成功,select * from tablename where id=1。

参考技术A 更新也即是修改语句
update 表名
set 列名=表达式 ……
[where 条件]
如update stu
set name=‘王’,sex='男'
where class=‘二班’;本回答被提问者采纳
参考技术B UPDATE

table_name WITH ( table_hint_limited > [ ...n ] )
| view_name
| rowset_function_limited

SET
column_name = expression | DEFAULT | NULL
| @variable = expression
| @variable = column = expression [ ,...n ]

[ FROM table_source > [ ,...n ] ]

[ WHERE
search_condition > ]
|
[ WHERE CURRENT OF
[ GLOBAL ] cursor_name | cursor_variable_name
]
[ OPTION ( query_hint > [ ,...n ] ) ]

table_source > ::=
table_name [ [ AS ] table_alias ] [ WITH ( table_hint > [ ,...n ] ) ]
| view_name [ [ AS ] table_alias ]
| rowset_function [ [ AS ] table_alias ]
| derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]
| joined_table >

joined_table > ::=
table_source > join_type > table_source > ON search_condition >
| table_source > CROSS JOIN table_source >
| joined_table >

join_type > ::=
[ INNER | LEFT | RIGHT | FULL [OUTER] ]
[ join_hint > ]
JOIN

table_hint_limited > ::=
FASTFIRSTROW
| HOLDLOCK
| PAGLOCK
| READCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK


table_hint > ::=
INDEX ( index_val [ ,...n ] )
| FASTFIRSTROW
| HOLDLOCK
| NOLOCK
| PAGLOCK
| READCOMMITTED
| READPAST
| READUNCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK


query_hint > ::=
HASH | ORDER GROUP
| CONCAT | HASH | MERGE UNION
| LOOP | MERGE | HASH JOIN
| FAST number_rows
| FORCE ORDER
| MAXDOP
| ROBUST PLAN
| KEEP PLAN


参数
table_name

需要更新的表的名称。如果该表不在当前服务器或数据库中,或不为当前用户所有,这个名称可用链接服务器、数据库和所有者名称来限定。

WITH ( table_hint_limited > [ ...n ] )

指定目标表所允许的一个或多个表提示。需要有 WITH 关键字和圆括号。不允许有 READPAST、NOLOCK 和 READUNCOMMITTED。有关表提示的信息,请参见 FROM。

view_name

要更新的视图的名称。通过 view_name 来引用的视图必须是可更新的。用 UPDATE 语句进行的修改,至多只能影响视图的 FROM 子句所引用的基表中的一个。有关可更新视图的更多信息,请参见 CREATE VIEW。

rowset_function_limited

OPENQUERY 或 OPENROWSET 函数,视提供程序功能而定。有关提供程序所需功能的更多信息,请参见 OLE DB 提供程序的 UPDATE 和 DELETE 语句要求。有关行集函数的更多信息,请参见 OPENQUERY 和 OPENROWSET。

SET

指定要更新的列或变量名称的列表。

column_name

含有要更改数据的列的名称。column_name 必须驻留于 UPDATE 子句中所指定的表或视图中。标识列不能进行更新。

如果指定了限定的列名称,限定符必须同 UPDATE 子句中的表或视图的名称相匹配。例如,下面的内容有效:

UPDATE authors
SET authors.au_fname = 'Annie'
WHERE au_fname = 'Anne'

FROM 子句中指定的表的别名不能作为 SET column_name 子句中的限定符使用。例如,下面的内容无效:

UPDATE titles
SET t.ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

若要使上例合法,请从列名中删除别名 t。

UPDATE titles
SET ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

expression

变量、字面值、表达式或加上括弧的返回单个值的 subSELECT 语句。expression 返回的值将替换 column_name 或 @variable 中的现有值。

DEFAULT

指定使用对列定义的默认值替换列中的现有值。如果该列没有默认值并且定义为允许空值,这也可用来将列更改为 NULL。

@variable

已声明的变量,该变量将设置为 expression 所返回的值。

SET @variable = column = expression 将变量设置为与列相同的值。这与 SET @variable = column, column = expression 不同,后者将变量设置为列更新前的值。

FROM table_source >

指定用表来为更新操作提供准则。有关更多信息,请参见 FROM。

table_name [[AS] table_alias ]
为更新操作提供准则的表的名称。
如果所更新表与 FROM 子句中的表相同,并且在 FROM 子句中对该表只有一个引用,则指定或不指定 table_alias 均可。如果所更新表在 FROM 子句中出现了不止一次,则对该表的一个(且仅仅一个)引用不能指定表的别名。FROM 子句中对该表的所有其它引用都必须包含表的别名。

view_name [ [ AS ] table_alias ]
为更新操作提供准则的视图的名称。带 INSTEAD OF UPDATE 触发器的视图不能是含有 FROM 子句的 UPDATE 的目标。

WITH ( table_hint > [ ...n ] )
为源表指定一个或多个表提示。有关表提示的信息,请参见本卷的"FROM"。

rowset_function [ [AS] table_alias ]
任意行集函数的名称和可选别名。有关行集函数列表的信息,请参见行集函数。

derived_table
是从数据库中检索行的子查询。derived_table 用作对外部查询的输入。

column_alias
替换结果集内列名的可选别名。在选择列表中放入每个列的一个别名,并将整个列别名列表用圆括号括起来。

由两个或更多表的积组成的结果集,例如:

SELECT *
FROM tab1 LEFT OUTER JOIN tab2 ON tab1.c3 = tab2.c3
RIGHT OUTER JOIN tab3 LEFT OUTER JOIN tab4
ON tab3.c1 = tab4.c1
ON tab2.c3 = tab4.c3

对于多个 CROSS 联接,请使用圆括号来更改联接的自然顺序。

指定联接操作的类型。

INNER
指定返回所有相匹配的行对。废弃两个表中不匹配的行。如果未指定联接类型,则这是默认设置。

LEFT [OUTER]
指定除所有由内联接返回的行外,所有来自左表的不符合指定条件的行也包含在结果集内。来自左表的输出列设置为 NULL。

RIGHT [OUTER]
指定除所有由内联接返回的行外,所有来自右表的不符合指定条件的行也包含在结果集内。来自右表的输出列设置为 NULL。

FULL [OUTER]
如果来自左表或右表的某行与选择准则不匹配,则指定在结果集内包含该行,并且将与另一个表对应的输出列设置为 NULL。除此之外,结果集中还包含通常由内联接返回的所有行。

指定联接提示或执行算法。如果指定了 ,也必须明确指定 INNER、LEFT、RIGHT 或 FULL。有关联接提示的更多信息,请参见 FROM。

JOIN
表示联接所指定的表或视图。
ON

指定联接所基于的条件。尽管经常使用列和比较运算符,但此条件可指定任何谓词,例如:

FROM Suppliers JOIN Products
ON (Suppliers.SupplierID = Products.SupplierID)

当条件指定列时,列不一定必须具有相同的名称或数据类型;但是,如果数据类型不一致,则这些列要么必须相互兼容,要么是 Microsoft® SQL Server™ 能够隐性转换的类型。如果数据类型不能隐式转换,则条件必须使用 CAST 函数显式转换数据类型。

有关搜索条件和谓词的更多信息,请参见搜索条件。

CROSS JOIN

指定两个表的矢量积。返回同样的行,就像要联接的表只列于 FROM 子句中,并且未指定 WHERE 子句。

WHERE

指定条件来限定所更新的行。根据所使用的 WHERE 子句的形式,有两种更新形式:

搜索更新指定搜索条件来限定要删除的行。

定位更新使用 CURRENT OF 子句指定游标。更新操作发生在游标的当前位置。

为要更新行指定需满足的条件。搜索条件也可以是联接所基于的条件。对搜索条件中可以包含的谓词数量没有限制。有关谓词和搜索条件的更多信息,请参见搜索条件。

CURRENT OF

指定更新在指定游标的当前位置进行。

GLOBAL

指定 cursor_name 指的是全局游标。

cursor_name

要从中进行提取的开放游标的名称。如果同时存在名为 cursor_name 的全局游标和局部游标,则在指定了 GLOBAL 时,cursor_name 指的是全局游标。如果未指定 GLOBAL,则 cursor_name 指局部游标。游标必须允许更新。

cursor_variable_name

游标变量的名称。cursor_variable_name 必须引用允许更新的游标。

OPTION ( query_hint > [ ,...n ] )

指定优化程序提示用于自定义 SQL Server 的语句处理。

HASH | ORDER GROUP
指定在查询的 GROUP BY 或 COMPUTE 子句中指定的聚合使用哈希或排列。

LOOP | MERGE | HASH | JOIN
指定在整个查询中所有的联接操作由循环联接、合并联接或哈希联接来完成。如果指定了不止一个联接提示,则查询优化器为允许的联接选择开销最少的联接策略。如果在同一个查询中也为特定表对指定了联接提示,则该提示在两表的联接中优先。

MERGE | HASH | CONCAT UNION
指定所有的 UNION 操作通过合并、哈希或串联 UNION 集合来完成。如果指定了不止一个 UNION 提示,查询优化器就会从这些指定的提示中选择开销最少的策略。

说明 如果在 FROM 子句中亦为任何特定联接表对指定了联接提示,则该提示优先于任何 OPTION 子句中指定的联接提示。

FAST number_rows
指定对查询进行优化,以便快速检索第一个 number_rows(非负整数)。在第一个 number_rows 返回后,查询继续进行并生成完整的结果集。

FORCE ORDER
指定查询语法所指示的联接顺序在查询优化过程中予以保留。

MAXDOP number
只对指定了 sp_configure 的 max degree of parallelism 配置选项的查询替代该选项。当使用 MAXDOP 查询提示时,所有和 max degree of parallelism 配置选项一起使用的语义规则均适用。有关更多信息,请参见 max degree of parallelism 选项。

ROBUST PLAN
强制查询优化器尝试执行一个计划,该计划以性能为代价获得最大可能的行大小。如果没有可行的计划,则查询优化器返回错误,而不是将错误检测延迟至查询执行。行可能包含长度可变的列;SQL Server 允许定义最大可能大小超出 SQL Server 处理能力的行。通常,应用程序存储实际大小在 SQL Server 处理能力范围内的行,而不管最大可能大小。如果 SQL Server 遇到过长的行,则返回执行错误。
KEEP PLAN

强制查询优化器对查询放宽估计的重新编译阈值。当对表中索引列的更改(更新、删除或插入)达到估计数目时查询会自动重新编译,该估计数目即为重新编译阈值。指定 KEEP PLAN 将确保当表有多个更新时不会频繁地对查询进行重新编译。

注释
仅当所修改的表是 table 变量时,用户定义的函数的主体中才允许使用 UPDATE 语句。

table 变量在其作用域内可以像常规表一样访问。这样,table 变量可作为一个表来使用,在该表中数据用 UPDATE 语句进行更新。

用 OPENDATASOURCE 函数构造的、作为服务器名称部分的一个四段名称,在 UPDATE 语句中可以出现表名的任何地方都可作为表源使用。

如果对行的更新违反了某个约束或规则,或违反了对列的 NULL 设置,或者新值是不兼容的数据类型,则取消该语句、返回错误并且不更新任何记录。

当 UPDATE 语句在表达式取值过程中遇到算术错误(溢出、被零除或域错误)时,则不进行更新。批处理的剩余部分不再执行,并且返回错误信息。

如果对参与聚集索引的一列或多列的更新导致聚集索引和行的大小超过 8,060 字节,则更新失败并且返回错误信息。

当对表的 UPDATE 操作定义 INSTEAD-OF 触发器时,将执行触发器而不执行 UPDATE 语句。SQL Server 以前的版本只支持在 UPDATE 和其它数据修改语句中定义 AFTER 触发器。

当更新查询既更新聚集键又更新一个或多个 text、image 或 Unicode 列时,如果可以更改不止一行,则更新操作失败,SQL Server 返回错误信息。

用 UPDATE 修改 text、ntext 或 image 列时将对列进行初始化,向其指派有效文本指针,并且分配至少一个数据页(除非用 NULL 更新该列)。

说明 UPDATE 语句将记入日志。如果要替换或修改大块的 text、ntext 或 image 数据,请使用 WRITETEXT 或 UPDATETEXT 语句而不要使用 UPDATE 语句。WRITETEXT 和 UPDATETEXT 语句(根据默认)不记入日志。

所有的 char 和 nchar 列向右填充至定义长度。

对于用于远程表以及本地和远程分区视图的 UPDATE 语句,忽略 SET ROWCOUNT 选项的设置。

如果 ANSI_PADDING 设置为 OFF,则会从插入 varchar 和 nvarchar 列的数据中删除所有尾随空格,但只包含空格的字符串除外。这些字符串被截断为空字符串。如果 ANSI_PADDING 设置为 ON,则插入尾随空格。Microsoft SQL Server ODBC 驱动程序和用于 SQL Server 的 OLE DB 提供程序自动对每个连接设置 ANSI_PADDING ON。这可在 ODBC 数据源中进行配置,或者通过设置连接特性或属性进行设置。

使用 WHERE CURRENT OF 子句的定位更新将在游标的当前位置更新单行。这比使用 WHERE 子句限定要更新的行的搜索更新更为精确。当搜索条件不唯一标识一行时,搜索更新将修改多行。

如果 UPDATE 语句包含了未指定每个所更新列的位置只有一个可用值的 FROM 子句(换句话说,如果 UPDATE 语句是不确定性的),则其结果将不明确。例如,对于下面脚本中的 UPDATE 语句,表 s 中的两行都满足 UPDATE 语句中的 FROM 子句的限定条件,但是将用 s 的哪一行来更新表 t 内的行是不明确的。

CREATE TABLE s (ColA INT, ColB DECIMAL(10,3))
GO
CREATE TABLE t (ColA INT PRIMARY KEY, ColB DECIMAL(10,3))
GO
INSERT INTO s VALUES(1, 10.0)
INSERT INTO s VALUES(1, 20.0)
INSERT INTO t VALUES(1, 0.0)
GO
UPDATE t
SET t.ColB = t.ColB + s.ColB
FROM t INNER JOIN s ON (t.ColA = s.ColA)
GO

当组合 FROM 和 WHERE CURRENT OF 子句时,可能发生同样的问题。在本例中,表 t2 中的两行都满足 UPDATE 语句中的 FROM 子句的限定条件。将用表 t2 的哪一行来更新表 t1 中的行是不明确的。

CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT)
GO
CREATE TABLE t2(d1 INT PRIMARY KEY, d2 INT)
GO
INSERT INTO t1 VALUES (1, 10)
INSERT INTO t2 VALUES (1, 20)
INSERT INTO t2 VALUES (2, 30)
go

DECLARE abc CURSOR LOCAL FOR
SELECT * FROM t1

OPEN abc

FETCH abc

UPDATE t1 SET c2 = c2 + d2
FROM t2
WHERE CURRENT OF abc
GO

设置变量和列
变量名可用于 UPDATE 语句来显示受影响的旧值和新值。这种方法应该仅用在 UPDATE 语句只影响单个记录时;如果 UPDATE 语句影响多个记录,则变量只含有所更新行中的一行的值。

权限
UPDATE 权限默认授予 sysadmin 固定服务器角色成员、db_owner 和 db_datawriter 固定数据库角色成员以及表的所有者。sysadmin、db_owner 和 db_securityadmin 角色的成员和表所有者可以将权限转让给其他用户。

如果 UPDATE 语句包含 WHERE 子句,或 SET 子句中的 expression 使用了表中的某个列,则还要求所更新表的 SELECT 权限。

示例
A. 使用简单的 UPDATE
下列示例说明如果从 UPDATE 语句中去除 WHERE 子句,所有的行会受到什么影响。

下面这个例子说明,如果表 publishers 中的所有出版社将总部搬迁到佐治亚州的亚特兰大市,表 publishers 如何更新。

UPDATE publishers
SET city = 'Atlanta', state = 'GA'

本示例将所有出版商的名字变为 NULL。

UPDATE publishers
SET pub_name = NULL

也可以在更新中使用计算值。本示例将表 titles 中的所有价格加倍。

UPDATE titles
SET price = price * 2

B.把 WHERE 子句和 UPDATE 语句一起使用
WHERE 子句指定要更新的行例如,在下面这个虚构的事件中,北加利福尼亚更名为 Pacifica(缩写为 PC),而奥克兰的市民投票决定将其城市的名字改为 Bay City。这个例子说明如何为奥克兰市以前的所有居民(他们的地址已经过时)更新表 authors。

UPDATE authors
SET state = 'PC', city = 'Bay City'
WHERE state = 'CA' AND city = 'Oakland'

必须编写另一个语句来更改北加利福尼亚其它城市的居民所在的州名。

C.通过 UPDATE 语句使用来自另一个表的信息
本示例修改表 titles 中的 ytd_sales 列,以反映表 sales 中的最新销售记录。

UPDATE titles
SET ytd_sales = titles.ytd_sales + sales.qty
FROM titles, sales
WHERE titles.title_id = sales.title_id
AND sales.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

这个例子假定,一种特定的商品在特定的日期只记录一批销售量,而且更新是最新的。如果不是这样(即如果一种特定的商品在同一天可以记录不止一批销售量),这里所示的例子将出错。例子可正确执行,但是每种商品只用一批销售量进行更新,而不管那一天实际销售了多少批。这是因为一个 UPDATE 语句从不会对同一行更新两次。

对于特定的商品在同一天可销售不止一批的情况,每种商品的所有销售量必须在 UPDATE 语句中合计在一起,如下例所示:

UPDATE titles
SET ytd_sales =
(SELECT SUM(qty)
FROM sales
WHERE sales.title_id = titles.title_id
AND sales.ord_date IN (SELECT MAX(ord_date) FROM sales))
FROM titles, sales

D. 将 UPDATE 语句与 SELECT 语句中的 TOP 子句一起使用
这个例子对来自表 authors 的前十个作者的 state 列进行更新。

UPDATE authors
SET state = 'ZZ'
FROM (SELECT TOP 10 * FROM authors ORDER BY au_lname) AS t1
WHERE authors.au_id = t1.au_id
参考技术C update 表名 set 列名=值【,列名=值】会把表中所有行的此列名值都改成一样的,
要想改某一行,得需
update 表名 set 列名=值 where ....
参考技术D 基本的格式如下:
查询的:select * from 表名 where 条件
更新:update 表名 set 列名=值 where 条件

以上是关于mysql数据库执行sql语句怎么写的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL批量插入语句怎么写

mysql执行存储过程语句怎么写

mysql执行的sql脚本中,注释怎么写?

mysql查询表中数据总条数的语句怎么写

mysql 脚本文件是啥?

sql查询 更新语句怎么写