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 FROMWHERE 条件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排序

    SQL的第二篇就到这里了,博主写的快吐了!感觉学的时候没这么多啊,希望各位认同的朋友顶一下,也好让我有动力写完。

  • 相关阅读:
    A1052. Linked List Sorting (25)
    A1032. Sharing (25)
    A1022. Digital Library (30)
    A1071. Speech Patterns (25)
    A1054. The Dominant Color (20)
    A1060. Are They Equal (25)
    A1063. Set Similarity (25)
    电子码表
    矩阵键盘
    对象追踪、临时对象追踪、绝对坐标与相对坐标
  • 原文地址:https://www.cnblogs.com/ghost-xyx/p/3798362.html
Copyright © 2011-2022 走看看