学习笔记

·数据库表的创建及查询

文章目录

学习笔记

任务过程

第一步:分析需求

第二步:新建数据库

第三步:新建表

1.Grade表

2.Student表

3.subject表

第三步:插入数据

1.Grade表

2.Student表

3.subject表

第四步:查询测试

1.查询学号为1001的学生所有信息

2.根据班级名称查询每个班级有哪些学生

3.根据 学生学号 查询学了哪些课程

4.每个年级的学生所学的课程

学习

一:三范式

二:主键、外键和索引的区别

复习

任务过程

第一步:分析需求

每张表的 字段、类型、 约束等;

需要创建学生表—student,年级表—Grade,学科表—subject

学生表中字段有studentno ( varchar )( pk ),gradeid( int ),name ( varchar )(not null) , sex(char) ,age( int ) ,city ( varchar ) ,phone ( int )

年级表中字段有gradeid ( int ) (pk),gradename ( varchar )(unique)

学科表中字段有subjectid ( int )( pk ),subjectname ( varchar )( notnull ), statyhour ( int ),gradeid( itn )

第二步:新建数据库

​ 数据库名称 java

create database java;

第三步:新建表

1.Grade表

create table Grade(

gradeid int (5) primary key,

gradename varchar(20) unique

);

2.Student表

create table Student(

studentno varchar(10) primary key,

gradeid int(5) ,

name varchar(10) not null,

sex char(3) not null,

age int(3) not null,

city varchar(30) not null,

phone int (20) not null,

constraint Student_gradeid_fk foreign key(gradeid) references Grade(gradeid)

);

3.subject表

create table subject(

subjectid int(3) primary key,

subjectname varchar(20) not null,

statyhour int(10) ,

gradeid int(3),

constraint subject_gradeid_fk foreign key(gradeid) references Grade(gradeid)

);

第三步:插入数据

1.Grade表

insert into Grade(gradeid,gradename) values(1,"java33");

insert into Grade(gradeid,gradename) values(2,"java34");

insert into Grade(gradeid,gradename) values(3,"java35");

2.Student表

insert into student(studentno,gradeid,name,sex,age,city,phone) values("1001",1,"王可","男",20,"北京市石景山",12312344);

insert into student(studentno,gradeid,name,sex,age,city,phone) values("1002",1,"凌洋","女",20,"湖南省长沙",1244);

insert into student(studentno,gradeid,name,sex,age,city,phone) values("1003",2,"杨阳","男",20,"上海市长虹区",342344);

insert into student(studentno,gradeid,name,sex,age,city,phone) values("1004",2,"姜北","男",20,"河北省邯郸市",876554);

insert into student(studentno,gradeid,name,sex,age,city,phone) values("1005",3,"张三","女",20,"山东省济南市",234344);

insert into student(studentno,gradeid,name,sex,age,city,phone) values("1006",3,"王五","男",20,"湖州德清",7895674);

3.subject表

insert into subject(subjectid,subjectname,statyhour,gradeid)values(1,"Javase",40,3);

insert into subject(subjectid,subjectname,statyhour,gradeid)values(2,"HTML和CSS网页技术",60,2);

insert into subject(subjectid,subjectname,statyhour,gradeid)values(3,"mysql",70,1);

第四步:查询测试

1.查询学号为1001的学生所有信息

select * from student where studentno="1003";

2.根据班级名称查询每个班级有哪些学生

select gradename,name from Grade left outer join Student on Grade.gradeid=Student.gradeid;

3.根据 学生学号 查询学了哪些课程

select studentno,name,gradename from Student inner join Grade on Grade.gradeid=Student.gradeid where studentno=1002;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-31qsIFzn-1575379512201)(1004.png)]

4.每个年级的学生所学的课程

select Grade.gradename,Student.name, subject.subjectname from

Grade inner join Student on Grade.gradeid = Student.gradeid

inner join subject on Grade.gradeid=subject.gradeid;

学习

一:三范式

解释:

1NF:原子性 字段不可再分,否则就不是关系数据库; ------------字段不可分;

2NF:唯一性 要求数据库表中的每个实例或行必须可以被惟一的区分; -----有主键,非主键字段依赖主键,不能部分依赖;

3NF:每列都与主键有直接关系,不存在传递依赖; -------非主键字段不能相互依赖;

二:主键、外键和索引的区别

定义:

主键:唯一标识一条记录,不能有重复,不允许为空。

外键:表的外键是另一表的主键,外键是可以有重复的,可以是空值。

索引:该字段没有重复值,但可以有一个空值。

作用:

主键:用来保证数据完整性

外键:用来和其他表建立联系,用于保持数据的一致性。

索引:用来提高查询排序的速度

个数:

主键:主键只能有一个。

外键:一个表可以有多个外键。

索引:一个表可以有多个唯一索引。

-- 外键约束

constraint A表_id字段_fk foreign key(id字段) references B表(id字段);

如:

constraint subject_gradeid_fk foreign key(gradeid) references Grade(gradeid);

subject表中的gradeid 是 Grade表中的主键,所以gradeid是subject的外键。

复习

建库

create database practice; – 表示创建名字为practice的数据库

drop database practice; – 表示删除名字为practice的数据库

建表

create table 表名 (

字段名1 数据类型,

字段名2 数据类型,

字段名3 数据类型,

… …

);

向表格中增加字段

alter table 表名 add 字段名 数据类型;

实现表格中字段的改变

alter table 表名 change 旧字段名 新字段名 数据类型;

实现表格中字段的删除

alter table 表名 drop 字段名;

实现表格名称的重命名

alter table 表名 rename to 新的表名;

新增数据

insert into 表名 [(字段名1, 字段名2, …)] values (值1, 值2, …);

更改数据

update 表名 set 字段名1 = 值1 [where 条件];

删除数据

delete from 表名 [where 条件];

基本查询

select 字段名1, 字段名2, … from 表名;

select [distinct] 字段名1 [as 别名1], 字段名2 [as 别名2], … from 表名

[where 查询条件]

[group by 字段名]

[having 条件]

[order by 字段名1 asc或desc];

[distinct]--------去重

[as …]---------别名

[group]--------分组查询

[having 条件]-------------分组后过滤

[order by 字段名1 asc或desc];------------字段排序

between… and …、

按照条件进行模糊查询 …where first_name like ‘%拉’;

内连接:

select [表名1.]字段名1, [表名2.]字段名2, … from 表名1 inner join 表名2 on 连接条件;

左外连接:

select [表名1.]字段名1, [表名2.]字段名2, … from 表名1 left outer join 表名2 on 连接条件;

右外链接:

​ select [表名1.]字段名1, [表名2.]字段名2, … from 表名1 right outer join 表名2 on 连接条件;

分页查询 select 字段名1 [as 别名1], 字段名2 [as 别名2], ... from 表名 limit 初始位置(下标默认从0开始), 记录的条数;

join 表名2 on 连接条件;

右外链接:

​ select [表名1.]字段名1, [表名2.]字段名2, … from 表名1 right outer join 表名2 on 连接条件;

分页查询

select 字段名1 [as 别名1], 字段名2 [as 别名2], ... from 表名 limit 初始位置(下标默认从0开始), 记录的条数;

mysql建立班级表_MySql 复习及学生表,课程表,班级表的创建相关推荐

  1. mysql建立联合索引_mysql之联合索引

    mysql之联合索引测试: 前期准备: 建立联合索引? CREATE TABLE `test` ( `id` bigint(16) NOT NULL AUTO_INCREMENT, `aaa` var ...

  2. mysql怎么退出当前表_MYSQL基本操作--登陆退出,数据库、表、字段的创建、查看、删除、更改...

    1.mysql启动与登陆退出 1.1.启动与停止mysql 1.2.登陆 1.3.退出 2.数据库的基本操作 2.1.创建数据库 2.2.显示数据库 2.3.选择与修改数据库 2.4.删除数据库 3. ...

  3. 怎么查找表_MySQL索引是怎么支撑千万级表的快速查找?

    前言 在 MySQL 官方提到,改善操作性能的最佳方法 SELECT在查询中测试的一个或多个列上创建索引.索引条目的作用类似于指向表行的指针,从而使查询可以快速确定哪些行与WHERE子句中的条件匹配, ...

  4. delete 会不会锁表_MySQL的insert into select 引发锁表

    上周五HaC我要上线,有一个脚本需要执行,执行前需要备份一个表. 运维大佬:"这个表的备份为什么要这么久,,??" 1秒过去了--2秒过去了-- 期间运营反馈系统出现大量订单超时情 ...

  5. mysql 备份表_MySQL中表的复制以及大型数据表的备份教程

    表复制mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助. 假如我们有以下这样一个表: id username passwo ...

  6. python复制mysql表_MySQL中表的复制以及大型数据表的备份教程

    CREATE TABLE newadmin ( id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY ) AS ( SELECT * FROM admin ) ...

  7. 【SQL】通过SQL 语句创建学生信息表(学号、学生姓名、班级)、学习成绩表(学号、学科、成绩)

    1.创建数据库 Create Database School 2.创建数据表 学生表(学号.姓名.性别.所在班级.年龄) Create table student(Sno nvarchar(100) ...

  8. linux mysql清除数据库所有表_MySQL修复指定数据库下的所有表

    mysql,mariadb,percona 这几天数据库频繁crash,查看日志发现类似如下的错误: [ERROR] mysqld: Table './database/pre_forum_forum ...

  9. mysql 锁24小时_MySQL中Alter table 不长时间锁表的情况汇总。

    查看原文:http://www.tanbo.name/html/99669.html 前言: MySQL 的大表运维总是令人头疼的一件事,特别是大表表结构的修改尤为困难. 首先,alter table ...

最新文章

  1. Android文件的下载
  2. 隔壁,阿里18k老测试员常用的 软件测试工具大全
  3. 【转】DNS查询过程
  4. SQLite的锁的原理:
  5. python编程入门经典 评分-豆瓣评分爆炸!Python+机器学习经典图书
  6. Centos7安装mongo3.4
  7. 报告如何单独添加水印?永洪BIV9.2解锁版权保护新方式
  8. Pytorch(3)-数据载入接口:Dataloader、datasets
  9. Smalltalk 语言的地位为何一落千丈?
  10. 测试计算机性能的软件比较专业,用什么软件可以测试计算机的整体性能?
  11. mysql数据库输入窗体vbs代码_VBS教程:VBScript 与窗体
  12. SSH远程登录原理学习
  13. threejs 绘制星空
  14. 苹果电脑计算机找不到打印机,macbook air电脑关于添加打印机的问题
  15. iPhone模拟器截图
  16. 使用 PhyML 构建进化树
  17. 计算机桌面底边出现库如何去掉,桌面图标有蓝底怎么去掉? 去掉桌面图标阴影技巧...
  18. 信息技术必修丨网络文件扩展名与文件储存格式
  19. 图象处理基本算法[整理]
  20. 支付宝人脸认证(安卓)

热门文章

  1. python如何检验显著性差异_[Python] 如何证明两组样本有显著性差异(t-test假设检验) | 学步园...
  2. Silver Cow Party POJ - 3268
  3. PAT 1096大美数(测试点3)
  4. php图片重复的,很强的PHP图片处理类
  5. Uestc-1002-解救小Q
  6. 美通社日历 | 媒体关注、会展信息、企业财报发布,节假日备忘(1月25日-31日)...
  7. 【BLE】SIG-蓝牙技术联盟
  8. iPhone文件难管理?iOS三大工具来帮你!
  9. 怎样掌握在和客户沟通中的小技巧
  10. C语言static变量详解