zoukankan      html  css  js  c++  java
  • mysql经典语句

    1 数据库基础:

    增删改查:insert  into  delete  update  select 

    聚合函数:sum count max min avg

    排序:order by asc desc

    子查询:select *from stuinfo where id =(where max(id) from stuinfo)

    表连接查询:内连接 inner join  左连接: left join  右连接:right join

    多表查询 select *from stuinfo cinfo where ........

    表操作:create alert drop 

    2.内连接和外连接的关键字是什么?有什么区别?

    内连接 inner join 外连接 left join right join

    内连接是把两张表相同的地方匹配出来,外连接是以左边或右边的表作为主表,把主表内容都显示,从表没有内容置为空处理。

    3.如何查询的时候只显示前5行数据?

    oracle:使用top select top 5*from 表名

    mysql 数据库 使用limit.  select *from 表名 limit 10

    训练题:

    实现下列数据库要求,除第5题以外,其他均用单条sql语句。
    1.创建学生表(学生id 整型 主键,姓名 可变长字符型40)
    2.创建课程表(课程id 整型 主键,课程名称 可变长字符型40)
    3.创建成绩表(
    学生id 整型 非空,
    课程id 整型 非空,
    成绩 数值型共4位其中小数1位,
    对学生表建立外键 )
    4.从成绩表对课程表建立外键,外键名自拟
    5.向学生表、课程表和成绩表各写入若干条数据,要求学生中有学号不同姓名相同的数据。
    6.取出唯一的姓名
    7.查询成绩<60的学生姓名、课程名称、成绩
    8.按课程名称统计各门课程的信息:课程名称、最高分、最低分、平均分并按课程名称的降序排序。
    9.统计至少有2门成绩>=90的学生信息:学生姓名,课程数量
    10.查询每门课的成绩都大于80分的学生的姓名
    11.给所有小于60分的成绩加5分。

    -- 1.创建学生表(学生id 整型 主键,姓名 可变长字符型40)

    create table stu(stuid int primary key ,stuname varchar(40));

    -- 2.创建课程表(课程id 整型 主键,课程名称 可变长字符型40)
    create table course(cid int primary key ,cname varchar(40));

    -- 3.创建成绩表(
    -- 学生id 整型 非空,
    -- 课程id 整型 非空,
    -- 成绩 数值型共4位其中小数1位,
    -- 对学生表建立外键
    -- )
    create table score(stuid INT NOT NULL, #学生id 整型 非空,
    cid INT NOT NULL,#课程id 整型 非空,
    grade decimal(4,1),#成绩 数值型共4位其中小数1位,
    constraint fc_s_c foreign key(stuid) references stu(stuid)#成绩表对学生表建立外键
    );

    -- 4.从成绩表对课程表建立外键,外键名自拟
    alter table score add constraint fk_c_s foreign key(cid) references course(cid);

    -- 5.向学生表、课程表和成绩表各写入若干条数据,要求学生中有学号不同姓名相同的数据。
    -- 学生表:
    insert into stu values(1,'王二'),(2,'王二'),(3,'张三'),(4,'张三'),(5,'李四');

    -- 课程表:
    insert into course values(1,'测试'),(2,'java'),(3,'sql');

    -- 成绩表:
    insert into score values(1,1,60),(1,2,45),(1,3,34),
    (2,1,87),(2,2,88),(2,3,89),
    (3,1,91),(3,9,92),(3,3,91),
    (4,1,92),(4,2,95),(4,3,55),(5,1,34),(5,2,56),(5,3,46);

    -- 6.取出唯一的姓名(分析:学生表中,distinct 过滤学生表中重复的姓名)

    select distinct(stuname) from stu;

    -- 7.查询成绩<60的学生姓名、课程名称、成绩
    select stuname,cname,grade
    from stu a,course b,score c
    where a.stuid =c.stuid AND b.cid =c.cid AND grade<60;

    --8.按课程名称统计各门课程的信息:课程名称、最高分、最低分、平均分并按课程名称的降序排序。
    select cname,max(grade),min(grade),avg(grade) #课程名称、最高分、最低分、平均分
    from course b,score c #来自的表格课程表,成绩表
    where b.cid=c.cid #课程名称建立连接
    group by b.cid #分组
    order by b.cname desc; #按课程名称的降序排序

    -- 9.统计至少有2门成绩>=90的学生信息:学生姓名,课程数量
    select distinct a.stuname 姓名,x 课程数量
    from stu a,(select a.stuid,count(cid) x from stu a,score b
    where a.stuid=b.stuid and b.grade>=90
    group by a.stuid
    having count(cid)>=2)b
    where a.stuid=b.stuid;

    -- 10.查询每门课的成绩都大于80分的学生的姓名
    select stuname
    from stu a,score b
    where a.stuid=b.stuid and grade >80
    group by stuname

    -- 11.给所有小于60分的成绩加5分。

     update score set grade=grade+5 where grade<60;

    回忆滋润坚持
  • 相关阅读:
    laravel5.2 开发中打印sql语句
    centos 安装 vsftpd
    linux 安装 DenyHosts 防止密码被暴力破解
    linux nginx 安装防火墙ngx_lua_waf
    mysql 下载资源地址
    微信公众号 access_token 没有过期 却失效
    centos 安装 composer
    五十个小技巧提高PHP执行效率
    yii 使用DB实现rbac 权限控制
    git 的使用
  • 原文地址:https://www.cnblogs.com/james5d/p/14094509.html
Copyright © 2011-2022 走看看