SQL的数据定义(上):
SQL Server数据类型
Character 字符串:
Unicode 字符串:
VARCHAR与NVARCHAR比较:
Binary 类型:
Number 数字类型:
Date 类型:
其他数据类型(了解):
数据库表:
er图:
A、SQL Server创建表
CREATE TABLE语句简介:
表用于在数据库中存储数据。 表在数据库和模式中唯一命名。 每个表包含一个或多个列。 每列都有一个相关的数据类型,用于定义它可以存储的数据类型,例如:数字,字符串和日期。 要创建新表,请使用 CREATE TABLE 语句,如下所示:
在上面的语法中,
- 首先,指定创建表的数据库的名称。 database_name 必须是现有数据库的名称。 如果未指定,则 database_name 默认为当前数据库。
- 其次, schema_name 指定新表所属的模式。
- 第三, table_name 指定新表的名称。
- 第四,每个表应该有一个由一列或多列组成的主键。 通常,首先列出主键列,然后列出其他列。 如果主键只包含一列,则可以在列名后使用 PRIMARY KEY 关键字。 如果主键由两列或更多列组 成,则需要将 PRIMARY KEY 约束指定为表约束。 每个列都在语句中的名称后面指定了关联的数据 类型。 列可能具有一个或多个列约束,例如: NOT NULL 和 UNIQUE 。
- 第五,表可能在表约束部分中指定了一些约束,例如: FOREIGN KEY , PRIMARY KEY , UNIQUE 和 CHECK 。
请注意, CREATE TABLE 可以很复杂,并且具有比上述语法更多的选项。 SQL Server CREATE TABLE示例:
以下语句创建一个名为 visits 的新表来跟踪客户的店内访问:
在这个示例中:
因为没有明确指定创建表的数据库名称,所以在 bb_stores 数据库中创建了 visits 表。
但是已经明确指定模式,因此,在 sales 模式中创建了 visits 表。
visits 表中定义了 6 列,下面来看每一列的简介描述:
- visit_id 列是表的主键列。 IDENTITY(1,1) 指示SQL Server自动生成从 1 开始的列的整数,并 为每个新行递增 1 。
- first_name 和 last_name 列是 VARCHAR 类型的字符串列。 这些列最多可以存储 50 个字符。 visited_at 是 DATETIME 数据类型的列,记录客户访问商店的日期和时间。
- phone 列是一个接受 NULL 的 VARCHAR 字符串列。
- store_id 列存储标识客户访问商店的标识号。
- 表定义的末尾是 FOREIGN KEY 约束。 此外键确保 visit 表的 store_id 列中的值必须在 stores 表的。 store_id 列中可用。可在后续教程中了解有关 FOREIGN KEY 约束的更多信息。
SQL CREATE TABLE 语句
CREATE TABLE 语句
CREATE TABLE 语句用于创建数据库中的表。
SQL CREATE TABLE 语法
数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型:
SQL CREATE TABLE 实例
本例演示如何创建名为 "Person" 的表。
该表包含 5 个列,列名分别是:"Id_P"、"LastName"、"FirstName"、"Address" 以及 "City":
Id_P 列的数据类型是 int,包含整数。其余 4 列的数据类型是 varchar,最大长度为 255 个字符。
空的 "Persons" 表类似这样:
可使用 INSERT INTO 语句向空表写入数据。
A、SQL Server复制表
SQL Server中,如果目标表存在:
SQL Server中,,如果目标表不存在:
B、SQL Server标识列
要为表创建标识列,请使用 IDENTITY 属性,如下所示:
在上面语法中,
- seed 是表中的第一行的值(第一条记录标识列使用的值)。
- increment 是添加到上一行标识值的增量值。
seed 和 increment 的默认值是 1 ,即 (1,1) 。表示加载到表中的第一行的值为: 1 ,第二行的值为: 2 (在上一行: 1 的基础上加 1 ),依此类推。
假设,希望第一行的标识列的值为 10 ,增量值为 2 ,可使用以下语法:
SQL Server允许每个表只有一个标识列。
创建一个名为 hr 的新模式用来练习:
以下语句在个人标识号( person_id )列上使用 IDENTITY 属性创建新表:
重用标识值:
SQL Server不能重用标识值。 如果在标识列中插入行并且执行 insert 语句失败或回滚,则标识值将丢 失,并且不会再次生成。
这会导致标识列中出现空白。
方法一:
使用Truncate ,
TRUNCATE TABLE name 可以删除表内所有值并重置标识值 ,但是表内的数据将丢失。
方法二:
你想要重置标识值(不删除数据)采用下面方法即可:
1. DBCC CHECKIDENT ('表名', RESEED, new_value)(重置新的标识值,new_value为新值) ;
2. select IDENT_CURRENT('a') 当前表标识列的最大值;
3. select @@IDENTITY 当前标识列的最大值。
C. SQL Server向表添加列
ALTER TABLE ADD 语句将一个或多个列添加到表中。
以下 ALTER TABLE ADD 语句将新列添加到表中:
在上面语句中:
首先, table_name 指定要添加新列的表的名称。
其次, column_name 指定列的名称, data_type 表示数据类型, column_constraint 表示约束(如果 适用)。
如果要使用单个 ALTER TABLE 语句一次向表中添加多个列,请使用以下语法:
在此语法中,指定要在 ADD 子句之后添加到表中,以逗号分隔的列列表。
SQL Server ALTER TABLE ADD列示例 :
以下语句创建一个名为 sales.quotations 的新表:
要将名为 description 的新列添加到 sales.quotations 表,请使用以下语句:
以下语句将两个名为 amount 和 customer_name 的新列添加到 sales.quotations 表中:
SQL ALTER TABLE 语句
ALTER TABLE 语句
ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
SQL ALTER TABLE 语法
如需在表中添加列,请使用下列语法:
要删除表中的列,请使用下列语法:
注释:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。
要改变表中列的数据类型,请使用下列语法:
原始的表 (用在例子中的):
Persons 表:
SQL ALTER TABLE 实例
现在,我们希望在表 "Persons" 中添加一个名为 "Birthday" 的新列。
我们使用下列 SQL 语句:
请注意,新列 "Birthday" 的类型是 date,可以存放日期。数据类型规定列中可以存放的数据的类型。
新的 "Persons" 表类似这样:
改变数据类型实例
现在我们希望改变 "Persons" 表中 "Birthday" 列的数据类型。
我们使用下列 SQL 语句:
请注意,"Birthday" 列的数据类型是 year,可以存放 2 位或 4 位格式的年份。
DROP COLUMN 实例
接下来,我们删除 "Person" 表中的 "Birthday" 列:
Persons 表会成为这样:
以上就是我最近整理的新的知识内容,现在分享给你们,希望可以帮助到你们。