zoukankan      html  css  js  c++  java
  • SQL语句汇总(二)——数据修改、数据查询

    SQL语句第二篇,不说废话直接开始吧。

    首先创建一张表如下,创建表的方法在上篇介绍过了,这里就不再赘述。

    添加新数据:

    INSERT INTO <表名> (<列名列表>) VALUES (<值列表>) 

    如:

    INSERT INTO t_student (student_id,student_name,student_age,student_sex) VALUES (1,'大毛',18,'男');

    其中列名可以省略,省略之后要求插入的值必须与列一一对应:

    INSERT INTO t_student VALUES (2,'王二',20,'男');

    多行数据添加:

    INSERT INTO t_student VALUES (3,'张三',22,'男'),
                     (4,'李四',17,'女'),
                     (5,'王五',23,'男');

    更改数据:

    UPDATE 表名 SET 列1=新值1,列2=新值2 WHERE 过滤条件

    假如要修改李四的年龄为21岁

    UPDATE t_student SET student_age=21 WHERE student_name='李四';

    注:修改多个列的值时用逗号隔开。要想设置某一列的值为空,只需让<列名>=NULL 即可。WHERE表示过滤条件。

    删除数据(行): 

    DELETE FROM 表名 WHERE 过滤条件

    现要删除20到22岁的学生信息:

    DELETE FROM t_student WHERE student_age BETWEEN 20 AND 22;

    WHERE的判断条件之后会更详细的介绍。

    删除除了DELETE还有一种方法TRUNCATE,写法:

    TRUNCATE TABLE 表名

    二者区别在于:

    DELETE会记录日志,意味着删除后的数据还可以恢复,但是效率低。TRUNCATE不会记录日志,删除后的数据不能恢复,但是效率高。需要注意的是,TRUNCATE不能用于有外键约束引用的表。

    查询操作

    分类:

    –投影操作
      指定查询结果中能显示哪些列
    –选择操作
      指定哪些行出现在结果中
    –排序操作
      指定查询的结果以什么样的顺序显示
     
    投影操作:
    SELECT 列1,列2 FROM 表名

    多个列中间用逗号隔开,如果选择所有列可以用*号简写。

    还是此表:

    现在只想要查看姓名和年龄列:

    SELECT student_name,student_age FROM t_student;

    注意这里不是把其他列删除了,而是只显示我们想看见的部分。

    SELECT CONCAT(student_name,'——',student_age) '组合值' FROM t_student;

    CONCAT,可以将列与列之间用想要的符号连接起来:

    排除重复——DISTINCT

    现给原表加入一班级列:

    按照之前方法查询班级列得到:

    但是我们只想查看具体有哪些班级,这里就需要用到去重,也就是DISTINCT。

    SELECT DISTINCT student_class FROM t_student;

    返回限定行数的查询——LIMIT

    LIMIT后面参数为1或2个:

    LIMIT N 表示从第一行开始返回N行结果,LIMIT i,N 表示从第i+1行开始返回N行结果。

    例:

    SELECT * FROM t_student LIMIT 3;

    SELECT * FROM t_student LIMIT 2,3;

    *注:LIMIT很重要,它是之后做数据表格分页的关键。

    选择操作——WHERE:

    分为单条件选择与多条件选择

    单条件选择标准结构:

    SELECT 列1, 列2 FROM 表名 WHERE 列3 = 值 

    关系运算符包括:>  >=  <  <=  =  !=

    多条件选择标准结构:

    SELECT 列A, 列B FROM 表 WHERE 条件1 (AND或者OR) 条件2

    其中AND表示并且,OR表示或者。

    选择范围——BETWEEN

    如:

    SELECT * FROM t_student WHERE student_age BETWEEN 20 AND 23;

    BETWEEN后的值为从下限到上限。

    定义集合——IN或NOT IN

    现在想查看年龄为17、20、23的学生信息: 

    SELECT * FROM t_student WHERE student_age IN (17,20,23);

    反之NOT IN就是选择不包括在集合里的学生信息。

    模糊查询——LIKE

    为了更好的解释模糊查询,这里重新建张表:

    这里姓王的兄弟们躺枪...别介意。

    首先先说下占位符与通配符:

    占位符 "_",表示任何单个字符。

    通配符 "%",表示包含零或多个字符。

    下面就来用模糊查询逐一选中我们想要的行。

    名字只有两个字的:

    SELECT * FROM t_student WHERE student_name LIKE '__';

    这里可能看不清,引号里实际是两个占位符。

    所有姓王的:

    SELECT * FROM t_student WHERE student_name LIKE '王%';

    最后一个字是“王”的:

    SELECT * FROM t_student WHERE student_name LIKE '%王';

    只要是名字中有“王”字的:

    SELECT * FROM t_student WHERE student_name LIKE '%王%';

    这下模糊查询就很明白了吧,当然还有其他组合,大家可以自己尝试。

    处理空值数据:

    判断条件不能用列名=NULL,而是要用IS NULL或IS NOT NULL。

    标准写法:

    SELECT * FROM t_student WHERE 性别 IS NULL

    排序操作——ORDER BY:

    使用ORDER BY时,列名上指定ASC或DESC。ASC表示正序,DESC表示倒序。如果不指定则默认为正序。

    按年龄排:

    SELECT * FROM t_student ORDER BY student_age ASC;

    SELECT * FROM t_student ORDER BY student_age DESC;

    最后一定要注意!

    基本查询SQL的执行顺序:

    1.执行FROM 2.WHERE条件过滤 3.SELECT投影 4.ORDER BY排序

  • 相关阅读:
    React项目升级遇到的问题复盘(2019-09-02)
    前端项目升级到React-router5中遇到的问题解决方案以及思路
    三行Jquery代码实现简单的选项卡
    开放-封闭原则
    单一职责原则
    简单工厂模式(c++实现)
    博客园使用MarkDown格式记录博客
    Qml 的Image对应的source不变,但是图片内容改变却不会刷新的解决方案
    Qt中第一请求web api连接返回缓慢问题
    Qt的pro文件工程配置
  • 原文地址:https://www.cnblogs.com/huhewei/p/6748402.html
Copyright © 2011-2022 走看看