SQL必知必会(第4版)第一课 笔记——了解SQL

第一课 了解SQL

1.1.2

关键:存储在表中的数据是同一种类型的数据或清单。

数据库中的每个表都有一个名字来标识自己。这个名字是唯一的,即相同数据库中没有两个相同的表名(不同数据库可以有两个相同的表名)

模式:关于数据库和表的布局及特性的信息。这些特性定义了存储什么样的数据、数据如何分解、各部分信息如何命名等。

 

1.1.3 列和数据类型

表由组成。所有表都是由一个或多个列组成的。

正确地将数据分解为多个列极为重要。

数据库中每个列都有相应的数据类型。数据类型(datatype)定义了列可以存储哪些数据种类。

在创建表时必须特别关注所用的数据类型。

注意:数据类型及其名称是SQL不兼容的一个主要原因。

 

1.1.4

:表中的一个记录。表中的数据是按行存储的。

 

主键:表中每一行都应该有一列(或几列)可以唯一标识自己。唯一标识表中每行的这个列(或这几列)称为主键。(没有主键,更新或删除表中特定行就极为困难,因为你不能

保证操作只涉及相关的行)

提示:应该总是定义主键。为了以后方便管理。

表中的任何列都可以作为主键,只要它满足以下条件:

任意两行都不具有相同的主键值;

每一行都必须具有一个主键值(主键列不允许NULL值);

主键列中的值不允许修改或更新;

主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)

 

SQL(发音为字母S-Q-Lsequel)是结构化查询语言Structured Query Language)的缩写。SQL是一种专门用来与数据库沟通的语言。SQL的目的是很好地完成一项任务——提供一种从数据库中读写数据的简单有效的方法。


(引入sqlite3模块在python中使用《python程序设计教程》)

Python内建了SQLite数据库。

1. 创建数据库与连接数据库

 
 
  1. import sqlite3
  2. conn = sqlite3.connect('db.sqlite3') # 指定文件名称,存在直接打开,不存在就会创建一个并打开
  3. conn # 返回 connection 对象
  4. conn.close()
2. 创建数据表与新增数据

可以使用connection对象的cursor()方法获取cursor对象,利用它的execute()方法来执行创建数据表的SQL语句。例如:

 
 
conn = sqlite3.connect('db1.sqlite3')
conn
<sqlite3.Connection at 0x23069939ab0>
c.execute('''CREATE TABLE message(
    id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,name TEXT NOT NULL,
    email TEXT NOT NULL,msg TEXT NOT NULL
    )''')
<sqlite3.Cursor at 0x2306b27fdc0>
conn.commit()
conn.close()

在上面创建了一个message数据表,其中有id,name,emailmsg4个字段,id会自动以流水号方式递增字段值,sqlite3模块的实现默认下不会自动提交SQL执行后的变更,必须自行调用Connectioncommit()方法变更才会生效。

也可以使用with区块的操作,操作完成后会自动commit()close(),若发生例外,会自动rollback():

import sqlite3
with sqlite3.connect('db.sqlite3')as conn:
    c = conn.cursor()
    c.execute('''CREATE TABLE message(
    id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,name TEXT NOT NULL,
    email TEXT NOT NULL,msg TEXT NOT NULL
    )''')

若要新增数据,也是使用cursorexecte()方法:

with sqlite3.connect('db.sqlite3')as conn:
    c = conn.cursor()
    c.execute("INSERT INTO message VALUES(1,'justin','[email protected]','message...')")

3. 查询数据

先使用cursorexecte()执行查询,

再使用fetchone()可以获取结果集合中的一笔数据

使用fetchall()可以获取结果集合中的全部数据

使用fetchmany()指定要从结果集合中获取几笔数据


conn = sqlite3.connect('db1.sqlite3')
    c = conn.cursor()
    c.execute('SELECT*FROM message')
    <sqlite3.Cursor at 0x125fe60cdc0>
    c.fetchall()
    [(1, 'justin', '[email protected]', 'message...')]
    conn.close()









猜你喜欢

转载自blog.csdn.net/zjhysj/article/details/80468971