Sqlite教程

SQLite 主键

SQLite主键是一个简单字段或字段组合,用于唯一定义一条记录。一个表只能有一个主键。
主键不应为NULL值。

创建主键

通常在创建表时创建主键。我们在执行CREATE TABLE语句时定义主键。
语法:
CREATE TABLE table_name
(
column1 datatype [ null | NOT null ],
column2 datatype [ null | NOT null ],
......
CONSTRAint constraint_name PRIMARY KEY (pk_col1, pk_col2, ... pk_col_n)
);
参数说明:
表名称: : 它指定要创建的表的名称。 第1列,第2列: : 它指定要在表中创建的列。 约束名称: 。它指定主键的名称。 pk_col1,pk_col2,... pk_col_n: : 它指定构成主键的列。
示例:
创建一个表" WORKERS",其中worker_id是主键。
CREATE TABLE WORKERS
( worker_id INTEGER PRIMARY KEY,
last_name VARCHAR NOT null,
first_name VARCHAR,
join_date DATE
);

添加主键

当您尚未在CREATE TABLE语句中定义主键并且以后必须添加主键时使用。
您不能使用ALTER TABLE语句创建主键。相反,您必须使用主键创建一个新表并复制旧表中的所有数据。
语法:
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
ALTER TABLE table_name RENAME TO old_table;
CREATE TABLE table_name
(
column1 datatype [ null | NOT null ],
column2 datatype [ null | NOT null ],
...
CONSTRAint constraint_name PRIMARY KEY (pk_col1, pk_col2, ... pk_col_n)
);
INSERT INTO table_name SELECT * FROM old_table;
COMMIT;
PRAGMA foreign_keys=on; 
参数说明:
表名: : 它指定一个包含主键的新表。 旧表: 它对必须更改的表进行分类。 约束名称: 。它指定主键的名称。 pk_col1,pk_col2,... pk_col_n: 指定构成主键的列的名称。
示例:
创建一个没有主键的"员工"表。
CREATE TABLE employees
( employee_id INTEGER,
last_name VARCHAR NOT null,
first_name VARCHAR,
hire_date DATE
);
     
现在,运行以下命令以使" employee_id"成为主键。
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
ALTER TABLE employees RENAME TO old_employees;
CREATE TABLE employees
(
employee_id INTEGER,
last_name VARCHAR NOT null,
first_name VARCHAR,
hire_date DATE,
CONSTRAint employees_pk PRIMARY KEY (employee_id)
);
INSERT INTO employees SELECT * FROM old_employees;
COMMIT;
PRAGMA foreign_keys=on;
     
现在,它将雇员表重命名为" old_employees",然后创建一个新表" employees",并将所有数据从onld表转移到新表。
现在,您可以删除" old_employees"表。
DROP TABLE old_employees; 
     

删除主键

您不能使用ALTER TABLE语句删除主键。相反,您必须创建一个删除了主键的新表,然后将数据复制到该新表中。
语法:
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
ALTER TABLE table_name RENAME TO old_table;
CREATE TABLE table_name
(
column1 datatype [ null | NOT null ],
column2 datatype [ null | NOT null ],
...
);
INSERT INTO table_name SELECT * FROM old_table;
COMMIT;
PRAGMA foreign_keys=on; 
     
参数说明:
表名: : 它指定要从中删除主键的表的名称。 old_table: : 这指定在删除主键后创建新表之后将要删除的原始表的名称。
示例:
假设我们有一个现有表" engineers",其主键为" engineer_id",我们必须删除该主键。
CREATE TABLE engineers
(engineer_id INTEGER,
engineerr_name VARCHAR NOT null,
address VARCHAR,
city VARCHAR,
CONSTRAint engineers_pk PRIMARY KEY (engineer_id)
); 
     
现在,运行以下命令以删除主键。
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
ALTER TABLE engineers RENAME TO old_engineers;
CREATE TABLE engineers
(
engineer_id INTEGER,
engineer_name VARCHAR NOT null,
address VARCHAR,
city VARCHAR
);
INSERT INTO engineers SELECT * FROM old_engineers;
COMMIT;
PRAGMA foreign_keys=on;
     
主键现在从现有的"工程师"表中删除。但是原始表现在已重命名为" old_engineers"。
现在删除" old_engineers"表。
DROP TABLE old_engineers;
     

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4