SQL语言中修改表中数据的命令是什么

SQL语言中修改表中数据的命令是什么,第1张

SQL语言中修改表中数据的命令可以使用update。

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;

更新修改语句 update table_name set col_name = xx where col_name = oo。

扩展资料

SQL语言修改数据库,移动数据库文件

ALTER DATABASE Publish SET OFFLINE/将Publish数据库设置为离线(脱机)状态/

ALTER DATABASE Publish

MODIFY FILE

(

NAME = 'Publish_n1'

FILENAME = 'D:\Publishndf'

) /数据库文件位置/

ALTER DATABASE Publish SET ONLINE/将数据库设置为联机状态/

--修改数据库文件增量

USE master

GO

Alter DATABASE Test

MODIFY FILE

(NAME = test,

-- SIZE = 1000MB,

--MAXSIZE = 10000MB,

FILEGROWTH = 100MB)

GO

--修改数据库日志文件增量

USE master

GO

Alter DATABASE Test

MODIFY FILE

(NAME = test_log,

-- SIZE = 1000MB,

--MAXSIZE = 10000MB,

FILEGROWTH = 100MB)

GO

参考以下内容:

[c-sharp]view plaincopyprint

/

一般的虚拟主机上,附送的sql server数据库都是限制了大小,比如100M。当你的数据库空间达到了指定的100M时,插入新数据就会报错:

未能为数据库 'a1116173958' 中的对象 'fc_Info' 分配空间,因为文件组 'PRIMARY' 已满

其实,有些主机商的数据库大小是可以自己修改的。当然,修改之前你需要知道数据库名(这里是逻辑名称),一般的这个名称是很容易知道的,就是数据库名称。

你可以尝试下在自己编写的程序中,或空间的管理后台中等可以执行sql语句的地方试一下下面的语句:

Alter DATABASE 数据库名

modify FILE

( NAME = 数据库名,

MAXSIZE = 200MB,

FILEGROWTH = 5MB)

如果执行成功,那么恭喜你了。

========我是分割线============================================

下面是Alter DATABASE的一些参考资料,详细可以查看sql server帮助。

在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。Alter DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。

Alter DATABASE 支持数据库选项的设置。在早期版本的 Microsoft® SQL Server™ 中,这些选项可以通过 sp_dboption 存储过程来设置。在此次发布的版本中,SQL Server 继续支持 sp_dboption存储过程,但在未来版本中可能不再支持。可使用 DATABASEPROPERTYEX 函数检索数据库选项的当前设置。

语法

Alter DATABASE database

{ ADD FILE < filespec > [ ,n ] [ TO FILEGROUP filegroup_name ]

| ADD LOG FILE < filespec > [ ,n ]

| REMOVE FILE logical_file_name

| ADD FILEGROUP filegroup_name

| REMOVE FILEGROUP filegroup_name

| MODIFY FILE < filespec >

| MODIFY NAME = new_dbname

| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }

| SET < optionspec > [ ,n ] [ WITH < termination > ]

| COLLATE < collation_name >

}

< filespec > ::=

( NAME = logical_file_name

[ , NEWNAME = new_logical_name ]

[ , FILENAME = 'os_file_name' ]

[ , SIZE = size ]

[ , MAXSIZE = { max_size | UNLIMITED } ]

[ , FILEGROWTH = growth_increment ] )

< optionspec > ::=

<state_option>

| < cursor_option >

| < auto_option >

| < sql_option >

| < recovery_option >

< state_option > ::=

{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }

| { OFFLINE | ONLINE }

| { READ_ONLY | READ_WRITE }

< termination > ::=

ROLLBACK AFTER integer [ SECONDS ]

| ROLLBACK IMMEDIATE

| NO_WAIT

< cursor_option > ::=

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

| CURSOR_DEFAULT { LOCAL | GLOBAL }

< auto_option > ::=

AUTO_CLOSE { ON | OFF }

| AUTO_Create_STATISTICS { ON | OFF }

| AUTO_SHRINK { ON | OFF }

| AUTO_Update_STATISTICS { ON | OFF }

< sql_option > ::=

ANSI_NULL_DEFAULT { ON | OFF }

| ANSI_NULLS { ON | OFF }

| ANSI_PADDING { ON | OFF }

| ANSI_WARNINGS { ON | OFF }

| ARITHABORT { ON | OFF }

| CONCAT_NULL_YIELDS_NULL { ON | OFF }

| NUMERIC_ROUNDABORT { ON | OFF }

| QUOTED_IDENTIFIER { ON | OFF }

| RECURSIVE_TRIGGERS { ON | OFF }

< recovery_option > ::=

RECOVERY { FULL | BULK_LOGGED | SIMPLE }

| TORN_PAGE_DETECTION { ON | OFF }

SQL语句如下:

UPDATE

表名

SET

字段名=更新值

WHERE

更新条件

比如你要更新USER表下面的PASSWORD字段,USER表里面包含以下字段:USERID(主键,INT型),USERNAME(NVARCHAR型),PASSWORD(VARCHAR型),要把USERID为5的PASSWORD更改成"123456",那更新语句为:

UPDATE

USER

SET

PASSWORD='123456'

WHERE

USERID=5

MySQL 的 Binlog 记录着 MySQL 数据库的所有变更信息,了解 Binlog 的结构可以帮助我们解析Binlog,甚至对 Binlog 进行一些修改,或者说是“篡改”,例如实现类似于 Oracle 的 flashback 的功能,恢复误删除的记录,把 update 的记录再还原回去等。本文将带您探讨一下这些神奇功能的实现,您会发现比您想象地要简单得多。本文指的 Binlog 是 ROW 模式的 Binlog,这也是 MySQL 8 里的默认模式,STATEMENT 模式因为使用中有很多限制,现在用得越来越少了。

Binlog 由事件(event)组成,请注意是事件(event)不是事务(transaction),一个事务可以包含多个事件。事件描述对数据库的修改内容。

现在我们已经了解了 Binlog 的结构,我们可以试着修改 Binlog 里的数据。例如前面举例的 Binlog 删除了一条记录,我们可以试着把这条记录恢复,Binlog 里面有个删除行(DELETE_ROWS_EVENT)的事件,就是这个事件删除了记录,这个事件和写行(WRITE_ROWS_EVENT)的事件的数据结构是完全一样的,只是删除行事件的类型是 32,写行事件的类型是 30,我们把对应的 Binlog 位置的 32 改成 30 即可把已经删除的记录再插入回去。从前面的 “show binlog events” 里面可看到这个 DELETE_ROWS_EVENT 是从位置 378 开始的,这里的位置就是 Binlog 文件的实际位置(以字节为单位)。从事件(event)的结构里面可以看到 type_code 是在 event 的第 5 个字节,我们写个 Python 小程序把把第383(378+5=383)字节改成 30 即可。当然您也可以用二进制编辑工具来改。

找出 Binlog 中的大事务

由于 ROW 模式的 Binlog 是每一个变更都记录一条日志,因此一个简单的 SQL,在 Binlog 里可能会产生一个巨无霸的事务,例如一个不带 where 的 update 或 delete 语句,修改了全表里面的所有记录,每条记录都在 Binlog 里面记录一次,结果是一个巨大的事务记录。这样的大事务经常是产生麻烦的根源。我的一个客户有一次向我抱怨,一个 Binlog 前滚,滚了两天也没有动静,我把那个 Binlog 解析了一下,发现里面有个事务产生了 14G 的记录,修改了 66 万条记录!下面是一个简单的找出 Binlog 中大事务的 Python 小程序,我们知道用 mysqlbinlog 解析的 Binlog,每个事务都是以 BEGIN 开头,以 COMMIT 结束。我们找出 BENGIN 前面的 “# at” 的位置,检查 COMMIT 后面的 “# at” 位置,这两个位置相减即可计算出这个事务的大小,下面是这个 Python 程序的例子。

切割 Binlog 中的大事务

对于大的事务,MySQL 会把它分解成多个事件(注意一个是事务 TRANSACTION,另一个是事件 EVENT),事件的大小由参数 binlog-row-event-max-size 决定,这个参数默认是 8K。因此我们可以把若干个事件切割成一个单独的略小的事务

ROW 模式下,即使我们只更新了一条记录的其中某个字段,也会记录每个字段变更前后的值,这个行为是 binlog_row_image 参数控制的,这个参数有 3 个值,默认为 FULL,也就是记录列的所有修改,即使字段没有发生变更也会记录。这样我们就可以实现类似 Oracle 的 flashback 的功能,我个人估计 MySQL 未来的版本从可能会基于 Binlog 推出这样的功能。

了解了 Binlog 的结构,再加上 Python 这把瑞士军刀,我们还可以实现很多功能,例如我们可以统计哪个表被修改地最多?我们还可以把 Binlog 切割成一段一段的,然后再重组,可以灵活地进行 MySQL 数据库的修改和迁移等工作。

以下是总结的mysql的常用语句,欢迎指正和补充~

一、创建库,删除库,使用库

1创建数据库:create database 库名;

2删除数据库:drop database 库名;

3使用数据库:use 库名;

二、创建数据表

1创建表语句:create table 表名(字段名1 字段类型 字段约束,字段2 字段类型 字段约束);

2创建与现有表一样字段的新表:create table 表名 like 已有表名;

3将查询结果创建新表:create table 表名 select from 现有表 where(查询语句);

三、查看表结构,查看建表语句,删除表

1查看表结构:desc 表名;

2查看建表语句:show create table 表名;

3删除表:drop table 表名;

四、修改表结构

1对数据表重命名:alter table 表名 rename 新表名;

2增加字段:alter table 表名 add 字段名 字段类型 字段约束; (PS:可用first/after函数调整字段位置)

3删除字段:alter table 表名 drop 字段名;

4修改字段类型及约束:alter table 表名 modify 字段名 新类型 新约束;(PS:如不加新约束,会将建表时的约束清空,主键、外键、唯一约束除外)

5修改字段名称:alter table 表名 change 字段名 新字段名 新字段类型 新约束条件;

6修改数据库引擎:alter table 表名 engine=;(PS:主要有InnoDB和MyISAM,InnoDB对经常修改表数据友好,MyISAM对经常查询表友好)

7增加主键:alter table 表名 add primary key(字段名);

8删除主键:alter table 表名 drop primary key;

9增加外键:alter table 表名 add constraint 外键名 foreign kek(字段名) references 主表(主键);

10删除外键:alter table 表名 drop foreign key 外键名;

11删除唯一约束:alter table 表名 drop index 字段名;

12设置自动增长的初始位置:alter table 表名 auto_increment=n;

五、向表中插入数据

1向表指定字段插入多条数据:insert into 表名(字段1,字段2) values(数据1,数据2),(数据1,数据2),(数据1,数据2),(数据1,数据2);

2将查询结果插入表:insert into 表名 select 字段名 from 表名(查询语句);

3加载外部数据到表:Load data local infile ‘数据路径’Into table 表名 Fields terminated by ‘分隔符’Ignored 1 lines;

六、更新表数据、删除表数据

1更改满足条件的字段数据:update 表名 set 字段计算1,字段计算2 where 条件;

2删除满足条件的数据:delele from 表名 where 条件;

3删除所有数据:方式一:delete from 表名; 方式二:truncate table 表名; 方式一会逐条进行删除,速度较慢,方式二直接删除,速度快;另外对自增字段,方式一不能重置自增字段的初始位置,方式二可以重置自增字段的其实位置;

修改名称详细步骤(因为不仅仅是上面那几步)mysql> use dinghao;mysql> select from t1;+——+———–+| id | name |+——+———–+| 1 | 刘德华 | +——+———–+1 row in set (000 sec)mysql> show create table t1;+——-+————————————————————————————————————————-+| Table | Create Table |+——-+————————————————————————————————————————-+| t1 | CREATE TABLE `t1` ( `id` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +——-+————————————————————————————————————————-+1 row in set (000 sec)mysql> flush tables;Query OK, 0 rows affected (000 sec)mysql> flush logs;Query OK, 0 rows affected (000 sec)mysql> show processlist; #这一步主要查看有没有其他进程连接,要保证没有其他程序 *** 作数据库。+—-+——+———–+———+———+——-+——-+——————+| Id | User | Host | db | Command | Time | State | Info |+—-+——+———–+———+———+——-+——-+——————+| 17 | root | localhost | dinghao | Query | 0 | NULL | show processlist | +—-+——+———–+———+———+——-+——-+——————+1 rows in set (000 sec)mysql> alter table t1 engine=MyISAM;Query OK, 1 row affected (001 sec)Records: 1 Duplicates: 0 Warnings: 0mysql> exit[root@mysqludf var]# mv dinghao aaa;mysql> use aaa;Database changedmysql> alter table t1 engine=INNODB;Query OK, 1 row affected (000 sec)Records: 1 Duplicates: 0 Warnings: 0mysql> select from t1;+——+———–+| id | name |+——+———–+| 1 | 刘德华 | +——+———–+1 row in set (000 sec)注意,在改名之前必须现转换存储引擎,否则会报错,你想换的这个名称就换不成了,只能换另外一个名称了。错误的方法就不演示了,光记住好的就行了。

对 MySQL 查询重写以提高性能是每个 DBA 应该意识到的重要过程,以便他们可以在运行时修复错误的查询,而无需在应用程序端更改代码。

到目前为止,MySQL 社区提供了两个内置的查询重写插件来执行此任务。

query rewriter plugin:它支持 INSERT / UPDATE / DELETE / REPLACE 语句,在  MySQL 8012 引入。

ddl_rewritter plugin:它支持 CREATE TABLE 语句。在 MySQL 8016 引入。

以上就是关于SQL语言中修改表中数据的命令是什么全部的内容,包括:SQL语言中修改表中数据的命令是什么、创建数据库时如何修改数据库db、修改数据库内容的SQL 语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存