create table student( sno int(6) primary key auto_increment, sname varchar(5) not null, sex char(1) default '男' check(sex='男'|| sex='女') , age int(3) check(age>=18 and age<=50), enterdate date, classname varchar(10), email varchar(15) unique ); 表级约束 create table student7( sno int(6) auto_increment, sname varchar(5) not null, sex char(1) default '男' , age int(3) , enterdate date, classname varchar(10), email varchar(15) , constraint pk_stu primary key (sno), constraint ck_se check (sex='男'|| sex='女'), constraint ck_ag check (age>=18 and age<=50), constraint uq_stu_email unique (email) ); drop table student; delete from student; select * from student; 1、auto_increment insert into student values (1108,'张三','男','18','2021-.9-1','java01','zs@1693.com'); > insert into student values (null,'张三','男','18','2021-.9-1','java01','zs@164.com'); 2、primary key insert into student values (1101,'张三','男','18','2021-.9-1','java01','zs@165.com'); 3、not null insert into student values (null,null,'女','18','2021-.9-1','java01','zs@166.com'); > 1048 - Column 'sname' cannot be null 4、default insert into student values (null,'张三',null,'18','2021-.9-1','java01','zs@169.com'); insert into student (sno,sname,age,enterdate,classname,email) values (null,'张三','19','2021-.9-1','java01','zs@166.com'); 5、check(sex='男'|| sex='女') insert into student values (null,'张三','南','18','2021-.9-1','java01','zs@160.com'); > 3819 - Check constraint 'student_chk_1' is violated. 3819 - Check constraint 'student_chk_2' is violated. > 时间: 0s 6、check(age>=18 and age<=50) insert into student values (null,'张三','女','12','2021-.9-1','java01','zs@162.com'); 3819 - Check constraint 'student_chk_2' is violated. > 时间: 0s 7、unique select * from student; insert into student values (null,'张三','男','18','2021-.9-1','java01','zs@166.com'); > 1062 - Duplicate entry 'zs@166.com' for key 'student.email' 表级约束 create table student7( sno int(6) auto_increment, sname varchar(5) not null, sex char(1) default '男' , age int(3) , enterdate date, classname varchar(10), email varchar(15) , constraint pk_stu primary key (sno), constraint ck_se check (sex='男'|| sex='女'), constraint ck_ag check (age>=18 and age<=50), constraint uq_stu_email unique (email) );
时间: 2024-01-15 18:02:33 浏览: 139
您好,这段SQL语句包含了创建表、表级约束以及一些插入数据的操作。下面是对这段SQL语句的解释和回答:
1. 创建表student和student7,student表中使用了auto_increment作为主键,而student7表中则使用了constraint pk_stu primary key (sno)作为主键。
2. 在student表中插入数据时,使用了auto_increment来自动生成主键,另外也可以使用null来插入数据,系统会自动分配一个新的主键。
3. 在student表中使用了not null约束,插入数据时必须保证该列有值,否则会报错。
4. 在student表中使用了default约束,如果插入数据时没有给定该列的值,则会使用默认值。
5. 在student表中使用了check约束,保证插入的数据符合指定的条件。
6. 在student表中使用了check约束,保证插入的数据符合指定的条件。
7. 在student表中使用了unique约束,保证插入的数据在该列中唯一。
总体来说,这段SQL语句主要是用于创建一个学生表,并对该表的字段进行了一些约束和限制,以确保插入的数据符合要求。同时,也演示了一些插入数据时可能出现的错误和异常情况。
相关问题
现在mysql里建了一个数据库毕业设计资料管理系统bs里面有如下表 学生表 create table student (sno varchar(10) primary key,sname varchar(20),spassword varbinary(20) not null); 管理员表 create table manager (mno varchar(10) primary key,mname varchar(20),mpassword varbinary(20) not null); 学生毕业设计表 create table gradu_design (gid int(10) AUTO_INCREMENT primary key,sno varchar(10),job_book TEXT,open_report TEXT,interim_report TEXT,week_report TEXT,gradu_paper TEXT,comment TEXT,FOREIGN KEY(sno) REFERENCES student(sno))AUTO_INCREMENT = 1; 管理员任务发布表 create table task (tid int(10) AUTO_INCREMENT primary key,mno int(10),title TEXT,content TEXT,subtime date,FOREIGN KEY(mno) REFERENCES manager(mno))AUTO_INCREMENT = 1; 请用idea里entity包中编写相应实体类和在dao包、bean包编写相应的东西,主要想实现以下功能管理员能发布任务,能查看学生毕设里的所有如(job_book、开题报告open_report、中期报告interim_report、周报week_report、毕业论文gradu_paper、文献翻译document),管理员有能对学生类实现增删改查的权限
好的,根据您提供的数据库表结构,我可以给您提供以下实体类和相关代码:
首先是实体类:
1. 学生表对应的实体类 Student.java
```java
@Entity
@Table(name = "student")
public class Student {
@Id
@Column(name = "sno")
private String sno;
@Column(name = "sname")
private String sname;
@Column(name = "spassword")
private byte[] spassword;
// getters and setters
}
```
2. 管理员表对应的实体类 Manager.java
```java
@Entity
@Table(name = "manager")
public class Manager {
@Id
@Column(name = "mno")
private String mno;
@Column(name = "mname")
private String mname;
@Column(name = "mpassword")
private byte[] mpassword;
// getters and setters
}
```
3. 学生毕业设计表对应的实体类 GraduDesign.java
```java
@Entity
@Table(name = "gradu_design")
public class GraduDesign {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "gid")
private int gid;
@Column(name = "sno")
private String sno;
@Lob
@Column(name = "job_book")
private String jobBook;
@Lob
@Column(name = "open_report")
private String openReport;
@Lob
@Column(name = "interim_report")
private String interimReport;
@Lob
@Column(name = "week_report")
private String weekReport;
@Lob
@Column(name = "gradu_paper")
private String graduPaper;
@Lob
@Column(name = "comment")
private String comment;
// getters and setters
}
```
4. 管理员任务发布表对应的实体类 Task.java
```java
@Entity
@Table(name = "task")
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "tid")
private int tid;
@Column(name = "mno")
private String mno;
@Column(name = "title")
private String title;
@Lob
@Column(name = "content")
private String content;
@Column(name = "subtime")
private Date subtime;
// getters and setters
}
```
接下来是DAO层的代码:
1. 学生表对应的DAO层 StudentDao.java
```java
@Repository
public interface StudentDao extends JpaRepository<Student, String> {
Student findBySno(String sno);
}
```
2. 管理员表对应的DAO层 ManagerDao.java
```java
@Repository
public interface ManagerDao extends JpaRepository<Manager, String> {
Manager findByMno(String mno);
}
```
3. 学生毕业设计表对应的DAO层 GraduDesignDao.java
```java
@Repository
public interface GraduDesignDao extends JpaRepository<GraduDesign, Integer> {
List<GraduDesign> findBySno(String sno);
GraduDesign findByGid(int gid);
}
```
4. 管理员任务发布表对应的DAO层 TaskDao.java
```java
@Repository
public interface TaskDao extends JpaRepository<Task, Integer> {
List<Task> findByMno(String mno);
Task findByTid(int tid);
}
```
最后是服务层的代码,即对学生表实现增删改查的权限:
1. 学生服务层 StudentService.java
```java
@Service
public class StudentService {
@Autowired
private StudentDao studentDao;
public List<Student> findAll() {
return studentDao.findAll();
}
public Student findBySno(String sno) {
return studentDao.findBySno(sno);
}
public void save(Student student) {
studentDao.save(student);
}
public void deleteBySno(String sno) {
studentDao.deleteById(sno);
}
public void update(Student student) {
studentDao.save(student);
}
}
```
以上就是根据您提供的数据库表结构给出的实体类、DAO层和服务层的代码,您可以根据需要进行调整和修改。
ceeate table student( `id` integer auto_increment key, `sno` varchar(8), `sname` varchar(10), `sage` integer, `major` varchar(10) default null );这个由什么错误
在这个 SQL 语句中,AUTO_INCREMENT 关键字必须放在主键约束的后面,也就是说,应该把 `key` 和 `auto_increment` 的位置调换一下。另外,建议使用 `PRIMARY KEY` 代替 `KEY` 来定义主键,如下所示:
```sql
CREATE TABLE student (
id INTEGER PRIMARY KEY AUTO_INCREMENT,
sno VARCHAR(8),
sname VARCHAR(10),
sage INTEGER,
major VARCHAR(10) DEFAULT NULL
);
```
这个语句定义了一个名为 `student` 的表,其中 `id` 是主键,使用 `AUTO_INCREMENT` 属性来自动生成一个唯一的整数值。其他列包括 `sno`、`sname`、`sage` 和 `major`,分别表示学号、姓名、年龄和专业,其中 `major` 列使用 `DEFAULT NULL` 定义了一个默认值为 NULL 的可选列。
阅读全文