• PostgreSQL修炼之道笔记之准备篇(四)


    目录

    第三章 SQL语言入门(二)

    3.4 查询语句

    3.4.1 单表查询语句

    3.4.2 过滤条件的查询

    3.5 其他SQL语句

    3.5.1 INSERT INTO... SELECT语句 

    3.5.2 UNION语句

    3.5.3 TRUNCATE TABLE语句


    第三章 SQL语言入门(二)

    3.4 查询语句

    3.4.1 单表查询语句

    查询student表中所有数据的语句为:

    select no,student_name,age from student;

    其中“SELECT”是关键字,表示要查询,后面跟多个列名,各列之间使用逗号分隔。其后的“FROM”是关键字,后面跟表的名称。各个列可以是表的列名,也可以是一个表达式,如下:
    select age+5 from student;
    表达式中可以包括表的列,也可以只是一个与表列无关的表达式,如下:

    select no3+5 from student;

    当表达式与表的列无关时,在PostgreSQL和 MySQL中可以不使用“FROM表名”,这样一来,就可以当作计算器使用了:

    1. osdba=# select 55+88 ;
    2. ?column ?
    3. ----------
    4. 143
    5. (1 row)
    6. osdba-# select 10*2,3*5+2;
    7. ?column ? | ?column ?
    8. ----------+----------
    9. 20 | 17
    10. (1 row)


    如果想查询表中所有列的数据,则可以使用“*”代表所有列,如下:

    select * from student;

    3.4.2 过滤条件的查询

    SELECT语句后面可以通过指定WHERE子句来指定要查询哪条记录或哪些记录。比如,要查询学号为3的记录,其SQL语句为:

    1. osdba=# SELECT *FROM student where no=3;
    2. no | student_name | age
    3. -——-+--------------+-----
    4. 3 | 王明充 | 13
    5. ( 1 row)

    在WHERE条件中也可以使用大于、小于的表达式。比如,想查询年龄大于等于15岁的学生,其语句如下:

    1. osdba=# SELECT * FROM student where age >= 15;
    2. no | student_name | age
    3. ----+--------------+-―-
    4. 1 | 张三 | 15
    5. 2 | 李四 | 15
    6. ( 2 rows)

    3.5 其他SQL语句

    3.5.1 INSERT INTO... SELECT语句 


    使用INSERT INTO.…. SELECT语句可以把数据从一张表插入到另一张表中,这个语句属于DML语句。

    假设建了一张学生表的备份表:student_bak 

    1. CREATE TABLE student_bak(no int primary key,student_name varchar(40),age int,
    2. class_no int);


    可以使用下面的语句把数据备份到下面这张备份表中:

    INSERT INTO student_bak SELECT *FROM student ;

    3.5.2 UNION语句

    可以将从两张表查询出来的数据整合在一个结果集下,如:

    1. SELECT * FROM student WHERE no = 1 UNION SELECT * FROM student_bak
    2. where no = 2;

    这里的语法比较简单,把两个SQL用“UNION”关键字连接起来就可以了。
    结果如下:

    1. osdba=# SELECT * FROM student WHERE no = 1 UNION SELECT* FROM student_bak
    2. where no =2;
    3. no   | student_name  |  age  | class_no
    4. --―--+-―------------+---―-+----------
    5. 1    | 张三          | 14    | 1
    6. 2    | 吴二          | 15    | 1
    7. ( 2rows)

    注意,UNION可以把结果集中相同的两条记录合并成一条:

    1. osdba=#SELECT* FROM student WHERE no = 1 UNION SELECT* FROM student_bak
    2. where no = 1;
    3. no   | student_name  |  age  | class_no
    4. --―--+-―------------+---―-+----------
    5. 1    | 张三          | 14    | 1
    6. (1 row)

    如果不想合并,请使用UNION ALL,如下:

    1. osdba=# SELECT * FROM student WHERE no = 1 UNION ALL SELECT * FROM
    2. student_bak where no = 1;
    3. no   | student_name  |  age  | class_no
    4. --―--+-―------------+---―-+----------
    5. 1    | 张三          | 14    | 1
    6. 1    | 张三          | 14    | 1

    3.5.3 TRUNCATE TABLE语句

    TRUNCATE TABLE语句的用途是清空表内容。不带WHERE条件子句的DELETE语句也表示清空表的内容。从执行结果看,两者实现了相同的功能,但两者实现的原理是不一样的。
    TRUNCATE TABLE是DDL语句,即数据定义语句,相当于用重新定义一个新表的方法把原先表的内容直接丢弃了,所以TRUNCATE TABLE执行起来很快,而DELETE是DML语句,可以认为DELETE是把数据一条一条地删除,若要删除很多行数据,就会比较慢。
    如果想把表student_bak 中的数据清理掉,则可以使用如下命令:

    TRUNCATE TABLE student_bak;
  • 相关阅读:
    股票复盘思路
    域名讲解(二)域名注册、备案、交易、管理
    RPA学习天地:企业级RPA设计器核心功能要包括哪些?
    flutter 开发中的问题与技巧
    git使用
    Mysql 45讲学习笔记(十)force index
    Android 打开系统应用
    Golang 包
    Linux下安装zookeeper教程
    数据不平衡GPT调研
  • 原文地址:https://blog.csdn.net/Auspicious_air/article/details/126596705