创建表(包括创建主键,外键,非空列,唯一)

合集下载

mysql建表语法

mysql建表语法

mysql建表语法MySQL是一款广泛使用的开源关系型数据库,其内置的建表语法使用起来非常方便,可以极大地提高数据管理的效率,下面我们就来讲解下MySQL建表语法。

MySQL中,采用CREATE TABLE语句建立表,语法格式如下:```CREATE TABLE [table_name] (field1 data_type [NULL | NOT NULL] [DEFAULT default_val], field2 data_type [NULL | NOT NULL] [DEFAULT default_val], ...[CONSTRAINT [symbol_name]{PRIMARY KEY | UNIQUE | CHECK | FOREIGN KEY}(field_list)])```其中,CREATE TABLE是建表操作的关键字;table_name是要创建的表的名称,field1, field2分别是表中的字段名,data_type是字段类型,NULL和NOT NULL用于设置字段是否为空,DEFAULT是用于设置默认值,symbol_name用于设置约束条件的名称,field_list 是约束的字段名的列表。

MySQL的数据类型有INTEGER,VARCHAR,LONGTEXT,DOUBLE,TEXT,DATE,DATETIME等,具体内容可以参照MySQL文档。

每个表最多可以有一个主键,用于标识表中的每一行记录,主键类型一般为INTEGER,如果要指定某个字段为主键,可以在字段定义时加上PRIMARY KEY约束,如:```CREATE TABLE person(id INTEGER PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20) NOT NULL,age INTEGER NOT NULL)```此外,MySQL还可以通过设置UNIQUE约束,确保表中某列数据的唯一性,如:```CREATE TABLE student(id INTEGER PRIMARY KEY AUTO_INCREMENT,name VARCHAR(10) NOT NULL,age INTEGER NOT NULL,tel VARCHAR(11) NOT NULL UNIQUE)```CHECK约束,指定表中字段的值必须满足某一条件,如:```CREATE TABLE student(id INTEGER PRIMARY KEY AUTO_INCREMENT,name VARCHAR(10) NOT NULL,age INTEGER NOT NULL,tel VARCHAR(11) NOT NULL UNIQUE,sex INTEGER NOT NULL CHECK (sex IN (1,2)))```此外,MySQL还可以通过FOREIGN KEY约束,将两个表中的数据进行关联,如:```CREATE TABLE class(id INTEGER PRIMARY KEY AUTO_INCREMENT,class_name VARCHAR(20) NOT NULL)``````CREATE TABLE student(id INTEGER PRIMARY KEY AUTO_INCREMENT,name VARCHAR(10) NOT NULL,age INTEGER NOT NULL,tel VARCHAR(11) NOT NULL UNIQUE,sex INTEGER NOT NULL CHECK (sex IN (1,2)),class_id INTEGER NOT NULL,FOREIGN KEY (class_id) REFERENCES class(id))```最后,在建表操作完成后,可以使用DESCRIBE table_name查看表的结构,或者使用SHOW TABLE STATUS查看表的详细信息。

PowerDesigner为数据库物理模型字段添加主键、外键、非空、默认值、唯一等约束(持。。。

PowerDesigner为数据库物理模型字段添加主键、外键、非空、默认值、唯一等约束(持。。。

PowerDesigner为数据库物理模型字段添加主键、外键、⾮空、
默认值、唯⼀等约束(持。

⼀、为数据库字段添加主键、⾮空约束
主键约束和⾮空约束,在创建列字段的时候就可以⽅便的进⾏操作。

⼆、为数据库字段添加外键约束
外键⼀般是在创建好副表以后,进⾏关联。

双肩外键连接线,即可弹出外键约束的详细设置框。

三、为数据库字段添加默认值约束
双击表字段的列号,可以打开字段详情,对字段进⾏更详细的配置。

默认值,可以是输⼊的⼀个固定值。

也可以是系统的函数。

例如是system_user,或current_timestamp
有的时候需要为列字段添加多个枚举值约束。

例如性别的M:男,F:⼥,或者完成状态:Y,未完成状态:N等。

五、为数据库字段添加唯⼀性约束
有时候需要为列添加唯⼀性约束,也就是这⼀列只允许值出现⼀次。

例如登录⽤户名。

注意:如果要分别为⽤户名和昵称添加唯⼀约束,则需要添加两个Uq_key。

Uq_key1是对⽤户名的唯⼀性约束。

Uq_key2是为昵称的唯⼀性约束。

如果是在⼀个Uq_key中,同事勾选了⽤户名和昵称,则是对⽤户名和昵称的组合约束。

例如admin+nickname,和admin+nickname1,数据库就认为没有冲突,约束通过。

六、为数据库字段添加其他check约束。

1.最⼤值,最⼩值约束。

sql主键语句

sql主键语句

sql主键语句SQL主键语句是数据库中非常重要的一部分,它可以保证数据的唯一性和完整性。

在数据库设计中,主键是一个非常重要的概念,它可以用来唯一标识一条记录。

在本文中,我们将列举出10个常用的SQL主键语句,以帮助读者更好地理解和应用主键。

1. 创建主键在创建表的时候,可以使用PRIMARY KEY关键字来定义主键。

例如:CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);在上面的例子中,我们定义了一个名为students的表,其中id列被定义为主键。

2. 修改主键如果需要修改主键,可以使用ALTER TABLE语句。

例如:ALTER TABLE studentsDROP PRIMARY KEY,ADD PRIMARY KEY (id, name);在上面的例子中,我们将原来的主键删除,并重新定义了一个由id 和name两列组成的主键。

3. 删除主键如果需要删除主键,可以使用ALTER TABLE语句。

例如:ALTER TABLE studentsDROP PRIMARY KEY;在上面的例子中,我们删除了名为students的表的主键。

4. 复合主键复合主键是由多个列组成的主键。

例如:CREATE TABLE orders (order_id INT,customer_id INT,order_date DATE,PRIMARY KEY (order_id, customer_id));在上面的例子中,我们定义了一个名为orders的表,其中order_id和customer_id两列组成了复合主键。

5. 自增主键自增主键是一种特殊的主键,它可以自动递增。

例如:CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),age INT);在上面的例子中,我们定义了一个名为students的表,其中id列被定义为自增主键。

ef code first 表中文注释

ef code first 表中文注释

ef code first 表中文注释1. 主键(Primary Key):主键是用于唯一标识一条记录的字段或字段组合。

在 EF Code First 中,可以使用 "[Key]" 注释来标识主键。

主键可以是单个字段,也可以是多个字段的组合。

使用主键可以提高数据的查询效率,并且可以保证数据的唯一性。

2. 外键(Foreign Key):外键用于关联两个表之间的关系。

在 EF Code First 中,可以使用 "[ForeignKey]" 注释来标识外键。

外键通常是一个与其他表的主键相关联的字段。

通过使用外键,可以在两个表之间建立关系,并且可以实现数据的引用和一致性。

3. 非空(Not Null):非空用于限制字段的值不能为空。

在 EF Code First 中,可以使用 "[Required]" 注释来标识非空字段。

非空字段可以确保数据的完整性和有效性,避免了数据的丢失和错误。

4. 唯一(Unique):唯一用于限制字段的值不能重复。

在 EF Code First 中,可以使用 "[Index(IsUnique = true)]" 注释来标识唯一字段。

唯一字段可以确保数据的唯一性,避免了重复数据的插入和查询。

5. 长度(Length):长度用于限制字段值的最大长度。

在 EF Code First 中,可以使用 "[MaxLength]" 注释来标识字段的最大长度。

长度可以用于限制字符串字段的长度,避免了数据的溢出和错误。

6. 默认值(Default Value):默认值用于指定字段在插入数据时的默认值。

在 EF Code First 中,可以使用 "[DefaultValue]" 注释来标识字段的默认值。

默认值可以用于设置字段的默认数值或默认字符串,避免了数据插入时的繁琐操作。

创建表的约束条件

创建表的约束条件

创建表的约束条件创建表的约束条件是在数据库中定义表结构时,为了保证数据的完整性和一致性,对表中的数据进行限制和规范的条件。

下面将介绍常见的表约束条件及其作用。

1. 主键约束:主键是用于标识表中每条记录的唯一标识符。

主键约束要求主键的值在表中是唯一的,并且不能为空。

主键可以是单个列,也可以是多个列的组合。

主键约束的作用是保证数据的唯一性和查询的高效性。

2. 唯一约束:唯一约束要求某个或某些列的值在表中是唯一的,但可以为空。

唯一约束的作用是保证数据的唯一性,可以用于限制某个字段的取值范围。

3. 非空约束:非空约束要求某个或某些列的值不能为空。

非空约束的作用是保证数据的完整性,防止出现空值。

4. 默认约束:默认约束是指在插入数据时,如果没有指定某个列的值,那么该列使用默认值。

默认约束的作用是提供默认值,简化数据插入操作。

5. 外键约束:外键约束用于建立两个表之间的关联关系,通过外键可以实现表与表之间的数据一致性和完整性。

外键约束要求外键列的值必须在主表中存在,或者为空。

外键约束的作用是保证数据的一致性和完整性,限制了数据之间的关联关系。

6. 检查约束:检查约束是对某个列的取值进行限制的条件,只有满足条件的数据才能插入或修改。

检查约束的作用是保证数据的合法性和一致性,可以用于限制某个字段的取值范围。

7. 级联约束:级联约束是指在对主表进行更新或删除操作时,自动更新或删除与之关联的从表中的数据。

级联约束的作用是保证关联表之间的数据一致性和完整性。

8. 域约束:域约束是在某个列的取值范围内进行限制的条件。

域约束的作用是保证数据的合法性和一致性,可以用于限制某个字段的取值范围。

9. 长度约束:长度约束是指对某个列的字符长度或数值长度进行限制的条件。

长度约束的作用是保证数据的完整性和一致性,可以用于限制某个字段的长度。

10. 唯一组合约束:唯一组合约束要求某几个列的组合在表中是唯一的。

唯一组合约束的作用是保证多个字段的组合值的唯一性。

数据库中创建表的方法

数据库中创建表的方法

数据库中创建表的方法数据库是用于存储和管理数据的软件系统,其中表是其中最基本的数据存储单位。

表是由一组有序的列和行组成,其中每个列描述了一种数据类型,每个行则表示一个数据记录。

创建表是数据库设计的第一步,它决定了数据存储的结构和数据类型,因此必须谨慎考虑。

本文将介绍数据库中创建表的方法,包括数据类型、主键、外键、约束等。

一、数据类型数据类型是指数据在计算机中的表示方式,它决定了数据能够存储的范围和精度。

不同的数据库支持不同的数据类型,但通常都包括以下几种类型:1. 整型(int):用于存储整数,包括有符号整数和无符号整数。

常见的有int、bigint、tinyint等。

2. 浮点型(float):用于存储小数,包括单精度浮点数和双精度浮点数。

常见的有float、double等。

3. 字符串型(char/varchar):用于存储文本,包括定长字符串和变长字符串。

char类型的长度是固定的,varchar类型的长度是可变的。

常见的有char、varchar、text等。

4. 日期时间型(date/time):用于存储日期和时间。

常见的有date、time、datetime等。

5. 布尔型(boolean):用于存储真假值。

通常只占用一个字节的存储空间。

以上数据类型只是数据库中的一部分,不同的数据库支持的数据类型也可能不同。

在创建表时,必须根据实际需求选择合适的数据类型,以避免数据存储不足或浪费存储空间的问题。

二、主键主键是用于唯一标识表中每个记录的列或列组合。

它的作用是确保每个记录都有唯一的标识符,方便数据的查询和更新。

主键通常是由一个或多个列组成,这些列的值不能重复,也不能为NULL。

在创建表时,必须指定主键列,并为其添加主键约束。

主键的创建方法如下:CREATE TABLE 表名 (列1 数据类型 PRIMARY KEY,列2 数据类型,...);其中,PRIMARY KEY表示将列1设置为主键。

SQL语句建表、设置主键、外键、check、default、unique约束

SQL语句建表、设置主键、外键、check、default、unique约束

SQL语句建表、设置主键、外键、check、default、unique约束· 什么是数据库?存放数据的仓库。

· 数据库和数据结构有什么区别?数据结构要解决在内存中操作数据的问题,数据库要解决在硬盘中操作数据的问题。

数据结构研究⼀些抽象数据模型(ADT)和以及定义在该模型上的⼀些操作,数据库是由表、关系、操作组成。

· 什么是主键?主键⽤来标识记录的唯⼀性。

· 什么是外键?外键⽤来标识表与表之间的联系。

· 什么是check约束?check约束限制了输⼊值的范围。

· 什么是default约束?给某个属性⼀个默认值。

· 什么是unique约束?限制某个属性的唯⼀性。

· unique约束与主键有什么区别?主键不可为null。

关于以上知识的⼀些sql语句:--部门表create table dept(dept_id int primary key,dept_name nvarchar(100) not null,dept_address nvarchar(100))--员⼯表create table emp(--不能写成{emp_id int constraint pk_emp_id_hahaha primary key,--设置主键并命名emp_name nvarchar(20) not null,--名字不能为空emp_sex nchar(1),--↓设置外键,该外键来⾃于dept表(主键表)dept_id int constraint fk_dept_id_heihei foreign key references dept(dept_id),)create table student(stu_id int primary key,stu_sal int check (stu_sal >=1000and stu_sal <=8000),--check约束stu_sex nchar(1) default ('男') --()可以省略,在数据库中字符串必须⽤''括起来)--向student表中插⼊数据insert into student(stu_id,stu_sal) values (1,1000);--可以插⼊insert into student(stu_id,stu_sal) values (2,10000);--插⼊失败,与check约束冲突insert into student values (2,6000,'⼥');--可以插⼊insert into student values (3,6000);--错误,列的个数不匹配。

SQLServer主键、外键、唯一等约束

SQLServer主键、外键、唯一等约束

SQLServer主键、外键、唯⼀等约束主键(primary key)约束、外键(foreign key)约束、唯⼀(unique)约束、检查(check)约束、默认值(default)约束实例Oracle 有如下类型的约束:NOT NULL(⾮空)、UNIQUE Key(唯⼀约束)、PRIMARY KEY(主键约束)、FOREIGN KEY(外键约束)、CHECK约束Oracle使⽤SYS_Cn格式命名约束.创建约束:在建表的同时创建、建表后创建约束的类型有如下⼏种:C (check constraint on a table)P (primary key)U (unique key)R (Referential AKA Foreign Key)V (with check option, on a view)O (with read only, on a view)1、创建约束CREATE TABLE students(student_id VARCHAR2(10) NOT NULL,student_name VARCHAR2(30) NOT NULL,college_major VARCHAR2(15) NOT NULL,status VARCHAR2(20) NOT NULL,state VARCHAR2(2),license_no VARCHAR2(30)) TABLESPACE student_data;2、创建主键:ALTER TABLE students ADD CONSTRAINT pk_students PRIMARY KEY (student_id)USING INDEX TABLESPACE student_index;Alter table table_name add constrants BID primary key (bookno);ALERT TABLE table_name MODIFY( column1 PRIMARY KEY);3、创建Unique约束:ALTER TABLE students ADD CONSTRAINT uk_students_license UNIQUE (state, license_no)USING INDEX TABLESPACE student_index;4、创建Check约束:定义每⼀记录都要满⾜的条件,条件表达式不允许有:CURRVAL, NEXTVAL, LEVEL, ROWNUM,SYSDATE, UID, USER, USERENV 函数:ALTER TABLE students ADD CONSTRAINT ck_students_st_lic CHECK ((state IS NULL AND license_no IS NULL) OR (state IS NOT NULL AND license_no is NOT NULL));添加check约束(check_1为约束名,dept_salary为字段名 ) alter table emp add constraint check_1 check(dept_salary>0); 5、创建外键约束:ALTER TABLE students ADD CONSTRAINT fk_students_state FOREIGN KEY (state) REFERENCES state_lookup (state);6. 创建不能为空约束 not nullalter table table_name modify(name not null);alter table table_name modify name1 varchar2(20) not null;实例1:⾸先创建学⽣信息表studentinfo和学⽣成绩表testinfo。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

创建主键(三种方法)
****************
创建学生表:
第一种:
create table student
(sno char(5) primary key,/*学号*/ /*可以直接指定主键*/ sname char(20) not null,/*姓名*/
ssex char(3) not null,/*性别*/
sage integer not null,/*年龄*/
sdept char(15);/*系别*/
第二种:
create table student
(sno char(5) not null,
constraint pk_student /*可以指定主键名称*/
primary key (sno),
sname char(20) not null ,/*非空,不可重复*/
ssex char(3) not null,
sage integer ,
sdept char(15));
第三种:
创建课程表:
create table course
(cno char(5),/*课程号*/
cname char(20) not null unique,/*课程名,非空,不可重复*/
cpno char(5),/*前置课程号(学此课之前必修课)*/
ccredit number);/*学分*/
通过修改表,设置主键.
alter table course
add constraint pk_course
primary key (cno);
*************
创建外键(3种方法)
*************
创建&quot;学生-课程-成绩&quot;表
create table sc
(sno char(5) constraint fk_student /*第一种,写在属性定义里面的*/ /*可以指定外键名称,*/
references student(sno),
cno char(5),
foreign key(cno) /*可省略外键名称*/
references course(cno),
grade number);
**********
第二种
**********
create table sc
(sno char(5),
constraint fk_student /*第二种,写在属性定义外面的*/ foreign key (sno)
references student(sno),
cno char(5),
foreign key(cno)
references course(cno),
grade number);
***********
第三种
***********
alter table sc
add constraint fk_student
foreign key(sno)
references student(sno);
****************************
建好表之后,新增或修改,删除约束
****************************
先用此语句查看某个表的所有约束:
select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints WHERE TABLE_name=upper(&#39;&amp;TABLE_Name&#39;);
0.增加not null约束
alter table student modify sname not null;
1.修改null约束
alter table student modify sname null;/*姓名可以为空*/
2.增加主键约束
alter table student
add constraint pk_student
primary key(id);
3.删除主键约束
先用此语句查看某个表的所有约束:
select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints WHERE TABLE_name=upper(&#39;&amp;TABLE_Name&#39;);
这里要删除的是约束&quot;fk_student&quot;
alter table drop constraint fk_student;
4.增加外键约束
alter table sc
add constraint fk_student
foreign key(sno)
references student(sno);
5.删除外键约束
需要知道要删除的外键名称,
先用此语句查看某个表的所有约束:
select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints WHERE TABLE_name=upper(&#39;&amp;TABLE_Name&#39;);
alter table drop constraint fk_student;
6.添加unique约束
alter table course modify cname
unique;
添加unique的同时,会自动创建一个相同名称的索引.
7.取消unique
alter table course
drop constraint sys_c005472;
8.删除索引
查找要删除的索引名称
运行此语句:
select index_name,table_owner,table_name,tablespace_name,status from user_indexes order by table_name;
然后运行
drop index sys_coo5472;
今天在对一个表,对其中一个属性,新建unique约束,
但是提示:ora-02261:such unique or primary key already exists in the table
原因是该属性已经是primary key了.
如果该属性已经有unique约束,则不能赋予该属性primary key约束.
1.一个表只能有一个primary key,可以有多个unique约束
2.当创建primary key的时候,会同时建立一个索引,名字和primary key的名称相同.
3.当某属性为primary key,会默认新增not null约束,当删除primary key后,not null属性取消.
4.表的一个属性可以同时设定not null和primary key约束.。

相关文档
最新文档