- 浏览: 115221 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
gtd03:
[b][/b][i][/i][u][/u]引用[*][img] ...
js 监听监键盘动作 -
tomfish88:
你用5条数据太少了,你用50000条你就看出差距了
多线程效率问题
总结:
1、关联的先建父表,再建子表
现要为学校建立一个数据库,设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。.现要建立关于系、学生、班级的数据库,关系模式为:
学生STUDENT (学号,姓名,年龄,班号)
班CLASS (班号,专业名,系名,入学年份)
系 DEPARTMENT (系号,系名)
试用SQL语言完成以下功能:
1 建表,在定义中要求声明:
(1)每个表的主外码。
(2)每个班级的人数不能超过30人。
(3)学生的年龄介于15到40岁之间。
(4)学生姓名不能为空。
(5)只有班里没有学生的时候,才能删除该班级。
2 插入如下数据
CLASS
(101,软件,计算机,1995; 102,微电子,计算机,1996;
111,无机化学,化学,1995; 112,高分子化学,化学,1996;
121,统计数学,数学,1995; 131,现代语言,中文,1996;
141,国际贸易,经济,1997; 142,国际金融,经济,1996;)
STUDENT
(8101,张三,18,101; 8102,钱四,16,121;
8103,王玲,17,131; 8105,李飞,19,102;
8109,赵四,18,141; 8110,李可,20,142
8201,张飞,18,111; 8302,周瑜,16,112;
8203,王亮,17,111; 8305,董庆,19,102;
8409,赵龙,18,101; 8510,李丽,20,142 )
DEPARTMENT
( 001, 数学; 002, 计算机;003, 化学;
004, 中文; 005, 经济;)
create table student
(
sut_id int not null primary key,
name varchar(12) not null,
age int(2),
classid_id int(3),
foreigen key (classid_id) references class(class_id)
ondelete no action,
check(age>15 and age<40)
)
type=innodb
;
//失败,integer=int(11)
foreign拼写 on delete
create table student
(
sut_id integer not null primary key,
name varchar(12) not null,
age int(2),
classid_id int(3),
foreign key (classid_id) references class(class_id)
on delete no action,
check(age>15 and age<40)
)
type=innodb
;
//失败
在mysql 中建立引用约束的时候会出现MySQL ERROR 1005: Can't create table (errno: 150)的错误信息结果是不能建立 引用约束。
出现问题的大致情况
1、外键的引用类型不一样,主键是int外键是char
2、找不到主表中 引用的列
3、主键和外键的字符编码不一致,
解决:先父表,后子表。
系表
create table department
(
dept_id int(3) not null primary key,
dept_name varchar(12)
)
type=innodb;
班级表
create table class
(
class_id int(3) not null primary key,
spe_name varchar(12) ,
dept_id int(3),
stu_date int(4),
index(dept_id),
foreign key (dept_id) references department(dept_id)
on delete cascade
on update cascade
)
type=innodb;
学生表
create table student
(
sut_id integer not null primary key,
name varchar(12) not null,
age int(2),
class_id int(3),
index(class_id),
foreign key (class_id) references class(class_id)
on delete no action,
check(age>15 and age<40)
)
;
插入数据先系 班 学生
insert into department (dept_id,dept_name) values(001,数学);
//失败,
insert into department (dept_id,dept_name) values(001,'数学');
insert into department (dept_id,dept_name) values(002,'计算机');
insert into department (dept_id,dept_name) values(003,'化学');
insert into department (dept_id,dept_name) values(004,'中文');
insert into department (dept_id,dept_name) values(005,'经济');
int类型的会忽略前面的0,所以插入001后仍然是1。
insert into class (class_id,spe_name,dept_id,stu_date) values(101,'软件',002,1995);
insert into class (class_id,spe_name,dept_id,stu_date) values(111,'无机化学',003,1995);
insert into class (class_id,spe_name,dept_id,stu_date) values(121,'数理统计',001,1995);
insert into class (class_id,spe_name,dept_id,stu_date) values(141,'国际贸易',005,1997);
insert into class (class_id,spe_name,dept_id,stu_date) values(102,'微电子',002,1996);
insert into class (class_id,spe_name,dept_id,stu_date) values(112,'高分子化学',003,1996);
insert into class (class_id,spe_name,dept_id,stu_date) values(131,'现代语言',004,1996);
insert into class (class_id,spe_name,dept_id,stu_date) values(142,'国际金融',005,1996);
alter table tablename change oldclounmdname newname integer;
alter table student change sut_id stu_id integer;
//修改列名
insert into student (stu_id,name,age,class_id) values(8101,'张三',18,101);
insert into student (stu_id,name,age,class_id) values(8102,'钱四',16,121);
insert into student (stu_id,name,age,class_id) values(8103,'王玲',17,131);
insert into student (stu_id,name,age,class_id) values(8105,'李飞',19,102);
insert into student (stu_id,name,age,class_id) values(8109,'赵四',18,141);
insert into student (stu_id,name,age,class_id) values(8110,'李可',20,142);
insert into student (stu_id,name,age,class_id) values(8201,'张飞',18,111);
insert into student (stu_id,name,age,class_id) values(8302,'周瑜',16,112);
insert into student (stu_id,name,age,class_id) values(8203,'王亮',17,111);
insert into student (stu_id,name,age,class_id) values(8305,'董庆',19,102);
insert into student (stu_id,name,age,class_id) values(8409,'赵龙',18,101);
insert into student (stu_id,name,age,class_id) values(8510,'李丽',20,142);
delete from class where class_id=101;
//no action 起作用 删除失败
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constrai
nt fails (`test/student`, CONSTRAINT `student_ibfk_1` FOREIGN KEY (`class_id`) R
EFERENCES `class` (`class_id`) ON DELETE NO ACTION)
探讨not null 和primary key
create table test
(
id int primary key
);
//成功 primary key 已经包含not null的意思
not null 和null
not null并不是该列为空就不能插入
为空时,数据库中什么都不显示
null 的,则该列没有插入数据时显示为null
每个专业一年只招一个班
专业名,年份的唯一
unique 实验
create table testa
(
id int,
name varchar(12),
unique(id,name)
);
insert into testa(id,name) values(1,'a');
insert into testa(id,name) values(1,'a');
//第二次插入时失败,增加了唯一性的约束
ERROR 1062 (23000): Duplicate entry '1-a' for key 1
Primary Key与Unique Key
Primary key 与Unique Key都是唯一性约束。但二者有很大的区别:
1、Primary key的1个或多个列必须为NOT NULL,如果列为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。而UNIQUE KEY 对列没有此要求。
2、一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY。
3 完成以下查询功能
(1)找出所有姓李的学生,并按其年龄由小到大排序。
select * from student where name like '%李%' order by age ;
(2)列出所有开设超过两个专业的系的名字。
select 系名
from class ,department
group by 系名
where class.系号=department.系号 and
having count( '专业号 ')> 2
select dept_name from class,department group by dept_name where class.dept_id=department.dept_id and having count(class.dept_id)>2;//失败
select dept_name from class,department where class.dept_id=department.dept_id; //成功
select dept_name from class,department where class.dept_id=department.dept_id group by dept_name; //成功
select count(dept_id) from class; //成功
select dept_id from class where count(dept_id)=2; //失败
select dept_id from class group by dept_id having(count(*)>=2); //查出开设超过两个专业的系的系号
select dept_name from class,department group by dept_id where class.dept_id=department.dept_id and having(count(*)>=2); //错误
select dept_name from department where dept_id in(select dept_id from class group by dept_id having(count(*)>=2)); //成功
(3)列出学生人数大于等于2的系的编号和名称。
select class_id from student group by class_id having(count(*)>=2); //查找大于2人的班级号
select class_id from student group by class_id where(count(*)>=2); //错误,不能使用where
select * from department where dept_id in(select dept_id from class where class_id in(select class_id from student group by class_id having(count(*)>=2))); //成功
通过一个班的人数超过2个来查找学生人数大于等于2的系的编号和名称
但是有些系有几个专业,这种查找不准确
4 学校又新增加了一个物理系,编号为006。
insert into department (dept_id,dept_name) values(006,'物理');
5 学生张三转到化学系111班,请更新相关的表。
update student set class_id=111 where name='张三';
发表评论
-
mysql blob 二进制大数据处理 图像 电影
2011-04-27 22:15 966import java.sql.Connection ; ... -
mysql clob 大数据处理
2011-04-27 22:11 2020import java.sql.Connection ; ... -
DatabaseMetaData ResultSetMetaData
2011-03-03 21:39 1269import java.sql.Connection ; i ... -
jdbc mysql 事务的设置
2011-03-03 21:11 2963import java.sql.Connection ; i ... -
cascade 外键完整性约束
2011-01-05 17:59 932oracle中使用on delete cascade和on d ... -
cmd 下操作数据库
2010-12-20 20:41 8721.connect to mysql db server ... -
正则实例
2010-11-18 14:07 660select * from messa ... -
Mysql之inner join,left join,right join详解 内外连接
2010-10-31 21:26 1219Mysql之inner join,left join,rig ... -
字段约束
2010-10-31 16:18 974create table people ( user ...
相关推荐
命题教师:北京邮电大学世纪学院计算机科学与技术系段爱玲一、单项选择题(总分75) 1. (分值:1.0 分)在MS SQL Server 中,关于数据库的说法正确的是( ) A: 一个数据库可以不包含事务日志文件。 B: 一个数据库...
北京大学数据库设计与实践_实习题目_2013(秋季)参考答案(全)
北京大学数据库设计与实践实习题目2013秋季,本文档包括所有题目。答案在我上传的另一个文档。
北大“数据库原理”上机实践题目总结.txt txt版
4数据库 编号 页数 例题 题目 语句 1 77 例4-9 检索供应零件给编号J1的工程的供应商编号SNO SETLEC DISTINCT SNO FROM SPJ WHERE JNO='J1' 2 77 例4-9 检索供应零件给工程J1,且零件编号为P1的供应商编号SNO SELECT ...
1中文全文数据库全文共2页,当前为第1页。1中文全文数据库全文共2页,当前为第1页。1、维普数据库不含以下哪种检索途径?() * C.专业检索 1中文全文数据库全文共2页,当前为第1页。 1中文全文数据库全文共2页,...
该题是高级数据库的四年真题,涵盖老师上课的教学点,可以帮助大家系统地复习高级数据库这门课程。
基于MYSQL的图书管理系统数据库设计.doc
"姓名 "小组评分 "教师评分 " "**** "**** "**** " " " " " " " " " " " " " " " " " 北京信息科技大学 信息管理学院 (数据库系统及应用实践)实验报告 "设计目的: " "数据库系统及应用是一门实践性很强的课程,...
武汉-英思--ORACLE面试测试题目.doc 武汉-亿阳信通NET.doc 武汉-世纪畅想笔试.doc 武汉-瑞得软件笔试题.doc 武汉-北大高科页面.doc 只显示部分,希望对正在或正准备找工作的朋友带来帮助,也祝愿大家早日找到心中...
北京邮电大学 数据库应用技术 期末作业 题目:智能停车场管理系统 学院:电子工程学院 学号: 姓名: 电话: 数据库设计作业智能停车场管理系统数据库设计完整版全文共14页,当前为第2页。2014年12月28日 数据库...
北京邮电大学 数据库应用技术 期末作业 题目:智能停车场管理系统 学院:电子工程学院 学号: 姓名: 电话: 数据库设计作业智能停车场管理系统数据库设计全文共16页,当前为第1页。2014年12月28日 数据库设计作业...
题目要求:建立通信网络 在n个城市建设通信网络,只需架设n-1条线路即可。设计算法,求出如果以最低的经济代价建设这个通信网络。要求如下: (1)至少包含10个城市; (2)城市数n由键盘录入; (3)城市坐标由随机...
山东理工大学计算机学院 课 程 设 计 (数据库系统原理) 网上书店管理信息系统 "班 级 " " "姓 名 " " "学 号 " " "指导教师 " " 二 一一年一月十三日 课程设计任务书及成绩评定 "课题名称 "网上书店管理信息系统 ...
数据库系统概论 课程设计 设计名称:学生信息管理系统数据库设计 湖南工业大学 课程设计任务书 2011 —2011 学年第 1 学期 计算机与通信 学院 (系、 部) 软件工程 专业 091 班 课程名称: 数据库原理 设计题目: ...
移动笔试真题之综合类--中国移动2011年大学生转正考试试题及答案 二、2020年移动招聘笔试精华讲义 2020年移动招聘笔试精华讲义 中国移动知识-简介&行史&发展动态&获奖情况 三、中国移动完整版知识点笔记资料(30+份...
houLangWeiBoJavaWeb springMVC+springSecurity+Thymeleaf+H2数据库实现简易微博北京邮电大学 网络工程 web开发技术基础大作业题目:简易版微博客系统的设计与实现设定:设计实现一个简易的类“微博”的单体式Web...
北京大学计算机科学技术研究所.doc 联合网视面试题.doc 缺陷的等级划分,一个经常被问到的问题.doc 软件测试工程师笔试试题(大集合).doc 千像互动的笔试.doc 2012java面试题分析大全.doc JAVA面试题集合...
Database-ProjectAuthor: Yuchao GuE-mail:Date: 2017-12-27Description: 北京化工大学15级数据库课程设计,我抽到的题目为员工加班管理,采用jsp前端页面展示,sevelet后台服务,实现的是B/S架构功能概览整体一览...