创建数据库 有就删除 没有就创建

CREATE DATABASE IF NOT EXISTS mysql1;
-- 使用表
USE mysql1; -- 删除数据库   DROP DATABASE mysql1;

创建表

-- 学生表
CREATE TABLE IF NOT EXISTS Student
(Sno VARCHAR(20) NOT NULL PRIMARY KEY,Sname VARCHAR(20) NOT NULL,Ssex VARCHAR(20) NOT NULL,Sbirthday DATETIME,Class VARCHAR(20)
)
-- 课程表
CREATE TABLE IF NOT EXISTS Course
(Cno VARCHAR(20) NOT NULL PRIMARY KEY,Cname VARCHAR(20) NOT NULL,Tno VARCHAR(20) NOT NULL ,CONSTRAINT fk_Course_id FOREIGN KEY(Tno) REFERENCES Con(id)
)
-- 成绩表
CREATE TABLE IF NOT EXISTS Score
(Sno VARCHAR(20) NOT NULL PRIMARY KEY,
--  CONSTRAINT fk_Score_sno FOREIGN KEY(Sno) REFERENCES Sno(id),Cno VARCHAR(20) NOT NULL,
--  CONSTRAINT fk_Score_cno FOREIGN KEY(Cno) REFERENCES Cno(id),Degree VARCHAR(20)
)
-- 教师表
CREATE TABLE IF NOT EXISTS Teacher
(Tno VARCHAR(20) NOT NULL PRIMARY KEY,Tname VARCHAR(20) NOT NULL,Tsex VARCHAR(20) NOT NULL,Tbirthday DATETIME,Prof VARCHAR(20),Depart VARCHAR(20) NOT NULL
)    

使用表

SELECT * FROM Student;
SELECT * FROM Course;
SELECT * FROM Score;
SELECT * FROM Teacher;

添加数据

-- 学生
INSERT INTO Student(Sno,Sname,Ssex,Sbirthday,Class)VALUES
('108','曾华','男','1977-9-1','95033'),
('105','匡明','男','1975-10-2','95031'),
('107','王丽','女','1977-1-23','95033'),
('106','李军','男','1977-2-20','95033'),
('109','王芳','女','1977-2-10','95031'),
('100','陆军','男','1977-6-3','95031');
-- 课程
INSERT INTO Course(Cno,Cname,Tno)VALUES
('3-105','计算机导论','825'),
('3-245','操作系统','804'),
('6-166','数字电路','856'),
('9-888','高等数学','831');
-- 成绩
INSERT INTO Score(Sno,Cno,Degree)VALUES
('70','3-245','75'),
('60','3-245','68'),
('50','3-105','92'),
('77','3-105','88'),
('80','3-105','76'),
('88','3-105','64'),
('56','3-105','91'),
('76','3-105','78'),
('22','6-166','85'),
('90','6-166','79'),
('1000','6-166','81');
-- 教师
INSERT INTO Teacher(Tno,Tname,Tsex,Tbirthday,Prof,Depart)VALUES
('804','李诚','男','1985-12-2','副教授','计算机系'),
('856','张旭','男','1969-3-12','讲师','电子工程系'),
('825','王萍','女','1972-5-15','助教','计算机系'),
('831','刘冰','女','1977-8-14','助教','电子工程师');

查询数据

-- ① 查询Student表中的所有记录的Sname、Ssex和Class列。
select Sname,Ssex,Class from Student
-- ② 查询教师所有的单位即不重复的Depart列。
select Depart from Teacher
-- ③ 查询Student表的所有记录。
select * from Student
-- ④ 查询Score表中成绩在60到80之间的所有记录。
select * from Score where Degree between 60 AND 80;
-- ⑤ 查询Score表中成绩为85,86或88的记录。
select * from Score where Degree=85 or Degree=86 or Degree=88
-- ⑥ 查询Student表中“95031”班或性别为“女”的同学记录。
select * from Student where Class=95031 or Ssex='女'
-- ⑦ 以Class降序查询Student表的所有记录。
select * from Student ORDER BY Class
-- ⑧ 以Cno升序、Degree降序查询Score表的所有记录。
select * from Score ORDER BY Degree
-- ⑨ 查询分数大于70,小于90的Sno列。
select * from Score where Sno>70 AND Sno<90
-- ⑩ 查询95033班和95031班全体学生的记录。
select * from Student where Class=95033 or Class=95031
-- 11 查询存在有85分以上成绩的课程Cno,注意去重。
select Cno from Score where Degree>85
-- 12 查询Student表中不姓“王”的同学记录。
select * from Student where Sname like '王%' -- 查询姓王的
select * from Student where Sname not like '王%'
-- 13 查询Student表中每个学生的姓名和年龄。
select Sname,Ssex from Student
-- 14 以班号和年龄从大到小的顺序查询Student表中的全部记录。
select * from Student ORDER BY Class DESC ,Sbirthday;

三种连接表的方式

交叉连接   左连接   右连接  内连接  limit  正序 和 升序

左向外联接的结果集包括指定的左表的所有行,而不仅仅是连接列所匹配的行,如果左表的某行的右表中没有匹配行,则在相关 连的结果集行中右表的所有选择列表列均为空值。

-- 交叉连接
select * from Student cross join Teacher
select * from Student , Teacher
-- 左连接 那个在左边那个就是主表
select * from Student as a left join Teacher as b on a.Sno = b.Tno
-- 右连接
select * from teacher b right join Student a on b.Tno = a.Sno
-- 内连接
select * from Student a inner join Teacher b on a.Sno = b.Tno
-- Limit
select * from Student limit 2,4
-- 排序
select * from Student ORDER BY Sno -- 升序
select * from Student ORDER BY Sno DESC-- 降序

小案例

drop database ku;
create database ku;
use ku;create table student(sid INT PRIMARY KEY AUTO_INCREMENT,sname VARCHAR(16) NOT NULL,sage INT NOT NULL,ssex VARCHAR(256),snativeplace VARCHAR(256),smajor VARCHAR(256),sclass  VARCHAR(256),snative VARCHAR(256)
)AUTO_INCREMENT=10001;
CREATE TABLE course(cid INT NOT NULL  PRIMARY KEY auto_increment,cname VARCHAR(32) NOT NULL,cval  INT NOT NULL,ctime INT NOT NULL,tid INT NOT NULL
);
CREATE TABLE teacher(tid INT NOT NULL PRIMARY KEY auto_increment,tname VARCHAR(32) NOT NULL,tsex VARCHAR(32) NOT NULL,tage INT NOT NULL,tlvl VARCHAR(32) NOT NULL);create table mark(sid varchar(256) not null,cid varchar(256) not null,cmark varchar(256) not null
);
INSERT into student(sname,sage,ssex,snativeplace,smajor,sclass,snative) VALUES
("廖官忠",21,"男","福建","信计","2班","汉族"),
("张三",20,"男","江苏","信计","2班","汉族"),
("李四",19,"男","福建","信计","2班","傣族"),
("萧瑾",21,"女","福建","统计","1班","汉族"),
("叶晶",21,"女","上海","传媒","1班","朝鲜族"),
("萧瑾",19,"女","北京","统计","2班","汉族"),
("李宁",21,"男","云南","信控","1班","傣族"),
("唐品",18,"男","江苏","信计","2班","汉族"),
("吴强",20,"男","山东","统计","1班","汉族"),
('欧阳锋',22,'男','四川','应数','1班','汉族'),
('王充样',23,'男','黑龙江','统计','2班','汉族'),
('韦小宝',17,'女','福建','统计','2班','汉族'),
('李绍',21,'女','福建','信计','2班','汉族'),
('黄马华',22,'男','浙江','心理学','1班','汉族'),
('艾蔚儿',19,'女','福建','计算机','1班','黎族'),
('赵若辰',21,'男','江苏','心理学','1班','汉族'),
('徐扬',22,'男','青海','计算机','1班','汉族'),
('徐静静',19,'女','安徽','计算机','1班','黎族');INSERT INTO course(cid,cname,cval,ctime,tid)VALUES(2001,'数学',6,64,30001),(2002,'英语',4,64,30002),(2003,'体育',2,32,30003),(2004,'马克思主义',6,64,30004),(2005,'计算机基础',3,48,30005),(2006,'心理学',4,48,30006),(2007,'空间天气学',6,64,30007);
INSERT INTO teacher(tid,tname,tsex,tage,tlvl)VALUES(30001,'马六','男',45,'高级教师'),(30002,'胡美丽','女',32,'中级教师'),(30003,'李强','男',40,'高级教师'),(30004,'胡适','男',55,'教授'),(30005,'钱枫','男',37,'高级教师'),(30006,'戴安安','女',27,'中级教师'),(30007,'张伯伦','男',47,'教授');insert into mark(sid,cid,cmark) values
(10001,2001,85),
(10001,2002,75),
(10001,2003,80),
(10001,2004,70),
(10001,2005,60),
(10001,2006,95),
(10001,2007,70),
(10002,2001,80),
(10002,2002,65),
(10002,2003,70),
(10002,2004,80),
(10002,2005,55),
(10002,2006,78),
(10002,2007,82),
(10003,2001,69),
(10003,2002,57),
(10003,2003,90),
(10003,2004,80),
(10003,2005,77),
(10003,2006,92),
(10003,2007,80),
(10004,2001,85),
(10004,2002,76),
(10004,2003,66),
(10004,2004,54),
(10004,2005,80),
(10004,2006,73),
(10004,2007,80);
select * from student;
select * from course;
select * from teacher;
select * from mark;-- – 1、与张三同乡的男生姓名’
SELECT sname FROM student WHERE ssex='男' AND snativeplace=(SELECT snativeplace FROM student WHERE sname='张三') AND sname != '张三'-- – 2、选修了马六老师所讲课程的学生人数
SELECT  COUNT(*) FROM mark WHERE cid=(
SELECT cid FROM course WHERE tid=(
SELECT tid FROM teacher WHERE tname='马六'))
GROUP BY cid--
-- – 3、查询没学过"马"姓老师课的同学的学号、姓名
SELECT sid,sname FROM student WHERE sid NOT in(
SELECT  sid FROM mark WHERE cid in (
SELECT cid FROM course WHERE tid in (
SELECT tid FROM teacher WHERE tname LIKE '马%')))--
-- – 4、“数学”课程得最高分的学生姓名,性别
SELECT sname,ssex from student WHERE sid =(
SELECT sid FROM mark WHERE cmark=(
SELECT MAX(cmark) FROM mark WHERE cid=(
SELECT cid FROM course WHERE cname='数学')) AND cid=(
SELECT cid FROM course WHERE cname='数学'))-- – 5、统计每门课程的平均成绩,并按照成绩降序排序
--
-- – 6、子查询实现查询“2班”“张三”同学的“英语成绩”
SELECT cmark FROM mark WHERE sid=(
SELECT sid FROM student WHERE sname='张三' AND sclass='2班') AND cid=(
SELECT cid FROM course WHERE cname='英语')--
-- – 7、查询“福建”地区学生所选修的全部课程名称
SELECT cname FROM course WHERE cid in(
SELECT cid FROM mark WHERE sid in(
SELECT sid FROM student WHERE snativeplace='福建'))--
-- – 10、用子查询实现查询选修“高等数学”课的全部学生的高等数学总成绩
SELECT SUM(cmark) FROM mark WHERE cid =(
SELECT cid FROM course WHERE cname='数学') -- – 11、用子查询实现查询选修“高等数学”课的全部学生的所有课程总成绩
SELECT SUM(cmark) FROM mark WHERE sid in(
SELECT sid FROM mark WHERE cid=(
SELECT cid FROM course WHERE cname='数学'))--
-- – 12、请用两种方法实现:查找所有成绩都在68分以上的学生姓名
SELECT sname FROM student s,mark m WHERE s.sid=m.sid GROUP BY s.sid HAVING MIN(cmark)>=68
-- SELECT sname FROM student WHERE sid in(SELECT sid FROM mark GROUP BY sid HAVING MIN(cmark)>=68)
--
-- – 13、查找至少两门成绩在80分以上的学生姓名
SELECT sname FROM student WHERE sid in(
SELECT sid FROM (
SELECT COUNT(*) b,sid FROM mark WHERE cmark>80 or cmark=80 GROUP BY sid) a WHERE b>2 OR b=2)--
-- – 14、查询至少有一门课与张三同学所学相同的同学的学号和姓名
SELECT sname,sid FROM student WHERE sid not in(
SELECT sid FROM mark WHERE cid NOT in(
SELECT cid FROM mark WHERE sid=(
SELECT sid FROM student WHERE sname='张三')) )--
-- – 15、没有选修“数学”课的学生的姓名
SELECT sname FROM student WHERE sid NOT in(
SELECT sid FROM mark WHERE cid=(
SELECT cid FROM course WHERE cname='数学'))--
-- – 16、查询个人总成绩小于平均总成绩的学生姓名
SELECT sname FROM student WHERE sid in(
SELECT sid FROM (
SELECT sid,SUM(cmark) b FROM mark GROUP BY sid) a WHERE b>(
SELECT AVG(b) from (
SELECT sid,SUM(cmark) b FROM mark GROUP BY sid) a ))--
-- – 17、用子查询实现张三在其各科成绩中最高分成绩所对应的课程号和成绩
SELECT cid,cmark FROM mark WHERE cmark=(
SELECT MAX(cmark) FROM mark WHERE sid=(
SELECT sid FROM student WHERE sname='张三') ) AND sid=(
SELECT sid FROM student WHERE sname='张三')--
-- – 18、找出张三的最高分和最低分以及对应的课程名
SELECT cname,cmark FROM course c,mark m WHERE c.cid=m.cid AND sid=(SELECT sid FROM student WHERE sname='张三') AND m.cid in(
SELECT cid FROM mark WHERE (cmark=(
SELECT MAX(cmark) x FROM mark WHERE sid=(SELECT sid FROM student WHERE sname='张三')) OR cmark=(
SELECT MIN(cmark) x FROM mark WHERE sid=(SELECT sid FROM student WHERE sname='张三'))) AND sid=(
SELECT sid FROM student WHERE sname='张三'))-- 5
-- – 19、哪些学生的各科成绩均高于张三
SELECT sname FROM student WHERE sid NOT in(
SELECT DISTINCT sid FROM mark ,(
SELECT cmark c1,cid FROM mark WHERE sid=(
SELECT sid FROM student WHERE sname='张三')) a WHERE mark.cid=a.cid AND cmark<c1 ) AND sid != (SELECT sid FROM student WHERE sname='张三')

MySQL创建表 和 添加数据 查询数据相关推荐

  1. PyCharm 2018 for mac 数据库实战:链接SQLite、建表、添加、查询数据

    一.前言 最近开始入门python,当然是要使用PyCharm,然后在项目中遇到.db数据库文件,双击打不开?网上找到了windows版本的教程,版本也比较旧,所以有空就来一发,当备忘也好~ 二.链接 ...

  2. MySQL创建表和添加数据

    一.创建表 创建表 mysql> create table Student(Sno char(9) primary key,Sname char(20) not null,Ssex char(2 ...

  3. mysql创建表对经常要查询的列添加索引或者组合索引

    创建表的时候对经常要查询的列添加索引或者组合索引 索引直接影响后面的查询性能,尤其是数据量越大的时候,影响越明显.作为一个从事DBA生涯超过5年的DBA,遇到过无数次由于没有添加索引,导致的线上故障, ...

  4. Mysql 创建表及添加备注详解(create table)

    文章目录 1 概述 2 语法 2.1 创建 create table 2.2 修改 alter table 2.3 清空 truncate table 2.4 删除 drop table 3 扩展 3 ...

  5. mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句

    [数据库设计的三大范式] 1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元.也就是确保每一列的原子性. 例如: userInfo: ...

  6. mysql创建表时添加范式,MySql三大范式与数据库设计和表创建常用语句

    [导读]第一范式1NF First Normal Fromate:数据表中的每一列字段,必须是不可拆分的最小单元.也就是确保每一列的原子性. [数据库设计的三大范式] 1.第一范式(1NF First ...

  7. mysql 分表后利用视图查询数据

    1.通常我们会遇到这样的情况:使用年限进行分表,例如2020年一个表.2021年一个表 2.这种情况查询就可以借助视图工具的帮助,我们可以新建一个视图工具, 先利用一个表,运行sql语句创建好视图,点 ...

  8. mysql 使用select建表_mysql create创建表、insert into插入数据、select查询数据实例

    mysql创建表的sql代码如下: CREATE TABLE Employee( id int, first_name VARCHAR(15), last_name VARCHAR(15), star ...

  9. HBase shell 命令创建表及添加数据操作

    HBase shell 命令创建表及添加数据操作 创建表,表名hbase_test,HBase表是由Key-Value组成的,下面给出一个hbase表的格式,方便小伙伴们理解 此表有两个列族,列族1和 ...

最新文章

  1. Django模板继承
  2. html语言中%3c%%%3e中语言,[工学]C语言程序设计习题解答.doc
  3. KB-Modal Dialog Mini FAQ[收藏]
  4. 【Spring】Spring 报错 AbstractMethodError hikari MicrometerMetricsTrackerFactory create
  5. YOLO利用kmeans聚类算法计算anchors box(原理介绍及代码)
  6. RN学习(一)——创建第一个RN项目
  7. java中的字符串String的不可变性
  8. 数据库系统概念第四章习题答案
  9. 让AI燃料加速“燃烧”,IBM新一代软件定义存储来了
  10. element ui的upload上传视频内容
  11. 很有意思的几个考验知识广度的问题
  12. 少儿编程网站:scratch课程如何学习和教学?
  13. Python数据可视化之绘制带有最佳拟合线的散点图(图文并茂版!!!)
  14. 慈爱的教育部门被误解了 --- 真正减负令的实施方案探讨
  15. Kafka Group coordinator xxx:9092 (id: xxx rack: null) is unavailable or invalid
  16. PTA 07-图6 旅游规划
  17. 中国营销新闻网新闻发布
  18. gstreamer获取视频采集卡的数据
  19. 凸优化学习笔记(一)
  20. Eclipse无Tomcat 9.0(安装JST Server Adapters Extensions插件后仍不能添加Tomcat 9.0的一种解决办法)

热门文章

  1. 好消息,不用替换文件,凯立德能用了
  2. 10.Spring拦截器是什么及其使用
  3. Java可执行jar自解压jar内指定文件到指定目录
  4. AC/DC、DC/DC转换器
  5. 【首发·超详细】2020年中国各城市人口经济空间数据集(130种指标)shp数据【附下载】
  6. idea修改参数启动多个服务器,修改idea的这些启动参数,令你的idea健步如飞
  7. win 7计算机图标变了,Win7系统桌面图标显示异常统一变成白色的两种解决方法
  8. Python脚本一键给多个视频批量添加片头
  9. ios 分享功能 集成友盟分享
  10. PPT文字内容如何添加删除线