读《汇编语言》小结1

        近期,读了王爽的《汇编语言》1-8章,收获很多;对CPU,编程有了新的理解。

          CPU是世界上最聪明的,同时也是最笨的“大脑”。汇编程序员只需要通过改写寄存器,就可以随意控制CPU让它干各种复杂的运算;高级语言编写的应用程序,无论有多么的复杂,最终还是回归到操控寄存器。掌握了寄存器的使用,CPU就是你的傀儡。

        作为一个应用程序码农,理解了寄存器,对程序内存分配(段的划分来自于寄存器)也会有新的认识。

 

           1. 重要概念

地址总线的宽度决定了CPU的寻址能力。

数据总线的宽度决定了CPU与其它器件进行数据传输时的一次数据传输量。

控制总线的宽度决定了CPU对系统中其它器件的控制能力。(比如读写信号)

 

CPU来说,系统中所有存储器中的存储单元都处于一个统一的逻辑存储器中;这个逻辑存储器即是我们所说的内存地址空间。(统一编址)

 

段地址*

sql添加表列字段描述添加默认值删除字段 //删除表 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[JHCRM_Report_ss]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [JHCRM_Report_ss] //添加表 if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Table1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) create table [Table1] ([col1] int,[col2] int) //添加字段 if not exists( select * from syscolumns where syscolumns.[name]='FNewObjectEnd' and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[jsc_financial]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE jsc_financial ADD FNewObjectEnd int--NULL --添加先用项目结项数 go EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'先用项目结项数' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'jsc_financial', @level2type=N'COLUMN',@level2name=N'FNewObjectEnd' if not exists( select * from syscolumns where syscolumns.[name]='Record_Money' and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[JHCRM_Resource_Record_Main]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE JHCRM_Resource_Record_Main ADD Record_Money numeric(12, 2)--NULL --资源费用 go EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'资源费用' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'JHCRM_Resource_Record_Main', @level2type=N'COLUMN',@level2name=N'Record_Money' //删除字段 if not exists( select * from syscolumns where syscolumns.[name]=table_Name and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[tableName]')" and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE table_Name DROP COLUMN tableName
<think>首先,用户的问题很明确:如何在SQLServer中使用ALTERTABLE语句向现有表添加字段。我需要参考提供的引用来构建回答。引用内容回顾:-引用[1]:介绍了基本的ALTERTABLEADD语法。-引用[2]:更详细地说明了ALTERTABLE的用法,包括添加删除和修改列,并举了例子。强调了不同数据库系统的语法差异,但用户指定了SQLServer。-引用[3]:提醒SQLServer版本可能影响语法,要检查版本兼容性。特别是对SQLServer2000及更高版本的说明。用户的具体查询是:“我想在SQLServer中查找如何给表添加字段的方法或语法请问如何在SQLServer中通过ALTERTABLE语句为现有表添加字段”。所以,我需要聚焦在SQLServer上。回答结构:-根据系统级指令,回答必须结构清晰、逐步解决问题、真实可靠。-使用中文回答。-行内数学表达式用$...$(但这里可能不需要)。-独立公式用$$...$$(不适用)。-末尾添加引用标识。-生成相关问题。步骤:1.**引言**:直接回应用户的问题,确认SQLServer的ALTERTABLE语句。2.**语法介绍**:-使用引用[1]和[2]的基本语法:`ALTERTABLEtable_nameADDcolumn_namedata_type;`-强调SQLServer的特定语法,避免错误。引用[2]提到SQLServer用`ALTERCOLUMN`来修改数据类型,但添加新列用`ADD`。-引用[3]的警告:版本差异。建议用户确认SQLServer版本。3.**示例**:-提供一个清晰的代码块,展示添加字段SQL语句。-参考引用[2]的例子:ALTERTABLEPersonsADDDateOfBirthdate-调整为SQLServer的上下文。4.**注意事项**:-数据类型的选择。-默认值、NOTNULL约束等可选扩展。-权限和表锁定的影响。5.**结尾**:自然地添加引用标识。6.**生成相关问题**:基于指令,需要生成相关问题。完整回答框架:-解释基本语法。-给出示例代码。-注意事项部分。-相关问题。确保回答可靠:-基于引用[2]的详细解释。-提醒版本问题,如引用[3]。生成相关问题:-例如:1.如何在SQLServer添加带默认值的字段?2.SQLServer中ALTERTABLE添加列的限制是什么?3.如何修改现有列的数据类型在SQLServer中?-类似提供的示例结构。最终回答:-用户可见层:结构清晰,逐步指导。</think> ### 如何在 SQL Server 中通过 ALTER TABLE 语句为现有表添加字段SQL Server 中,使用 `ALTER TABLE` 语句向现有表添加字段(或称为列)是一种常见的数据定义语言(DDL)操作。我会逐步解释语法、提供示例,并说明注意事项,确保回答真实可靠。参考引用内容,SQL Server 的语法与其他数据库系统(如 MySQL 或 Oracle)有细微差异,因此我将重点关注 SQL Server 的特定实现[^1][^2][^3]。 #### 步骤 1: 理解基本语法 在 SQL Server 中,添加字段的基本语法如下: ```sql ALTER TABLE table_name ADD column_name data_type [CONSTRAINTS]; ``` - `table_name`:要修改的现有表的名称。 - `column_name`:要添加的新字段的名称。 - `data_type`:新字段的数据类型(如 `INT`, `VARCHAR(50)`, `DATE` 等)。 - `[CONSTRAINTS]`:可选约束,例如 `NOT NULL`、`DEFAULT` 值等(例如,`DEFAULT 'New Value'` 或 `NOT NULL`)。 重要注意事项: - 语法以 `ALTER TABLE` 开头,后跟表名和 `ADD` 子句。 - 参考引用[2],SQL Server添加字段时,通常不需要指定 `COLUMN` 关键字(与删除或修改列不同),直接使用 `ADD column_name data_type` 即可。 - 版本兼容性:SQL Server 2000 及更高版本支持此语法,但新版本(如 SQL Server 2016+)可能支持更多数据类型或约束。建议在执行前检查您的 SQL Server 版本(例如,使用 `SELECT @@VERSION`)以避免不兼容问题[^3]。 #### 步骤 2: 实际示例 假设您有一个名为 `Employees` 的表,您想添加一个 `BirthDate` 字段,类型为 `DATE`。以下是完整的 SQL 语句: ```sql -- 添加一个新字段 BirthDate,数据类型为 DATE ALTER TABLE Employees ADD BirthDate DATE; ``` - 如果添加成功,SQL Server 会返回命令完成的确认消息(如“Command(s) completed successfully.”)。 - 扩展示例:如果希望新字段不能为空,并设置默认值(例如默认为当前日期),可以这样写: ```sql ALTER TABLE Employees ADD JoinDate DATE NOT NULL DEFAULT GETDATE(); ``` - 这里 `NOT NULL` 确保该字段必须有值,`DEFAULT GETDATE()` 在插入新行时自动使用当前日期。 #### 步骤 3: 注意事项 - **数据类型选择**:确保 `data_type` 与字段用途匹配。例如: - 整数用 `INT`。 - 文本用 `VARCHAR(n)`(其中 `n` 是最大长度)。 - 日期用 `DATE` 或 `DATETIME`。 - **约束和索引**: - 添加字段后,如果需要索引或唯一约束,可以额外使用 `CREATE INDEX` 或 `ALTER TABLE ADD CONSTRAINT`。 - **性能影响**: - 在大型表上添加字段可能导致锁定,进而阻塞其他操作。建议在低峰期执行,或使用在线操作(如 SQL Server 2016+ 的 `WITH (ONLINE = ON)`)。 - 测试在开发环境:先在测试表上运行,避免生产环境错误。 - **权限要求**:您需要表级别的 `ALTER` 权限(通常由数据库管理员授予)。 通过以上步骤,您可以安全地在 SQL Server添加字段。如果语法执行出错,检查字段名是否与现有列冲突,或数据类型是否受支持(例如,引用[2]中提到的年份类型 `YEAR` 在 SQL Server 中不支持,需改用 `DATE` 或 `DATETIME`)。总之,`ALTER TABLE ADD` 是高效的表结构调整方式[^1][^2]。 参考文献: - 引用[1]:sql语句 向现有的表中添加字段。要向现有的表中添加字段,你可以使用 SQL 的ALTER TABLE语句。以下是添加字段的语法: ALTER TABLE table_name ADD column_name data_type;。 - 引用[2]:SQL ALTER TABLE 语句用于在现有表中添加删除或修改列。ALTER TABLE 语句  ALTER TABLE 语句用于在现有表中添加删除或修改列。 1.若要向表中添加列,请使用以下语法: ALTER TABLE table_name ADD column_name datatype。 - 引用[3]: SQL结构化查询语言应用基础--DDL篇--SQL Server数据库开发之ALTER TABLE修改表语句使用详解。但是有一点大家要注意一下, ALTER TABLE 语句在一些SQL Server 2000 及更高版本中,这个语句的基本语法是相似的, 但是可能随着版本的更新和提高,支持的功能和语法细节可能会有所不同!。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值