IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL Server的标识列 -> 正文阅读

[大数据]SQL Server的标识列

在上面语法中, seed 是表中的第一行的值(第一条记录标识列使用的值)。

increment 是添加到上一行标识值的增量值。

seed 和 increment 的默认值是 1 ,即 (1,1) 。

表示加载到表中的第一行的值为: 1 ,第二行的值为: 2 (在上一行: 1 的基础上加 1 ),依此类推。 假设,希望第一行的标识列的值为 10 ,增量值为 2 ,可使用以下语法:

IDENTITY (10,2)

?SQL Server允许每个表只有一个标识列。

创建一个名为 hr 的新模式用来练习:

 CREATE SCHEMA hr;

以下语句在个人标识号( person_id )列上使用 IDENTITY 属性创建新表:

CREATE TABLE hr.person (
person_id INT IDENTITY(1,1) PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
gender CHAR(1) NOT NULL
);

?

重用标识值

SQL Server不能重用标识值。

如果在标识列中插入行并且执行 insert 语句失败或回滚,则标识值将丢 失,并且不会再次生成。 这会导致标识列中出现空白。

方法一:

使用Truncate TRUNCATE TABLE name 可以删除表内所有值并重置标识值 ,但是表内的数据将丢失

方法二:

你想要重置标识值(不删除数据)采用下面方法即可:

1. DBCC CHECKIDENT ('表名', RESEED, new_value)

(重置新的标识值,new_value为新值)

2. select IDENT_CURRENT('a') 当前表标识列的最大值

3. select @@IDENTITY 当前标识列的最大值

2.?ALTER TABLE ADD 语句将一个或多个列添加到表中。

以下 ALTER TABLE ADD 语句将新列添加到表中:

ALTER TABLE table_name
ADD column_name data_type column_constraint;

?在上面语句中: 首先,

table_name 指定要添加新列的表的名称。

其次, column_name 指定列的名称,

data_type 表示数据类型, column_constraint 表示约束(如果 适用)。 如果要使用单个 ALTER TABLE 语句一次向表中添加多个列,请使用以下语法:

ALTER TABLE table_name
ADD
column_name_1 data_type_1 column_constraint_1,
column_name_2 data_type_2 column_constraint_2,
...,
column_name_n data_type_n column_constraint_n;

在此语法中,指定要在 ADD 子句之后添加到表中,

以逗号分隔的列列表。 SQL Server ALTER TABLE ADD列示例 以下语句创建一个名为 sales.quotations 的新表:

CREATE TABLE sales.quotations (
quotation_no INT IDENTITY PRIMARY KEY,
valid_from DATE NOT NULL,
valid_to DATE NOT NULL
);

要将名为 description 的新列添加到 sales.quotations 表,请使用以下语句:

ALTER TABLE sales.quotations
ADD description VARCHAR (255) NOT NULL;

?以下语句将两个名为 amount 和 customer_name 的新列添加到 sales.quotations 表中:

ALTER TABLE sales.quotations
ADD
amount DECIMAL (10, 2) NOT NULL,
customer_name VARCHAR (50) NOT NULL;

2.SQL Server修改表的列

修改列的数据类型

要修改列的数据类型,请使用以下语句:

ALTER TABLE table_name
ALTER COLUMN column_name new_data_type(size);

新数据类型必须与旧数据类型兼容,否则,如果列具有数据且无法转换,则会出现转换错误。 请看下面示例。

首先,创建一个包含只有一列数据类型为 INT 的新表:

CREATE TABLE t1 (c INT);

其次,在表中插入一些行:

INSERT INTO t1
VALUES
(1),
(2),
(3);

接下来,将列的数据类型从 INT 修改为 VARCHAR :

 ALTER TABLE t1 ALTER COLUMN c VARCHAR (2);

?第三,插入带有字符串数据的新行:

INSERT INTO t1
VALUES
('@');

?第四,将列的数据类型从 VARCHAR 修改回 INT :

ALTER TABLE t1 ALTER COLUMN c INT;

?SQL Server发出以下错误:

 Conversion failed when converting the varchar value '@' to data type int.

更改列的大小 以下语句创建一个新表,其中一列的数据类型为 VARCHAR(10) :

CREATE TABLE t2 (c VARCHAR(25));

?将一些示例数据插入到 t2 表中:

INSERT INTO t2
VALUES
('SQL Server'),
('Yiibai.com'),
('Kaops.com')

可以按如下方式增加列的大小,修改为: 50 :

ALTER TABLE t2 ALTER COLUMN c VARCHAR (50);

但是,当减小列的大小时,

SQL Server会检查现有数据以查看它是否可以根据新大小转换数据。 如果转 换失败,

SQL Server将终止该语句并发出错误消息。 例如,如果将列 c 的大小减小为 5 个字符:?

ALTER TABLE t2 ALTER COLUMN c VARCHAR (5);

SQL Server发出以下错误:

String or binary data would be truncated.

3. 向列添加NOT NULL约束

以下语句创建一个具有可为空列的新表:

?

CREATE TABLE t3 (c VARCHAR(50));

?

?以下语句向表中插入一些行:

INSERT INTO t3
VALUES
('Nullable column'),
(NULL);

然后再添加 NOT NULL 约束:

ALTER TABLE t3 ALTER COLUMN c VARCHAR (20) NOT NULL;

4. 删除列

alter table 表名 drop column 列名

?

?3.SQL Server删除表

DROP TABLE 语句从数据库中删除一个或多个表。

DROP TABLE [IF EXISTS] [database_name.][schema_name.]table_name;

在上面语法中,

首先, database_name 指定要删除的表的名称。

其次,指定创建表的数据库的名称以及表所属的模式的名称。

数据库名称是可选的。

如果不指 定, DROP TABLE 语句将删除当前数据库中的表。

第三,使用 IF EXISTS 子句仅在表存在时才删除表。

自SQL Server 2016 13.x起,支持 IF EXISTS 子句。

如果删除不存在的表,则会出现错误。 如果表已经存在,则 IF EXISTS 子句有条 件地删除该表。 当SQL Server删除表时,它还会删除该表的所有数据,触发器,约束和权限。 此外,SQL Server不会显 式删除引用已删除表的视图和存储过程。

要显式删除这些对象,必须使用 DROP VIEW 和 DROP PROCEDURE 语句。 SQL Server允许使用单个 DROP TABLE 语句来一次删除多个表,如下所示:?

DROP TABLE [database_name.][schema_name.]table_name_1,
[database_name.][schema_name.]table_name_2,
...
[database_name.][schema_name.]table_name_n;

SQL Server DROP TABLE示例 下面来看一些使用SQL Server DROP TABLE 语句的示例。

1. 删除不存在的表 以下语句删除 sales 模式中的 revenue 表:

 DROP TABLE IF EXISTS sales.revenues;

2. 删除单个表示例 以下语句在 sales 模式中创建一个名为 delivery 的新表:

CREATE TABLE sales.delivery (
delivery_id INT PRIMARY KEY,
delivery_note VARCHAR (255) NOT NULL,
delivery_date DATE NOT NULL
);

3.删除具有外键约束的表

以下语句在 procurement 模式中创建两个新表: supplier_groups 和 supplier :

CREATE SCHEMA procurment;
GO
CREATE TABLE procurment.supplier_groups (
group_id INT IDENTITY PRIMARY KEY,
group_name VARCHAR (50) NOT NULL
);
CREATE TABLE procurment.suppliers (
supplier_id INT IDENTITY PRIMARY KEY,
supplier_name VARCHAR (50) NOT NULL,
group_id INT NOT NULL,
FOREIGN KEY (group_id) REFERENCES procurement.supplier_groups (group_id)
);

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:47:05  更:2022-04-30 08:47:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:21:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码