Create Table E( EID char(20) primary key, EName varchar(20), EGender char(2), Ebirth DATE, Dname varchar(20), Foreign key (DName) references D(DName) )怎样给这个表的EGender添加外键约束,要求检查职工Gender的取值只能是“M”或“F”之一
时间: 2024-01-22 09:20:32 浏览: 135
可以使用 CHECK 约束来限制 EGender 列的取值范围。
以下是修改后的 SQL 语句:
```
CREATE TABLE E (
EID CHAR(20) PRIMARY KEY,
EName VARCHAR(20),
EGender CHAR(2) CONSTRAINT CK_EGender CHECK (EGender IN ('M', 'F')),
Ebirth DATE,
Dname VARCHAR(20),
FOREIGN KEY (DName) REFERENCES D(DName)
);
```
这样就给 EGender 列添加了外键约束,同时限制取值只能是 "M" 或 "F"。
相关问题
CREATE TABLE emp( eid INT PREPARE KEY auto_increment, ename VARCHAR(20) NOT NULL, sex char(1) DEFAULT 'M', birthday date NOT NULL, jiguan VARCHAR(20), zhuanye VARCHAR(20), sale DOUBLE NOT NULL, did INT, FOREIGN KEY(did) REFERENCES dept(did) );运行错误
这条SQL语句存在语法错误,应该是 PRIMARY KEY 而不是 PREPARE KEY。正确的语句如下:
```
CREATE TABLE emp(
eid INT PRIMARY KEY auto_increment,
ename VARCHAR(20) NOT NULL,
sex char(1) DEFAULT 'M',
birthday date NOT NULL,
jiguan VARCHAR(20),
zhuanye VARCHAR(20),
sale DOUBLE NOT NULL,
did INT,
FOREIGN KEY(did) REFERENCES dept(did)
);
```
此外,还需要保证dept表已经存在,并且dept表中有一个名为did的整型列。
本题目要求编写SQL语句, 查询’上海’的仓库编号及其获得的订单数量和产品总价。 CREATE TABLE `employee` ( `Eid` varchar(10), --职工编号 `EName` varchar(30), --职工姓名 `Wno` varchar(10), --所在仓库 `Salary` int(11) --职工工资 ); CREATE TABLE `orders` ( `OrdNo` int(11), --订单编号 `Sid` varchar(10), --供应商编号 `Eid` varchar(10), --职工编号 `Pid` varchar(20), --商品编号 `Price` decimal(10,2), --价格 `QTY` int(11), --订购数量 `ordDate` date --订单日期 ); CREATE TABLE `warehouse` ( `Wno` varchar(10), --仓库编号 `City` varchar(20), --所在城市 `Size` int(11), --面积 );
SELECT warehouse.Wno, COUNT(orders.OrdNo) AS OrderCnt, SUM(orders.Price * orders.QTY) AS ProductTotalPrice
FROM warehouse
INNER JOIN employee ON warehouse.Wno = employee.Wno
INNER JOIN orders ON employee.Eid = orders.Eid
WHERE warehouse.City = '上海'
GROUP BY warehouse.Wno;
阅读全文