Sql server SQL创建员工部门等级表

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

创建员工管理数据库

使用员工管理

创建表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(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;