use 学生课程;
drop database 学生课程;show databases;
create database 学生课程;
use 学生课程;//使用数据库create table 学生 (
学号 CHAR(4) NOT NULL,
姓名 CHAR(10) NOT NULL,
性别 ENUM('男','女'),//枚举类型
专业 CHAR(20),
系别 CHAR(20),
年级 CHAR(2),
班别 CHAR(2),
联系电话 CHAR(8),
出生日期 DATE,
地区来源 VARCHAR(30),
变动情况 CHAR(10),
政治面貌 CHAR(8),
民族 CHAR(8) DEFAULT '汉',
PRIMARY KEY (学号)
)CHARSET=utf8;//字符设置create table 课程注册 (
课程编号 CHAR(4),
课程名称 CHAR(10) UNIQUE,//唯一
任课教师 CHAR(8),
授课教室 CHAR(8),
学分 INT,
primary key (课程编号)//主键设置 我觉得吧这个写在定义后面也是可行的
)CHARSET=utf8;create table 学期成绩 (
学号 CHAR(4),
课程编号 CHAR(4),
成绩 REAL,
备注 VARCHAR(50),
foreign key (学号) references 学生(学号),
foreign key (课程编号) references 课程注册(课程编号),//定义表格
primary key (学号,课程编号)
)CHARSET=utf8;
delimiter //
create trigger check_成绩 before insert on 学期成绩
for each row //行级触发器
begin
declare msg varchar(200);//声明变量
if NEW.成绩 > 100 or NEW.成绩 < 0 then//条件判断
set msg = '成绩范围有误,检查范围';//变量赋值
signal sqlstate 'HY000' set message_text = msg;
end if;//endif
end;//
delimiter ;//分隔符drop trigger check_学号;
alter table 学期成绩 modify column 成绩 real;
insert into 学生(学号,姓名,性别,专业,系别,年级,班别,联系电话,出生日期,地区来源,政治面貌,民族)
values('2012','李春刚','男','计算机应用','计算机','01','02','88923546','1985-2-10','呼市','团员','汉');update 学生 set 学号 = '0122' where 学号 = '2012';
insert into check_学号(学号,姓名,性别,专业,系别,年级,班别,联系电话,出生日期,地区来源,政治面貌,民族)
values('0012','李春刚','男','计算机应用','计算机','01','02','1245435','1985-2-10','呼市','团员','汉');insert into 课程注册(课程编号,课程名称,任课教师,授课教室,学分)
values('J134','计算机应用','王晓梅','4','4');insert into 学期成绩(学号,课程编号,成绩,备注)
values('2012','01',52,'33');select * from 学生 where 姓名 = '李春刚';
delete from 学期成绩 where 学号 = '0019';
delete from 学生 where 学号 = '2012';
delete from 课程注册 where 课程编号 = '134';select * from information_schema.TABLES;
select * from information_schema.COLUMNS;
select * from information_schema.KEY_COLUMN_USAGE;
show index from information_schema.tables;delimiter //
create trigger check_学号 before insert on 学生
for each row
begin
if NEW.学号 not rlike '^[1-9][[:digit:]]{2}[1-9]$'
then
signal sqlstate '45000'
set message_text = '学号格式有误';
end if;
end;//
delimiter ;delimiter //
create trigger check_学号2 before update on 学生
for each row
begin
if NEW.学号 not rlike '^[1-9][[:digit:]]{2}[1-9]$'
then
signal sqlstate '45000'
set message_text = '学号格式有误';
end if;
end;//
delimiter ;
create view check_学号 as
select * from 学生
where 学号 rlike '^[1-9][[:digit:]]{2}[1-9]$'
with check option;drop view check_学号;
delimiter //
create trigger check_课程编号 before insert on 课程注册
for each row
begin
if NEW.课程编号 not rlike '^J[[:digit:]]{3}$'
then
signal sqlstate '45000'
set message_text = '课程编号格式有误';
end if;
end;//
delimiter ;delimiter //
create trigger check_课程编号2 before update on 课程注册
for each row
begin
if NEW.课程编号 not rlike '^J[[:digit:]]{3}$'
then
signal sqlstate '45000'
set message_text = '课程编号格式有误';
end if;
end;//
delimiter ;update 课程注册 set 课程编号 = 'J123' where 课程编号 = 'J134';
drop trigger check_联系电话;
alter table 学生 modify column 性别 ENUM('男','女') default '男';
delimiter //
create trigger check_联系电话 before insert on 学生
for each row
begin
if NEW.联系电话 not rlike '^8892[234][[:digit:]]{3}$'
then
signal sqlstate '45000'
set message_text = '联系电话格式有误';
end if;
end;//
delimiter ;alter table 学生 add column 班长 CHAR(4);
delimiter //
create trigger check_班长 before insert on 学生
for each row
begin
if NEW.班长 not rlike '^[1-9][[:digit:]]{2}[1-9]$'
then
signal sqlstate '45000'
set message_text = '学号格式有误';
end if;
end;//
delimiter ;alter table 学生 drop column 政治面貌;
alter table 学生 add column 政治面貌 CHAR(8);
alter table 学生 add column 总学分 INT(11);alter table 课程注册 add column 授课学时 INT;
alter table 课程注册 add column 开课学期 INT;alter table 学生 change 年级 入学时间 DATE;
数据库字段是数字java怎么办 数据库字段说明代码
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Activity数据库字段说明
从表结构中可以看出,流程定义的元素需要每次从数据库加载并解析,因为流程定义的元素没有转化成
数据库 servlet java 数据 用户组