SQL_STUDY:9.SQL DEFAULT 约束和create index 语句

本文深入探讨了SQL中的DEFAULT约束和createindex语句的使用方法。DEFAULT约束用于向列中插入默认值,确保在未指定值时自动填充。createindex语句则用于创建索引,提高数据检索速度,包括简单索引和唯一索引的创建,以及如何在多个列上创建索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:

  1. DEFAULT 约束
  2. create index 语句

SQL DEFAULT 约束

DEFAULT 约束用于向列中插入默认值。

如果没有规定其他的值,那么会将默认值添加到所有的新记录。

SQL DEFAULT Constraint on CREATE TABLE

下面的 SQL 在 “Persons” 表创建时为 “City” 列创建 DEFAULT 约束:

My SQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)

通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
OrderDate date DEFAULT GETDATE()
)

SQL DEFAULT Constraint on ALTER TABLE

如果在表已存在的情况下为 “City” 列创建 DEFAULT 约束,请使用下面的 SQL:

MySQL:

ALTER TABLE Persons
ALTER City SET DEFAULT 'SANDNES'

SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'SANDNES'

撤销 DEFAULT 约束

如需撤销 DEFAULT 约束,请使用下面的 SQL:
MySQL:

ALTER TABLE Persons
ALTER City DROP DEFAULT

SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT

create index 语句

CREATE INDEX 语句用于在表中创建索引。

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

索引

您可以在表中创建索引,以便更加快速高效地查询数据。

用户无法看到索引,它们只能被用来加速搜索/查询。

注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

SQL CREATE INDEX 语法

在表上创建一个简单的索引。允许使用重复的值:

CREATE INDEX index_name
ON table_name (column_name)

注释:“column_name” 规定需要索引的列。

SQL CREATE UNIQUE INDEX 语法

在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

CREATE INDEX 实例

本例会创建一个简单的索引,名为 “PersonIndex”,在 Person 表的 LastName 列:

CREATE INDEX PersonIndex
ON Person (LastName) 
```sql
如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC```sql
CREATE INDEX PersonIndex
ON Person (LastName DESC) 

假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:

CREATE INDEX PersonIndex
ON Person (LastName, FirstName)
[2025-06-24 17:08:04] 正在连接到 @localhost… [2025-06-24 17:08:05] 使用批处理模式,最多 1000 条 INSERT/UPDATE/DELETE 语句 [2025-06-24 17:08:05] 运行 D:\study\计算机工程课设\medicine_management\medicine_db.sql CREATE TABLE `user` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `username` VARCHAR(50) NOT NULL, `password` VARCHAR(100) NOT NULL, `phone` VARCHAR(20... [2025-06-24 17:08:05] [3D000][1046] No database selected CREATE TABLE `drug` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `description` TEXT, `usage_info` TEXT COMMENT '用法用量', ... [2025-06-24 17:08:05] [3D000][1046] No database selected CREATE TABLE `cart` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `user_id` BIGINT NOT NULL, `drug_id` BIGINT NOT NULL, `quantity` INT DEFAULT 1, ... [2025-06-24 17:08:05] [3D000][1046] No database selected CREATE TABLE `order` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `order_no` VARCHAR(32) NOT NULL, `user_id` BIGINT NOT NULL, `total_amount` DECIM... [2025-06-24 17:08:05] [3D000][1046] No database selected CREATE TABLE `order_item` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `order_id` BIGINT NOT NULL, `drug_id` BIGINT NOT NULL, ... [2025-06-24 17:08:05] [3D000][1046] No database selected INSERT INTO `drug` (`name`, `description`, `usage_info`) VALUES ('阿莫西林胶囊', '适用于敏感菌所致的感染', '口服,成人一次0.5g,每6-8小时1次'), ('布... . [2025-06-24 17:08:05] [3D000][1046] No database selected [2025-06-24 17:08:05] 摘要: 在 148毫秒中7/7 条语句已执行, 7条失败 (文件中有 3,096 个符号)
最新发布
06-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值