如何在SQL中用ALTER TABLE语句修改表中的列名

如何在SQL中用ALTER TABLE语句修改表中的列名,第1张

1、alter table student_info add “学生姓名”varchar(10);

2、update student_info set “学生姓名”='姓名';

3、alter table student_info drop column“姓名”。

SQL语言

SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

1 v$parameter是oracle数据库的动态字典表(视图),它保存了数据库参数的设置值

2 如果要修改其中的值有两种方式

21 修改当前会话参数:alter session set sql_trace=true --开启trace

22 修改数据库全局参数:alter system set 参数名称=参数值 scope=spfile/memory/both

scope是可选参数,

scope=spfile只修改启动文件,下次启动后生效

scope=memory只修改当前实例运行参数,重启后恢复

scope=both,既修改当前运行参数同时也修改spfile

用alter database语句修改数据库

--1将名为"例二数据库"的数据库改名为"例七数据库"

显示代码打印

alter database 例二数据库

modify name = 例七数据库

显示代码打印1 exec sp_renamedb '例二数据库','例七数据库'

--2为"例六数据库"增加一个数据文件

显示代码打印

alter database 例六数据库

add file (

name=增加的数据文件,

filename='c:\dbtest\例六数据库增加的数据文件ndf'

)

--3为"例六数据库"增加一个日志文件

显示代码打印

alter database 例六数据库

add log file (

name=例六增加的日志文件,

filename='c:\dbtest\例六增加的日志文件ldf',

size=3MB,

maxsize=50MB,

filegrowth=10%

)

--4将"例六数据库"名为"增加的数据文件"的数据库文件改名

显示代码打印

alter database 例六数据库

modify file (

name=增加的数据文件,

newname=例六数据文件,

filename='c:\dbtest\例六数据文件ndf'

)

--5修改"例六数据库"的排序规则

显示代码打印

alter database 例六数据库

collate Chinese_PRC_CI_AS_KS

--6在"例六数据库"里删除一个数据文件

显示代码打印

alter database 例六数据库

remove file 例六数据文件

--7在"例六数据库"里添加一个文件组

显示代码打印

alter database 例六数据库

add filegroup 例十三文件组

--8在"例六数据库"里为一个文件组改名

显示代码打印

alter database 例六数据库

modify filegroup 例十三文件组

name=例十四文件组

--9在"例六数据库"里添加一个数据文件到一个文件组,并将该文件祖设为默认文件组。

显示代码打印

--alter database一次只能修改数据库的一个属性

alter database 例六数据库

add file (

name=例十五数据文件,

filename='c:\dbtest\例十五数据文件ndf'

)

to filegroup 例十四文件组

go

alter database 例六数据库

modify filegroup 例十四文件组 default

go

--10在"例六数据库"里删除"例十四文件组"。

显示代码打印

alter database 例六数据库

modify filegroup [primary] default

--将primary文件组设为默认文件组

go

alter database 例六数据库

remove file 例十五数据文件

--删除"例十四文件组"中包含的"例十五数据文件"

go

alter database 例六数据库

remove filegroup 例十四文件组

--删除"例十四文件组"

go

--11将"例六数据库"里一个文件组设为只读的。

显示代码打印

alter database 例六数据库

add filegroup 例十七文件组

--先添加一个文件组,因为primary文件组不能设为只读

go

alter database 例六数据库

add file (name=例十七数据文件,

filename='c:\dbtest\例十七数据文件ndf')

to filegroup 例十七文件组

--添加一个文件到文件组中,因为空文件组不能设为只读

go

alter database 例六数据库

modify filegroup 例十七文件组 read_only

--将文件组设为只读

go

--12将"例六数据库"设为只有一个用户可访问

显示代码打印

alter database 例六数据库

set single_user

--13设置"例六数据库"可自动收缩

显示代码打印

alter database 例六数据库

set auto_shrink on

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 数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在 dbopt 文件中。下面我们来介绍一下修改数据库的基本 *** 作。

在 MySQL 中,可以使用 ALTER DATABASE 来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为:

ALTER DATABASE [数据库名] {

[ DEFAULT ] CHARACTER SET <字符集名> |

[ DEFAULT ] COLLATE <校对规则名>}

语法说明如下:

ALTER DATABASE 用于更改数据库的全局特性。

使用 ALTER DATABASE 需要获得数据库 ALTER 权限。

数据库名称可以忽略,此时语句对应于默认数据库。

CHARACTER SET 子句用于更改默认的数据库字符集。

1、新建一个表:student,用做示例,如图所示。

2、首先修改字段名称,使用sql语句:“execute sp_rename '表名字段名','新字段名'”,如图所示。

例子修改:execute sp_rename 'studentname','nameNew'

3、然后是修改类型,使用sql语句:“alter table‘表名’ alter column‘字段名称 类型’not null”。

例子修改:alter table student alter column nameNew int not null

扩展资料

在修改Sql Server表结构时,常用到Alter语句,把一些常用的alter语句列举如下。

1、向表中添加字段

Alter table [表名] add [列名] 类型

2、删除字段

Alter table [表名]  drop column [列名]

3、修改表中字段类型 (可以修改列的类型,是否为空)

Alter table [表名] alter column [列名] 类型

4、添加主键

Alter table [表名] add constraint [ 约束名] primary key( [列名])

5、添加唯一约束

Alter table [表名] add constraint [ 约束名] unique([列名])

6、添加表中某列的默认值

Alter table [表名] add constraint [约束名] default(默认值) for [列名]

7、添加约束

Alter table [表名] add constraint [约束名] check (内容)

8、添加外键约束

Alter table [表名] add constraint [约束名]  foreign key(列名) referencese 另一表名(列名)

9、删除约束

Alter table [表名] drop constraint [约束名]

10、重命名表

exec sp_rename '[原表名]','[新表名]'

11、重命名列名

exec sp_rename '[表名][列名]','[表名][新列名]'

12、删除主键,以及主键上的索引

alter table table_name drop constraint clusteredName

参考资料:

百度经验-sql server怎么用语句更改字段名称和类型

以上就是关于如何在SQL中用ALTER TABLE语句修改表中的列名全部的内容,包括:如何在SQL中用ALTER TABLE语句修改表中的列名、oracle数据库中V$parameter是什么表,怎么通过sql比如alter语句来修改它的值、MySQL中修改数据库 ALTER DATABASE 语法的使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存