目录

第三章 SQL语言入门(一)

3.1 SQL语句语法简介

3.1.1语句的分类

3.1.2 语法结构

3.2 DDL语句

3.2.2 删除表语句

3.3 DML语句

3.3.1 插入语句

3.3.2 更新语句

3.3.3 删除语句


第三章 SQL语言入门(一)

3.1 SQL语句语法简介

3.1.1语句的分类

SQL命令一般分为DQL、DML、DDL几类。
DQL:数据查询语句,基本就是SELECT查询命令,用于数据查询。
DML : Data Manipulation Language的简称,即数据操纵语言,主要用于插人、更新、删除数据,所以也分为INSERT、UPDATE、DELETE三种语句。
DDL : Data Definition Language 的缩写,即数据定义语言,主要用于创建、删除,以
及修改表、索引等数据库对象语言。

3.1.2 语法结构

每次执行的SQL可以由多条SQL命令组成。多条SQL命令之间由分号(“;”)分隔。每个SQL命令由一系列的记号组成,这些记号可以由关键字、标识符、双引号包围的标识符、常量、单引号包围的文本常量和特殊的字符等组成。在SQL命令里可以有注释,这些注释在PostgreSQL中等效于空白。
SQL命令并未严格地像计算机语言一样明确标识哪些是命令、哪些是操作数或参数。SQL的语法主要是让你比较直观地理解其意思。比如,查询一个表的数据,就是由“SELECT”+“要查询的各列”+“FROM表”这样的语法组成的。后面的几节会详细叙述sQL的用法。

3.2 DDL语句

3.2.1 建表语句

表是关系型数据库中最基本的对象,数据库中的表与实际生活中的二维表格很相似,有很多列也有很多行,每一列有一个名称,不同的列有不同的数据类型,比如,列可能是数字、文本字符串,也可能是日期类型。建表语句的一个简单语法如下:

CREATETABLE table_name (
co101_namme data_type,
co102_namme data_type,
co103_namme data_type,
co104_namme data_type,};

其中“CREATE”、“TABLE”为关键字,是不变的,从字面上也很好理解,表示创建表。"table_name”表示表名,“col01_name”、 “" col02_name”、" col03_name "、 " col04_name”分别表示列名。" data_type”表示数据类型,不同的数据库系统有不同的数据类型名称,即使是相同意思的整数类型,在不同的数据库系统中也有不同的类型名称。变长的字符串在大多数数据库中都可使用“varchar”类型,比如PostgreSQL、MySQL 和 Oracle数据库等。整形数据在PostgreSQL和 MySQL都可以使用“int”类型。日期类型的名称一般为“date”。例如,要创建一张分数表score,包括“学生名称( student_name)”、“语文成绩( chinese_score)”、“数学成绩(math_score)”、“考试日期(test_date)”四列,则创建这个表的SQL 如下:

CREATETABLE score (
student_name varchar (40 ),
chinese_score int,
math_score int,test_date date);

如果按前面的安装步骤安装完了数据库,之后就可以使用psql工具连接到PostgreSQL数据库了,执行上面的建表语句,如下:

osdba=# CREATE TABLE score (
osdba(# student_name varchar (40),
osdba(# chinese_score int,
osdba(# math_score int,
osdba(# test_date dateosdba(# );
CREATE TABLE
osdba=#

在psql中,可使用ld显示数据库中有哪些表,如下:

osdba=# ld
List of relations
Schema | Name  |Type   | owner
--------+-----―-+------―+-------
public | score | table | osdba( 1 row)

这样就看到了我们建的表。
使用“ld score”可以显示这张表的定义情况:

osdba=# ld score
Table "public.score"
Column         |   Type                   | Modifiers
student__name  | character varying (40)   |
chinese_score  | integer                  |
math_score     | integer                  |
test_date      | date                     |

注意:显示列的类型“character varying(40)”实际上与“varchar(40)”的意思是完全一样的“int”与“integer”的意思也是一样的。

3.2.2 删除表语句

删除表的语法比较简单,如下:

DROP TABLE table_name;

其中“table_name”表示要删除的表名。假设要删除前面创建的表student,则可以使用下面的SQL:

DROP TABLE student;

3.3 DML语句

3.3.1 插入语句

可以使用下面的语句往前面创建的学生表(student)中插入数据:

INSERT INTO student VALUES(1,'张三',14) ;

由此可以看出,INSERT语句的语法为:以“INSERT INTO”关键字为首,后面跟表名,然后再跟“VALUES”关键字,最后是由小括号包围起来的以逗号分隔的各列数据,数据的顺序与表定义时表列的顺序是一样的。当然也可以在表名后指定要插入数据列的顺序,如下所示:

INSERT INTO student(no,age,student_name)VALUES(2,13,'李四');

在插人数据时,也可以指定某些列不插人数据,这时这些列的数据会被置为空,如下:

INSERT INTO student (no,student_name) VALUES(2,'王二');

如果在psql中执行了下面的语句,使用SELECT语句就可以查询出数据,查询的语句为:

SELECT * FROM student;

SELECT语句的具体用法会在后面的章节中介绍,现在只需要知道这么用就可以了。我们查看到的数据如下:

osdba=# select * from student;
no  | student_name | age
-———+-—------------+----
|   | 张三          | 14
2   | 李四          | 13
3   | 王二          |
( 3 rows)

从上面可以看出,在插入数据时,没有提供的列数据会被置为NULL。

3.3.2 更新语句

假设要把student表中所有学生的年龄(age)更新为“15”,则更新语句如下:

UPDATE student SET age = 15;

从上面的语句可以看出,更新语句以“UPDATE”关键字开始,后面跟表名,然后是“SET”关键字,表示要设置的数据,再后面就是要设置的数据的表达式“age = 15”,设置数据的表达式也很简单,就是“列名=数据”的格式。
实际执行的效果如下:

osdba=# UPDATE student SET age = 15;
UPDATE 3
osdba=# select * from student;
no   | student _name | age
-—―一+-—------------+-----
1    | 张三           | 15
2    | 李四           | 15
3    | 王二           | 15
(3 rows)

在更新数据时,还可以指定过滤表达式“WHERE”,从而指定更新哪条数据或哪些数据,比如,要更新学号(no)为3的学生年龄为14岁,则使用下面的语句:

UPDATE student SET age =14 WHERE no = 3;

在SET子句中,还可以同时更新多个列的值,如下所示:

UPDATE student SET age =13,student_name='王明充’ WHERE no = 3;

3.3.3 删除语句

如果想删除学号(no)为3的记录,语句如下:

DELETE FROM student WHERE no = 3;

由此可见删除语句比较简单,以“DELETE FROM”开始,后面跟表名,然后加“WHERE"子句用于指定要删除的记录。
当然也可以没有“WHERE”子句,这表明要删除整个表的数据,删除表student 中所有数据的语句如下:

DELETE FROM student;

PostgreSQL修炼之道之SQL语言入门(三)相关推荐

  1. PostgreSQL修炼之道之SQL语言入门(四)

    目录 第三章 SQL语言入门(二) 3.4 查询语句 3.4.1 单表查询语句 3.4.2 过滤条件的查询 3.5 其他SQL语句 3.5.1 INSERT INTO... SELECT语句 3.5. ...

  2. PostgreSQL修炼之道:从小工到专家

    数据库技术丛书 PostgreSQL修炼之道:从小工到专家 唐成著 图书在版编目(CIP)数据 PostgreSQL修炼之道:从小工到专家/唐成著. -北京:机械工业出版社,2015.4 (数据库技术 ...

  3. PostgreSQL修炼之道:从小工到专家. 导读

      数据库技术丛书 PostgreSQL修炼之道:从小工到专家 为什么要写这本书 PostgreSQL数据库是目前功能最强大的开源数据库,它基本包含了其他所有商业或开源的数据库中能找到的功能,甚至还包 ...

  4. postgresql修炼之道_PostgreSQL内核开发学习资料

    我自2011年便开始进行PostgreSQL内核开发岗,在公司内也算是时间比较久了,带了一些新人入门,总结了一些不同阶段需要学习的资料. 我将PostgreSQL内核知识划分为3层: 数据库基础对象, ...

  5. postgresql修炼之道_PostgreSQL的TOAST技术

    本文参考: PostgreSQL TOAST 技术理解 <PostgreSQL修炼之道> 一.TOAST是什么? TOAST是"The Oversized-Attribute S ...

  6. 荐书送书丨《PostgreSQL实战》、《PostgreSQL修炼之道:从小工到专家(第2版)》...

    墨墨导读:最近,相信大家都注意到数据库行业大事记,PostgreSQL在2020年的DB-Engines 排名中获得了比其他360个受监控数据库系统更多的受欢迎程度,获得"2020年度数据库 ...

  7. 视频教程-Python编程的术与道:Python语言入门-Python

    Python编程的术与道:Python语言入门 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多项 白勇 ¥ ...

  8. Oracle PL/SQL语言入门

    一.背景介绍 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方 ...

  9. PostgreSQL修炼之道之psql工具的使用介绍(五)

    目录 第四章 psql工具的使用介绍(一) 4.1 psql介绍 4.2 pslq的简单使用 4.3 psql的常用命令 4.3.1 \d命令 4.3.2 指定字符集编译的命令 4.3.3 pset命 ...

最新文章

  1. 7-2一元多项式的乘法与加法运算
  2. 【编程通识】正则表达式
  3. at java.net.urlclassloader.findclass_如何使用URLClassLoader加载* .class文件?
  4. print函数python_带有结束参数的Python print()函数
  5. 精品教程--Android组件详解
  6. Mysql 5.5 编译参数
  7. 读者投稿 | 写Go满一年啦,来聊聊进程、线程与协程
  8. python filter
  9. Visio画图删去四周白边
  10. echarts 生成 迁徙图_利用百度Echarts开发人口迁徙图(产品流向图)
  11. access 2016 迁移到 mysql_将ACCESS数据库迁移到SQLSERVER数据库两种方法(图文详解)
  12. python清空文本框内容_js清空文本框
  13. tf SavedModel 保存模型的新方式
  14. 预测科技未来发展趋势的10个定律
  15. 【EMNLP2020】忒修斯之船启发下的知识蒸馏新思路 - 微软研究院
  16. xtrareport 修改行颜色
  17. docker安全配置(cpu、分区的大小设定和权限设定)
  18. Flask教程(二十)flask-apscheduler
  19. 微信小程序流量主广告怎么加圆角
  20. gif制作软件哪个好用?建议收藏这些软件

热门文章

  1. Gvim使用心得--设置篇
  2. 制作SpringBoot启动图案
  3. UVA - 11624  Fire! 两次BFS
  4. Illustrator 教程:如何在 Illustrator 中添加图像?
  5. 最强元宇宙项目MetaMobile即将在OpenSea推出纪念版NFT
  6. 花了几天时间了解了下Xamarin
  7. 好书推荐--Windows 7实用宝典
  8. python底层网络交互模块_Python 利用三个简易模块熟悉前后端交互流程
  9. 2-12 2-13
  10. FLASH网络游戏基本知识-flash和后台的简单socket链接2009-10-08 11:43FLASH网络游戏主要解决的是和服务器的数据传输问题