zoukankan      html  css  js  c++  java
  • Mysql中的子查询等操作

    1.delete和truncate 区别?
    1.1 delete慢 ,Truncate快

    1.20delete记录日志,所以慢 truncate不记录日志

    1.31 删除所有记录后,主键值delete 不是从1编号,Truncate会从1开始编号

    1.43 truncate不能删除有外键的主表

    1.5 delete 可以 加where ,删除部分记录

    2.两种引擎
    InnoDB:支持事务
    MyISAM:

    3.添加 insert into grade(字段名称) values(对应)
    修改 update 表名 set 列名=‘新值’ where 主键=xxxx
    删除 delete from 表名 where 主键=yyy

    4. 5种约束
    检查约束
    主键约束
    外键约束
    非空约束
    默认值约束
    唯一约束

    1.两种一次性向表中进N条记录的方案
    方案一:
    要求:目标表不存在
    create table 新表(select * from student)

    方案二:
    要求:目标表必须存在
    insert into 新表的名称 select * from 原始表
    2.简单查询 关于*会引起全表扫描问题

    3.查找姓名是“微冷的雨”的信息
    SELECT * FROM student
    WHERE studentName='微冷的雨'

    4.注意事项
    --01.SQL关键字不区分大小写

    --02.字符串和日期类型都需要[[[[[[单引号]]]]

    --03.起表名的时候,千万不要起得太好,例如不要使用User作为表名。
    -- 如果表名和关键字重复了,我们可以通过``取消转义。
    select * from `User`

    --04.千万注意新建查询窗口中的中文空格。
    select * from Message
    5.别名
    别名方案 AS
    6.常量列
    SELECT *,'汉族'AS 民族 FROM student
    7.关于null讲解
    必须懂

    8.聚合函数
    count:统计一张表中总共有多少条数据
    select SUM(StudentResult) as 总分 from Result
    select AVG(studentresult) as 平均分 from Result
    select MAX(studentresult) as 最高分 from Result
    select min(studentresult) as 最高分 from Result
    9。常用函数
    9.1字符串函数
    9.2日期时间函数
    9.3数学函数
    10.Order
    11.排序 limit

    代码

    ##检索所有邮箱为NULL的学生
    SELECT * FROM student WHERE email
    ##如果说有一条记录真实值 'xxx' 你如何锁定
    ###统计成绩表中有几条记录?
    SELECT SUM(studentresult) FROM result
    ##字符串函数
    SELECT UPPER('ABCd明天是周五 ,注意提交演讲稿')
    ###截取
    SELECT SUBSTRING('T14正在讲解MySQL,结束后有一个考试',8,5)
    ###字符串拼接
    SELECT CONCAT('str1','str2','str3')
    ###替换函数
    SELECT INSERT('这是MySQL数据库',3,5,'Oracle')
    ###在mYSQL获取默认的时间
    SELECT NOW()
    ####只获取系统的日期,不获取时间
    SELECT CURDATE()
    #####只获取系统时间
    SELECT CURTIME()
    ###获取当前日期是该年中的第几周?
    SELECT WEEK(NOW())
    ###查看强哥已经活了多少天
    SELECT DATEDIFF(NOW(),'1992-06-01')
    ###SQL标准 SQL 99
    SELECT ADDDATE(NOW(),-3)

    ####数学函数 ceil() 天花板 向上取整 floor() 向下取整 rand()随机数

    SELECT CEIL(2.0001)


    ####Order by 排序的依据字段
    SELECT * FROM student ORDER BY sex,borndate DESC

    ###分页 limit 参数一(该页数据从第几条开始,下标从0开始),参数2(页大小/每页显示记录数)
    SELECT * FROM student LIMIT 2,2
    ###练习
    ###1.查询2016年2月17日考试前5名的学员的学号和分数
    SELECT studentno,studentresult
    FROM result
    WHERE examdate>='2017-07-13' AND examdate<'2017-07-14'
    ORDER BY studentresult DESC LIMIT 5
    SELECT * FROM result
    ###2.将所有女学生按年龄从大到小排序,从第2条记录开始显示6名女学生的姓名、年龄、出生日期、手机号信息
    SELECT studentname,CEIL(DATEDIFF(NOW(),borndate)/365) AS 年龄,borndate,phone
    FROM student
    WHERE sex='男'
    ORDER BY 年龄 DESC
    LIMIT 1,6

    ###3.查询参加2016年2月17日考试的所有学员的最高分、最低分、平均分
    SELECT MAX(studentresult) AS 最高分,MIN(studentresult) AS 最低分,AVG(studentresult) AS 平均分
    FROM result
    WHERE examdate>='2017-7-13' AND examdate<'2017-7-14'

    SELECT * FROM result

    ###子查询 必须知道什么是子查询 select * from (子查询)
    ###年龄比彪哥小的学生信息
    SELECT * FROM student WHERE bornDate<(SELECT borndate FROM student WHERE studentname='彪哥')

    ##查询参加 最近一次 Logic Java 考试成绩的学生的最高分和最低分
    SELECT MAX(studentresult) AS 最高分,MIN(studentresult) AS 最低分
    FROM result
    WHERE examdate=(SELECT MAX(examdate) FROM result WHERE subjectid=(SELECT subjectid FROM SUBJECT WHERE subjectname='语文'))
    AND subjectid=(SELECT subjectid FROM SUBJECT WHERE subjectname='语文')

    ###查询 JavaLogic 考试成绩为 60分的学生姓名
    SELECT studentname FROM student
    WHERE studentno IN
    (
    SELECT studentno FROM result
    WHERE studentresult=77
    AND subjectid=
    (
    SELECT subjectid FROM SUBJECT
    WHERE subjectname='语文'
    )
    )
    SELECT * FROM result
    ####查询 最近一次 未参加 语文 考试的 学生名单(studentname)
    SELECT studentname FROM student
    WHERE studentno NOT IN
    (
    SELECT studentno FROM result
    WHERE subjectid=
    (
    SELECT subjectid FROM SUBJECT
    WHERE subjectname='语文'
    ) AND examdate=
    (
    SELECT MAX(examdate) FROM result
    WHERE subjectid=
    (
    SELECT subjectid FROM SUBJECT
    WHERE subjectname='语文'
    )
    )
    )
    AND gradeid=
    (
    SELECT gradeid FROM SUBJECT
    WHERE subjectname='语文'
    )


    ##检查“Logic Java”课程最近一次考试成绩
    ##如果有 80分以上的成绩,显示分数排在前5名的学员学号和分数
    SELECT studentno,studentresult FROM result
    WHERE EXISTS
    (
    SELECT * FROM result
    WHERE subjectid=
    (
    SELECT subjectid FROM SUBJECT
    WHERE subjectname='语文'
    )
    AND examdate=
    (
    SELECT MAX(examdate) FROM result
    WHERE subjectid=
    (
    SELECT subjectid FROM SUBJECT
    WHERE subjectname='语文'
    )
    )
    AND studentresult>80

    )
    AND subjectid=
    (
    SELECT subjectid FROM SUBJECT
    WHERE subjectname='语文'
    )
    AND examdate=
    (
    SELECT MAX(examdate) FROM result
    WHERE subjectid=
    (
    SELECT subjectid FROM SUBJECT
    WHERE subjectname='语文'
    )
    )
    AND studentresult>60
    ORDER BY studentresult DESC
    LIMIT 5

    SELECT * FROM student
    WHERE EXISTS
    (
    SELECT * FROM result WHERE studentresult>100
    )

  • 相关阅读:
    【WPF】自定义CheckBox复选框
    如何在WPF中引用Windows.System.Forms.Integration
    【转载】wpf DataGrid自动显示行号
    C#网络编程(订立协议和发送文件) Part.4
    C#网络编程(接收文件) Part.5
    状态模式
    C#网络编程(同步传输字符串) Part.2
    我的一个自己写的更新缓存的aop实例
    C#网络编程(基本概念和操作) Part.1
    mssql根据分类查询每个分类前100条数据 表名m_data,分类字段名m_type
  • 原文地址:https://www.cnblogs.com/alexanderthegreat/p/7162006.html
Copyright © 2011-2022 走看看