zoukankan      html  css  js  c++  java
  • MySQL(3):SELECT语法

    一,数据库语句

    数据库数据是通过DML语句管理数据库数据,包括:

    • INSERT (添加数据语句)
    • UPDATE (更新数据语句)
    • DELETE (删除数据语句)

    1:INSERT (添加数据语句)

    INSERT INTO 表名[(字段1,字段2,字段3,...)] VALUES('值1','值2','值3')
    

    注意 :

    1,字段或值之间用英文逗号隔开;
    2'字段1,字段2...'该部分可省略 , 但添加的值务必与表结构,数据列,顺序相对应,且数量一致;
    3,可同时插入多条数据 , values 后用英文逗号隔开

    2:UPDATE (更新数据语句)

    UPDATE 表名 SET column_name=value [,column_name2=value2,...] [WHERE condition];
    

    #注意 :
    1,column_name 为要更改的数据列;
    2,value 为修改后的数据 , 可以为变量 , 具体指 , 表达式或者嵌套的SELECT结果;
    3,condition 为筛选条件 , 如不指定则修改该表的所有列数据

    3:DELETE (删除数据语句)

    DELETE FROM 表名 [WHERE condition];
    

    #注意 : condition为筛选条件 , 如不指定则删除该表的所有列数据

    二,DQL( Data Query Language 数据查询语言 )

    查询数据库数据 , 如SELECT语句,简单的单表查询或多表的复杂查询和嵌套查询,DQL是数据库语言中最核心,最重要的语句也是使用频率最高的语句

    1,指定查询字段

    # 查询所有学生信息
    SELECT * FROM student;
    

    # 查询指定列(学生的学号和姓名)
    SELECT studentno,studentname FROM student;

    2,DISTINCT关键字的使用

    作用 : 去掉SELECT查询返回的记录结果中重复的记录(返回所有列的值都相同),只返回一条

    # 查看哪些同学参加了考试(学号)--去除重复项
    SELECT * FROM result; 
    SELECT studentno FROM result; 
    SELECT DISTINCT studentno FROM result;
    

    #说明:一个学生有很5课成绩,但是只有他1个学号,如果不加DISTINCT,
    只执行SELECT studentno FROM result;,那么会根据他的5课成绩查出5个学号的,
    如果加了DISTINCT,去掉重复项,那么就只有一个学号了

    3,where条件语句

    用于检索数据表中符合条件的记录,搜索条件可由一个或多个逻辑表达式组成 , 结果一般为真或假

    # 查询考试成绩在95-100之间的学生学号
    SELECT Studentno,StudentResult 
    FROM result
    WHERE StudentResult>=95 AND StudentResult<=100;
    

    # AND也可以写成 &&
    SELECT Studentno,StudentResult
    FROM result
    WHERE StudentResult>=95 && StudentResult<=100;

    # 除了1000号同学,要其他同学的成绩
    SELECT studentno,studentresult
    FROM result
    WHERE studentno!=1000;

    # 使用NOT
    SELECT studentno,studentresult
    FROM result
    WHERE NOT studentno=1000;

    4,模糊查询

    #查询姓李的同学的学号及姓名
    #like结合使用的通配符 : % (代表0到任意个字符)  _ (一个字符)
    SELECT studentno,studentname FROM student
    WHERE studentname LIKE '李%';
    

    #查询姓李的同学,后面只有一个字的
    SELECT studentno,studentname FROM student
    WHERE studentname LIKE '李_';

    #查询姓李的同学,后面只有两个字的
    SELECT studentno,studentname FROM student
    WHERE studentname LIKE '李__';

    #查询姓名中含有 文 字的
    SELECT studentno,studentname FROM student
    WHERE studentname LIKE '%文%';

    #查询学号为1000,1001,1002的学生姓名
    SELECT studentno,studentname FROM student
    WHERE studentno IN (1000,1001,1002);

    #查询地址在北京,南京,河南洛阳的学生学号姓名
    SELECT studentno,studentname,address FROM student
    WHERE address IN ('北京','南京','河南洛阳');

    #查询出生日期没有填写的同学
    #不能直接写=NULL , 这是代表错误的 , 用 is null
    SELECT studentname FROM student
    WHERE BornDate IS NULL;

    #查询出生日期填写的同学
    SELECT studentname FROM student
    WHERE BornDate IS NOT NULL;

    #查询没有写家庭住址的同学(空字符串不等于null)
    SELECT studentname FROM student
    WHERE Address='' OR Address IS NULL;

    5,连接查询

    连接查询: 如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询
    1,内连接 inner join:查询两个表中的结果集中的交集
    2,外连接 outer join:
    2-1,左外连接 left join:以左表作为基准,右边表来一一匹配,匹配不上的,返回左表的记录,右表以NULL填充
    2-2,右外连接 right join:以右表作为基准,左边表来一一匹配,匹配不上的,返回右表的记录,左表以NULL填充

    #查询参加了考试的同学信息(学号,学生姓名,科目编号,分数)
    SELECT * FROM student;
    SELECT * FROM result;
    

    #查询student表的学生学号=result表的学生学号时的同学信息(学号,学生姓名,科目编号,分数)
    #内连接
    SELECT s.studentno,studentname,subjectno,StudentResult
    FROM student s
    INNER JOIN result r
    ON r.studentno = s.studentno

    # 右连接(也可实现)
    SELECT s.studentno,studentname,subjectno,StudentResult
    FROM student s
    RIGHT JOIN result r
    ON r.studentno = s.studentno

    # 等值连接
    SELECT s.studentno,studentname,subjectno,StudentResult
    FROM student s , result r
    WHERE r.studentno = s.studentno

    # 左连接 (查询了所有同学,不考试的也会查出来)
    SELECT s.studentno,studentname,subjectno,StudentResult
    FROM student s
    LEFT JOIN result r
    ON r.studentno = s.studentno

    #查一下缺考的同学(左连接应用场景)
    SELECT s.studentno,studentname,subjectno,StudentResult
    FROM student s
    LEFT JOIN result r
    ON r.studentno = s.studentno
    WHERE StudentResult IS NULL

    6,排序和分页

    ORDER BY 语句用于根据指定的列对结果集进行排序,默认按照ASC升序对记录进行排序。

    # 查询C语言-1的考试结果(学号 学生姓名 科目名称 成绩)
    # 按成绩降序排序
    SELECT s.studentno,studentname,subjectname,StudentResult
    FROM student s
    INNER JOIN result r
    ON r.studentno = s.studentno
    INNER JOIN `subject` sub
    ON r.subjectno = sub.subjectno
    WHERE subjectname='C语言-1'
    ORDER BY StudentResult DESC , studentno  
    

    # 每页显示5条数据
    SELECT s.studentno,studentname,subjectname,StudentResult
    FROM student s
    INNER JOIN result r
    ON r.studentno = s.studentno
    INNER JOIN subject sub
    ON r.subjectno = sub.subjectno
    WHERE subjectname='C语言-1'
    ORDER BY StudentResult DESC , studentno
    LIMIT 0,5

  • 相关阅读:
    SQL Server Audit监控触发器状态
    SQL Server 数据变更时间戳(timestamp)在复制中的运用
    SQL Server 更改跟踪(Chang Tracking)监控表数据
    SQL Server 变更数据捕获(CDC)监控表数据
    SQL Server 事件通知(Event notifications)
    SQL Server 堆表行存储大小(Record Size)
    SQL Server DDL触发器运用
    SQL Server 默认跟踪(Default Trace)
    SQL Server 创建数据库邮件
    SQL Server 跨网段(跨机房)FTP复制
  • 原文地址:https://www.cnblogs.com/edda/p/13328451.html
Copyright © 2011-2022 走看看