Sql server SQL创建员工部门等级表
创建员工管理数据库 使用员工管理 创建表Employee ( eID int(100)非空标识(1,1)主键, eName varchar(255)不为空, 作业文本不为空, 薪资整数(100)不为空, 通讯国际(100), hDate日期不为空, dID int(10)不为空Sql server SQL创建员工部门等级表,sql-server,Sql Server,创建员工管理数据库 使用员工管理 创建表Employee ( eID int(100)非空标识(1,1)主键, eName varchar(255)不为空, 作业文本不为空, 薪资整数(100)不为空, 通讯国际(100), hDate日期不为空, dID int(10)不为空 constraint emp_pk primary key (eID) )); alter table Employee IDENTITY(1,1)主键=1001 更改表格雇员 在eName之后添加列Mgr int(1
constraint emp_pk primary key (eID)
));
alter table Employee IDENTITY(1,1)主键=1001
更改表格雇员
在eName之后添加列Mgr int(100)
插入员工(姓名、经理、职务、工资、通信、hDate、dID)
价值观(“肯·亚当斯”,1004,“推销员”,70000,20000,“2008-04-12”,1),
(“鲁琼斯”,1004,“推销员”,6500015000,“2010-01-18”,1),
(“Dhal Sim”,1006,“会计师”,88000,空,“2001-03-07”,2),
(“艾伦·本田”,1006,“经理”,118000,空,“2001-03-17”,1),
(“Mike Bal”,1006,“接待员”,68000,空,“2006-06-21”,3),
(“Martin Bison”,空,“CEO”,210000,空,“2010-07-12”,3),
(“沈力”,1004,“推销员”,8600018000,“2014-09-18”,1),
(“藏罗斯”,1004,“推销员”,650001000,“2017-02-02”,1),
(“Sagar Kahn”,1004,“销售员”,70000,15000,“2016-03-01”,1)
更改表格雇员
添加约束emp_mgr_fk外键(mgr)在删除集NULL的更新级联上引用员工(eID)
创建表格部门
(
dID int(10)非空唯一标识(1,1)主键,
dName varchar(255)不为空,
地址文本,
电话短信
constraint d_pk primary key (dID)
))
更改表格雇员
添加约束emp_d_fk
外键(dID)参考部门(dID)
创建表格坡度
(
gID字符(10)非空唯一,
明萨尔国际酒店(100),
MaxSal int(100),
利维int(10)
))
插入等级(gID、MinSal、MaxSal、Leave)
值('A',NULL,60000,20),
('B',60000,80000,20),
('C',80000,100000,20),
('D',100000,120000,25),
('E',120000,空,30)
从等级中选择*
插入部门(姓名、地址、电话)
价值(“销售额”、“悉尼”、“0425 198 053”),
(“账户”、“墨尔本”、“0429198955”),
(“行政”、“墨尔本”、“0428198758”),
(“营销”、“悉尼”、“0427 198 757”)
从部门中选择*
我的代码有问题
Msg 156,15级,状态1,第18行
关键字“IDENTITY”附近的语法不正确。
Msg 156,第15级,状态1,第21行
关键字“column”附近的语法不正确。SQL Server的语法是非
自动增量
-您需要使用整数标识
列。而且:在T-SQL中,INT
是一个INT
是一个INT
-不能定义“精度”:
与此相反:
create table Employee
(
eID int(100) NOT NULL auto_increment,
使用以下命令:
CREATE TABLE dbo.Employee
(
eID INT NOT NULL IDENTITY(1,1),
这个问题发布在SQL Server下,SQL Server是Microsoft而不是MySQL,但您的语法似乎是针对MySQL的 如果您正在运行MSSQL,下面的代码将正常工作,但在尝试为同一表中的列生成外键时,您需要查看外键。通常,当引入一个键时,它与另一个表相关。即,等级上的FK参考员工上的PK
create database staff_management;
use staff_management;
create table Employee
(
eID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
eName varchar(255) NOT NULL,
Job text NOT NULL,
Salary int NOT NULL,
Comm int,
hDate date NOT NULL,
dID int NOT NULL,
);
alter table Employee
add Mgr int;
insert into Employee(eName,Mgr, Job, Salary, Comm, hDate, dID)
values ('ken Adams', 1004, 'Salesman', 70000, 20000, '2008-04-12', 1),
('Ru Jones', 1004, 'Salesman', 65000, 15000, '2010-01-18', 1),
('Dhal Sim', 1006, 'Accountant', 88000, NULL, '2001-03-07', 2),
('Ellen Honda', 1006, 'Manager', 118000, NULL, '2001-03-17', 1),
('Mike Bal', 1006, 'Receptionist', 68000, NULL, '2006-06-21', 3),
('Martin Bison',NULL, 'CEO', 210000, NULL, '2010-07-12', 3),
('Shen Li', 1004, 'Salesman', 86000, 18000, '2014-09-18', 1),
('Zang Ross', 1004, 'Salesman', 65000, 10000, '2017-02-02', 1),
('Sagar Kahn', 1004, 'Salesman', 70000, 15000, '2016-03-01', 1);
--alter table Employee
--add constraint emp_mgr_fk
-- foreign key (Mgr) references Employee(eID)
-- on update cascade on delete set NULL;
create table Department
(
dID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
dName varchar(255) not null,
Address text,
phone text,
);
--alter table Employee
--add constraint emp_d_fk
--foreign key (dID) references Department(dID);
create table Grade
(
gID char(10) not null unique,
MinSal int,
MaxSal int,
Leavee int,
constraint g_pk primary key (gID)
);
INSERT INTO Grade (gID, MinSal, MaxSal, Leavee)
VALUES ('A', NULL, 60000, 20),
('B', 60000, 80000, 20),
('C', 80000, 100000, 20),
('D', 100000, 120000, 25),
('E', 120000, NULL, 30);
select * from Grade;
insert into Department (dName, Address, phone)
values ('Sales', 'Sydney', '0425 198 053'),
('Accounts', 'Melbourne', '0429 198 955'),
('Admin', 'Melbourne', '0428 198 758'),
('Marketing', 'Sydney', '0427 198 757');
select * from Department;
您使用的是哪种数据库引擎?数据类型
text
已被弃用近15年。使用varchar(MAX)
,并且仅当您需要超过8000个字符时才使用。似乎varchar(n)
更适合于地址和电话。我确实尝试了一些不同的解决方案,现在我收到了这个错误。我只是用新的信息来更新网站
create database staff_management;
use staff_management;
create table Employee
(
eID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
eName varchar(255) NOT NULL,
Job text NOT NULL,
Salary int NOT NULL,
Comm int,
hDate date NOT NULL,
dID int NOT NULL,
);
alter table Employee
add Mgr int;
insert into Employee(eName,Mgr, Job, Salary, Comm, hDate, dID)
values ('ken Adams', 1004, 'Salesman', 70000, 20000, '2008-04-12', 1),
('Ru Jones', 1004, 'Salesman', 65000, 15000, '2010-01-18', 1),
('Dhal Sim', 1006, 'Accountant', 88000, NULL, '2001-03-07', 2),
('Ellen Honda', 1006, 'Manager', 118000, NULL, '2001-03-17', 1),
('Mike Bal', 1006, 'Receptionist', 68000, NULL, '2006-06-21', 3),
('Martin Bison',NULL, 'CEO', 210000, NULL, '2010-07-12', 3),
('Shen Li', 1004, 'Salesman', 86000, 18000, '2014-09-18', 1),
('Zang Ross', 1004, 'Salesman', 65000, 10000, '2017-02-02', 1),
('Sagar Kahn', 1004, 'Salesman', 70000, 15000, '2016-03-01', 1);
--alter table Employee
--add constraint emp_mgr_fk
-- foreign key (Mgr) references Employee(eID)
-- on update cascade on delete set NULL;
create table Department
(
dID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
dName varchar(255) not null,
Address text,
phone text,
);
--alter table Employee
--add constraint emp_d_fk
--foreign key (dID) references Department(dID);
create table Grade
(
gID char(10) not null unique,
MinSal int,
MaxSal int,
Leavee int,
constraint g_pk primary key (gID)
);
INSERT INTO Grade (gID, MinSal, MaxSal, Leavee)
VALUES ('A', NULL, 60000, 20),
('B', 60000, 80000, 20),
('C', 80000, 100000, 20),
('D', 100000, 120000, 25),
('E', 120000, NULL, 30);
select * from Grade;
insert into Department (dName, Address, phone)
values ('Sales', 'Sydney', '0425 198 053'),
('Accounts', 'Melbourne', '0429 198 955'),
('Admin', 'Melbourne', '0428 198 758'),
('Marketing', 'Sydney', '0427 198 757');
select * from Department;