㈠ 数据库外键约束。
说明send和accept都是user表的外键。
constraint f_key foreign key(send) references user(username);
constraint f_key2 foreign key(accept) references user(username);
对于messagebox主键表就是本身嘛,外键表自然就是user表了
即user表是messagebox表的父表。
㈡ 数据库设置约束条件有什么好处
数据库约束是为了保证数据的完整性而实现的一套机制,它具体的根据各个不同的数据库的实现而有不同的工具。
一般来说有以下几种实现方式:
1、检查约束:
通过在定义数据库表里,在字段级或者是在表级加入的检查约束,使其满足特定的要求。
比如以下的表定义:
CRATE TABLE student(
id serial,
name varchar(10),
scrore integer CHECK (scrore > 0));
定义分数不能小于0。
也可以在表级定义:
CHECK (字段1 秘字段2之间的关系)
2、非空约束:
这个大家应该很熟悉了。直接在字段后面加上:NOT NULL。
3、唯一约束:
定义一个唯一约束但是它并不包括NULL值。直接在字段定义后加入UNIQUE即可定义一个唯一约束。
4、主键约束:
SQL 92建议在建立一个表时定义一个主键:它其实就是:唯一约束+非空约束。
5、外键:
所有约束里数这个约束最有意思了:比如说有这样一件事,你需要做一个学生查询的网页。那么为了方便,你将建立三个数据表:
一个是学生情况表:
CREATE TABLE student(
id serial primary ke,
name varchar(10),
.......
);
一个表是记录所开的课程
CREATE TABLE class(
class_id varchar(5) primary key,
describe varchar(20)
.....
);
一个表是记录学生成绩的表:
CREATE TABLE score(
id integer references student,
class_id varchar(5) references class,
score integer CHECK (score > 0)
);
这个时候你会发现以下几件事:
如果你在成绩表里输入不存在的学生和课程,数据系统将拒绝。如果你要删除一个学生,但是他已经在成绩表里有记录,数据库将拒绝删除这个学生的记录。
那么我们现在来看,前面一个对我们是有利的,因为谁都不想一个学生无缘无故的有了一个成绩的记录,但是在删除的时候就会比较麻烦了,有时候我的确是想删除这个学生。那么我总不能在应用程序里照顾得那么周到吧。不要紧我们在定义数据表的时候只在外键那一样加入以下控制就OK了,我们来重新定义数据表 score
CREATE TABLE score(
id integer references student ON UPDATE CASCADE ON DELETE CASCADE, //我们希望在学生记录改变时自动改变分数记录,在删除学生级联删除分数记录
class_id varchar(5) references class ON UPDATE CASCADE ON DELETE
RESTRICT, //我们希望在改变课程时自动改变分数记录表里关于课程的引用,但是不希望删除课程时级联删除分数。
.....
);
这样我们就可以很好做到数据完整了。
㈢ 关于数据库建表建约束的问题。。。
我先给你连接数据库的类吧!
步骤1
package test.procere;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectOrcl {
String driver,url,user,pwd;
public ConnectOrcl(){
driver = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
user = "scott";
pwd = "tiger";
}
public Connection getConn(){
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url,user,pwd);
} catch (ClassNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return conn;
}
// 关闭与数据库的连接的方法
public void closeConn() {
try {
if (!conn.isClosed()) {
conn.close();
}
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
public static void main(String[] args){
if(conn != null){
system.out.println("连接成功!")
}
}
}
㈣ 数据库表怎么添加约束条件
第一步:新建数据库并设置可写权限
打开SQL Server管理器窗口,用本地用户登录;然后点击右键——新建数据库;完成之后将数据库文件及日志文件设置为可读可写,如图:
㈤ 数据库约束
也就是说你的添加约束的字段是3到5之间
而你这个表里面的这个字段已经有数据了 是不在3到5之间的 所以你添加这个约束就会报错
你有两个解决方法:
1、把你的约束条件改下 使现有的数据满足你的约束条件
2、把你这个表的数据改下 使数据满足你现在的约束条件
不明白可以随时问我
祝楼主学习愉快
㈥ SQL中表约束是什么意思啊,它的作用是什么谢谢
约束是在表中定义的用于维护数据库完整性的一些规则。
通过为表中的列定义约束可以防止将错误的数据插入表中,也可以保持表之间数据的一致性
.若某个约束条件只作用于单独的列,可以将其定义为列约束也可定义为表约束;
若某个约束条件作用域多个列,则必须定义为表约束。
㈦ 有关数据库约束的问题
--仅假设lz说的“设置一个标识的约束,让它只能是“数字”和“字母””的这个为长度为10的char型的字段
USE 库名 --引入数据库
ALTER TABLE 表名 --修改表
ADD CONSTRAINT ck_sc --创建检查约束
check (字段名 like '[0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]') --添加约束条件
--电话号码只能是7位到11位!
USE 库名 --引入数据库
ALTER TABLE 表名 --修改表
ADD CONSTRAINT ck_sl --创建检查约束
check (len(TelephoneNo) >= 7 and len(TelephoneNo) <= 11) --添加约束条件
㈧ 数据库约束条件
INTERVAL
用法: INTERVAL (限定语)
有两种类型的interval:一种为“年份-月份”,即保存年份和月份(YYYY-MM);一种为“天-时间”(DD HH:MM:SS),用来保存天数、小时、分钟和秒。
限定语——在某些数据库中interval前导精度(lead precision)——根据其值来指示interval采用“年份-月份”还是“天-时间”方式。
interval可正可负。
当与其它interval类型变量相比较时,结果保持最大精度,如有必要则补零。
INTERVAL全部由整数组成,除了含有小数的秒之外。
“年份-月份”类型的interval变量只能与其它的“年份-月份”的interval变量进行比较。“天-时间”类型也与此类似。
㈨ 建数据库表时 为字段指定约束条件都需要注意些什么
既然是primary key就不用设置not null了,因为pk就是唯一非空的
SQLServer不太清楚,在oracle里,类型一般都是小写,首字母大写不大写没关系。
除了not null,pk,fk等,如果需要对数据进行排除,可以创建check约束。或者是通过业务代码进行数据的校验。