这一篇教程,我们继续了解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)