数据库9.12

1、创建表

create table 表名(id int(4), name char(10) );

insert into 表名(id,name) values(值1,值2...),(),();

查询:

select * from 表名 where语句;

student;

+-----+--------+-----+-----------+------------+--------------+

| Id  | Name  | Sex | BirthYEAR | Department | Address      |

+-----+--------+-----+-----------+------------+--------------+

| 901 | 张老大 | 男  | 1985      | 计算机系  | 北京市海淀区 |

| 902 | 张老二 | 男  | 1986      | 中文系    | 北京市昌平区 |

| 903 | 张三  | 女  | 1990      | 中文系    | 湖南省永州市 |

| 904 | 李四  | 男  | 1990      | 英语系    | 辽宁省阜新市 |

| 905 | 王五  | 女  | 1991      | 英语系    | 福建省厦门市 |

| 906 | 王六  | 男  | 1988      | 计算机系  | 湖南省衡阳市 |

+-----+--------+-----+-----------+------------+--------------+

score;

+----+--------+--------+-------+

| Id | Stu_id | C_name | Grade |

+----+--------+--------+-------+

|  1 |    901 | 计算机 |    98 |

|  2 |    901 | 英语  |    80 |

|  3 |    902 | 计算机 |    65 |

|  4 |    902 | 中文  |    88 |

|  5 |    903 | 中文  |    95 |

|  6 |    904 | 计算机 |    70 |

|  7 |    904 | 英语  |    92 |

|  8 |    905 | 英语  |    94 |

|  9 |    906 | 计算机 |    90 |

| 10 |    906 | 英语  |    85 |

+----+--------+--------+-------+

1、查询student表的所有记录

select * from student;

2、查询student表的第2条到4条记录

limit a,b  a当前行  b 显示的行数  从当前行下一行开始显示

limit 1,3

select * from student limit 1,3;

练习:查询成绩表前三行数据

select * from score limit 0,3;

3、从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息

select id,name,department from student;

4、从student表中查询计算机系和英语系的学生的信息

select * from student where department='计算机系' or department='英语系';

5、从student表中查询年龄18~22岁的学生信息

select * from student where 2017-BirthYEAR between 18 and 22;

select * from student where 2017-BirthYEAR>=18 and 2017-BirthYEAR<=22;

count() sum()  max()  min avg  distinct()

mod 求余

select grade,(grade mod 3) from score;

select grade,(grade mod 3) from score where (grade mod 3) =0;

select..from ..(where)..group by ..having ..order by ..limit;

group by  分组  having 分组后进行的条件选择

order by ..asc

order by  列名 desc

对成绩表中各科成绩从高到低排序,如果成绩相同,则按照学号由小到大排序

select stu_id,grade,c_name from score order by c_name desc,grade desc,stu_id asc;

+--------+-------+--------+

| stu_id | grade | c_name |

+--------+-------+--------+

|    901 |    98 | 计算机 |

|    906 |    90 | 计算机 |

|    904 |    70 | 计算机 |

|    902 |    65 | 计算机 |

|    905 |    94 | 英语  |

|    904 |    92 | 英语  |

|    906 |    85 | 英语  |

|    901 |    80 | 英语  |

|    903 |    95 | 中文  |

|    901 |    88 | 中文  |

|    902 |    88 | 中文  |

+--------+-------+--------+

between  and

limit

6、从student表中查询每个院系有多少人

select count(*),Department from student group by Department;

7、从score表中查询每个科目的最高分

max(grade)

select max(grade),c_name from score group by c_name;

8、计算每个学生的总成绩

select sum(grade),stu_id from score group by stu_id;

总成绩大于150分的学生

select sum(grade),stu_id from score group by stu_id having sum(grade)>150;

哪一性别的学生人数是大于2人的?

select sex,count(*) from student group by sex having count(*)>2;

9、计算每个考试科目的平均成绩

select avg(grade),c_name from score group by c_name;

10、将计算机考试成绩按从高到低进行排序

select grade,c_name from score where c_name="计算机"  order by grade desc;

11、查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

like

%全匹配

_ 单个字符匹配

name like “%18K%”

select goods_name from ecs_goods where goods_name like '____18K_____';

1、多表连接一般步骤

① 找涉及了哪些表

② 找表与表的对应关系

③ 建立连接关系

④ 写完整的SQL

注意点:

1、别名用法

2、一旦用了别名,select where 都要用别名了

3、如果查询的内容在多个表中都有相同的字段,那么必须指明是来自哪个表

多表查询:

1、男同学的考试科目

select c_name,sex from score,student where student.id=score.stu_id and sex="男";

select distinct c_name from score where stu_id in (select id from student where sex='男');

2、姓张同学的考试科目

select c_name from score,student where student.id=score.stu_id and name like "%张%";

3、同时学习英语和计算机的学生信息

select s1.* from student s1,score s2,score s3 where s1.id=s2.stu_id and s1.id=s3.stu_id and s2.c_name='计算机' and s3.c_name='英语';

练习:

1、女同学的考试科目

select distinct c_name from score,student where student.id=score.stu_id and sex='女';

2、同时学习中文和计算机的学生信息;

select s1.* from student s1,score s2,score s3 where s1.id=s2.stu_id and s1.id=s3.stu_id and s2.c_name='计算机' and s3.c_name='中文’;

3、姓王的同学并且有一科以上成绩大于80分的学生信息;

select distinct student.id,name,sex,birthyear,department,address from student,score where student.id=score.stu_id and name like '%王%' and grade>80;

1、查询李四的考试科目(c_name)和考试成绩(grade)

2、查询计算机成绩低于95的学生信息

3、查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358

推荐阅读更多精彩内容