最新消息:欢迎光临 魔力 • Python!大家可以点开导航菜单中的【学习目录】,这个目录类似图书目录,更加方便学习!

Python3萌新入门笔记(46)

Python教程 小楼一夜听春语 4462浏览 0评论

这一篇教程,我们继续了解SQLite数据库的一些内容。

如果想用好数据库,一些常用的语句是必须掌握的。

SQL语句以关键字开始,常用的关键字包括:

  • CREATE(创建)
  • DROP(丢弃)
  • ALTER(改变)
  • INSERT(插入)
  • SELECT(查询)
  • UPDATE(更新)
  • DELETE(删除)

通过关键字的释义,大家就基本上能看出关键字的用途。

接下来,我们结合之前创建的数据库student中的score表来了解这些关键字的使用。

一、CREATE

这个关键字,比较基本的用法的是通过这个关键字创建表。

CREATE TABLE 表名(
   列名1 数据类型 [约束],
   列名2 数据类型 [约束],
   列名3 数据类型 [约束],
   .....
)

二、DROP

这个关键字,比较基本的用法是通过这个关键字删除表。

DROP TABLE 表名;

三、ALTER

这个关键字,比较基本的用法是通过这个关键字更改表的名称和结构。

ALTER TABLE 表名 RENAME TO 新表名
ALTER TABLE 表名 ADD COLUMN 新列的定义

例如,我们将表score重命名为achievement,并添加英语成绩列EnglishScore。

示例代码:

import sqlite3

conn = sqlite3.connect('student.db')
cur = conn.cursor()
query1 = 'ALTER TABLE score RENAME TO achievement'
query2 = 'ALTER TABLE achievement ADD COLUMN EnglishScore REAL DEFAULT 0 ' \
         'CHECK(EnglishScore >= 0 AND EnglishScore <= 100)'
cur.execute(query1)
cur.execute(query2)
conn.commit()

四、INSERT

这个关键字,用于向数据表添加新的数据。

INSERT INTO 表名( 列名1, 列名2, 列名3,...) VALUES ( 列值1, 列值2, 列值3,...)  # 添加数据时,只设定部分列值。
INSERT INTO 表名 VALUES ( 列值1, 列值2, 列值3,...)  # 添加数据时,设定全部列值。

五、SELECT

这个关键字,用于查询数据表中的内容。

SELECT 列名1, 列名2, 列名3,... FROM 表名  # 查询数据表中所有数据行,每一行数据包含指定列的列值。
SELECT * FROM 表名  # 查询数据表中所有数据行,每一行数据包含所有列的列值。

在之前的示例代码中,我们为数据表achievement(重命名后的表名)添加了数据,但是一直不知道我们添加的数据以及所做的更改是否有效。

这里,我们通过SELECT关键字查询一下数据表achievement的所有内容,并把它们显示输出。

示例代码:(继上一段示例代码之后)

query3 = 'SELECT * FROM achievement'
cur.execute(query3)
result = cur.fetchall()  # 获取所有查询结果的对象
for row in result:
    print(row)

在上方代码中,我们定义了查询表achievement中所有数据的语句,并通过execute()方法执行了这个语句。

但是,只执行语句还是不能够看到查询结果。

我们还需要通过fetchall()方法获取所有查询结果,然后循环遍历这些查询结果,将它们显示输出。

除了fetchall()方法,还有一个fetchone()方法,能够每次获取查询结果中的一条数据。

例如,我们想显示输出查询结果中的前10条数据。

示例代码:

for row in range(10):
    print(cur.fetchone())

六、UPDATE

UPDATE 表名 SET 列名1 = 值1, 列名2 = 列值2, 列名3 = 列值3,...[WHRER 条件]

这个关键字,用于更新数据表记录中指定列的列值。

不过,在上方的语句中大家能够看到WHERE这个关键字,关键字后面跟随条件语句。

因为我们更新记录时,一般不会更新所有的记录,而是更新一条或多条符合条件的记录。

所以,需要给UPDATE语句加上WHERE子句。

例如,我们更新成绩表中姓名为“胡小丽”的语文成绩为“100”。

示例代码:

query4 = 'UPDATE achievement SET ChineseScore = 100 WHERE StuName = "胡小丽"'
query5 = 'SELECT * FROM achievement WHERE StuName = "胡小丽"'
cur.execute(query4)
conn.commit()
cur.execute(query5)
print(cur.fetchall()) #显示输出结果为:[(20712420004, '胡小丽', 100.0, 84.0)]

通过上方代码,大家能够看到在SELECT语句中也添加了WHERE子句,进行有条件查询。

七、DELETE

这个关键字,用于删除数据表中的数据行。

DELETE FROM 表名 [WHRER 条件]

例如,删除数据表中姓名为“胡小丽”的记录。

示例代码:

query6 = 'DELETE FROM achievement WHERE StuName = "胡小丽"'
cur.execute(query6)
conn.commit()

以上就是SQLite数据库的一些基本常用语句。

不过,在对数据库进行操作时,这些基本语句还远远不够,我们往往需要为基本语句添加子句,来满足更多的操作需求。例如大家所看到的WHERE子句。

关于子句,也有一些常用的关键字:

  • WHRER(哪里)
  • AND(并且)
  • OR(或者)
  • BETWEEN(在…之间)
  • COUNT(计数)
  • SUM(求和)
  • DISTINCT(去重)
  • IN(在…里面)
  • NOT IN(不在…里面)
  • LIKE(相似)
  • ORDER BY(排序)
  • GROUP BY(组合)

下面通过示例代码为大家演示这些关键字的使用,请大家阅读示例代码中的注释进行理解。

注意:示例代码仅通过查询(SELECT)操作演示,其它操作自行研究。

示例代码:

# AND:查询语文成绩并且数学成绩均满90分的学生记录
query7 = 'SELECT * FROM achievement WHERE ChineseScore >= 90 AND MathScore >= 90'
# OR:查询语文成绩或者数学成绩满90分的学生记录
query8 = 'SELECT * FROM achievement WHERE ChineseScore >= 90 OR MathScore >= 90'
# BETWEEN:查询总分数(语文+数学)在180~190之间的记录
query9 = 'SELECT * FROM achievement WHERE ChineseScore + MathScore BETWEEN 180 AND 190'
# COUNT:查询语文成绩满90分的学生数量
query10 = 'SELECT COUNT(ChineseScore) FROM achievement WHERE  ChineseScore >= 90'
# SUM:查询语文成绩满90分的语文成绩总和
query11 = 'SELECT SUM(ChineseScore) FROM achievement WHERE ChineseScore >= 90'
# DISTINCT:查询所有不同的语文分数
query12 = 'SELECT DISTINCT ChineseScore FROM achievement'
# IN:查询名字为“邓恒”、“郑宇”、“邓强”的名字与总分记录
query13 = 'SELECT StuName, ChineseScore + MathScore FROM achievement WHERE StuName IN ("邓恒","郑宇","邓强")'
# NOT IN:查询除“邓恒”、“郑宇”、“邓强”以外的名字与总分记录
query14 = 'SELECT StuName, ChineseScore + MathScore FROM achievement WHERE StuName NOT IN ("邓恒","郑宇","邓强")'
# LIKE:查询所有“刘”姓学生的记录(通配符“%”代表零个、一个或多个数字或字符,下划线“_”代表一个数字或字符。)
query15 = 'SELECT * FROM achievement WHERE StuName LIKE "刘%"'
# ORDER BY:查询并按总分降序DESC(升序为ASC)排列所有记录
query16 = 'SELECT * FROM achievement ORDER BY ChineseScore + MathScore DESC'
# GROUP BY:查询总分数满180分各组分数的记录数量和总分数
query17 = 'SELECT COUNT(*),ChineseScore + MathScore FROM achievement ' \
         'WHERE ChineseScore + MathScore >= 180  Group By ChineseScore + MathScore'

以上就是关于SQLite数据库SQL语句与关键字的入门介绍,更加深入的学习可以自行查阅相关的专业资料,本教程中不再过多详细讲解,毕竟数据库的相关知识就足够写一本书。

本节知识点:

1、SQLite常用SQL关键字;

2、SQLite常用SQL语句与子句。

本节英文单词与中文释义:

1、fetch:取得

2、achievement:成绩

3、关键字释义见正文

转载请注明:魔力Python » Python3萌新入门笔记(46)

头像
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网站 (可选)

网友最新评论 (3)

  1. 头像
    路过,冒个泡。wxPython用的人不多,小楼不讲PyQt吗?
    走路爱走神6年前 (2018-05-30)回复
    • 小楼一夜听春语
      一步一步的来
      小楼一夜听春语6年前 (2018-05-31)回复
  2. 头像
    我还是先看完你写的基础教程,再学Django好了。
    走路爱走神6年前 (2018-05-30)回复