1. 数据库简介
数据库指的是以一定方式存储在一起,能为多个用户共享,具有尽可能小的冗余度的特点,是与应用程序彼此独立的数据集合。
// 一定方式:可以理解为策略、算法
// 网盘相同的文件是以 MD5 码的形式标记相同的文件,以网络共享。
2. 和数据相关的术语
DBMS '数据库管理系统'
DBA '数据库管理员'
DB '数据库'
RDB '关系型数据库'
RDBMS '关系型数据库管理系统'
3. 数据分类
层次型数据库 - 有序二叉树,现在用的少
网络型数据库 - 网状结构,用的也少
关系型数据库 - '二维表格形式',现在普遍使用的。
4. 常见数据库
商业数据库:
- 甲骨文 Oracle , 市场占有率 50%
- IBM DB2 , 市场占有率 20%
- 微软 Sqlserver , 市场占有率 15%
非商业数据库:
- Sun Mysql ---> 被Oracle收购,甲骨文旗下产品
- 开源SQLite,轻量级嵌入式领域关系型数据库
5. 数据库的操作语言
'SQL' 结构化查询语言
是一种特殊目的的编程语言,实现数据库的查询和程序设计,常用于关系型数据库系统,实现数据增、删、改、查等操作。
三、SQLite 数据库的操作
1. 安装
在线安装 $: sudo apt-get install sqlite3
离线安装
$: sudo dpkg -i /home/tarena/Downloads/sqlite3/sqlite3_3.7.9-2ubuntu1.2_amd64.deb
2. 在终端输入 sqlite3 ,进入sqlite命令行操作界面
$: sqlite3
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
sqlite>
...
3. sqlite指令 instructions 指令
.help // 帮助手册,列出所有sqlite所有帮助信息
.quit // .e 或 .exit 退出
Ctrl + L // 实现清理屏幕
; // 英文分号代表sqlite语句命令结束,回到正常sqlite命令行
四、在命令行使用SQL语句操作sqlite数据库
1. 创建数据库文件(DB)
$: sqlite3 DatabaseName.db
创建成功后,会自动进入sqlite命令行的界面" sqlite> "
eg:
$: sqlite3 testDB.db // 打开名为testDB的数据文件,不存在则创建
2. 输入" .database " 查看数据库文件信息
seq // 序号
name // 数据库名
file // 数据库文件名
文件权限:- rw- r-- r--
3. 创建数据表 '语法'
CREATE TABLE table_name (
列名1 类型1 [约束],
列名2 类型2 [约束],
...);
【注】sql语句中不区分大小写,习惯把'关键字'(create table)写成大写
eg:
创建一个公司员工信息表company,
列包含:ID、姓名、年龄、地址、薪资
sqlite> CREATE TABLE company(
...> id INT PRIMARY KEY NOT NULL,
...> name TEXT NOT NULL,
...> age INT NOT NULL,
...> address TEXT,
...> salary REAL NOT NULL);
sqlite> .table ---> ' .table ' // 查看表的名字 .ta
company
sqlite> .schema ---> ' .schema ' // 查看创建表详细信息 .sc
CREATE TABLE company(
id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
age INT NOT NULL,
address TEXT,
salary REAL NOT NULL);
'[约束]':
PRIMARY KEY // 主键约束,数据唯一,并且可以加快数据访问
NOT NULL // 非空,限制插入数据不能为空
'类型关键字':
INT 整型
TEXT 文本字符串
REAL 浮点数
练习:
创建学生成绩的数据表
表名:Student
列名:ID(INT) NAME(TEXT) SCORE(REAL)
要求ID唯一,每一列的数据非空。
sqlite> create table Student(
...> ID INT PRIMARY KEY NOT NULL,
...> NAME TEXT NOT NULL,
...> SCORE REAL NOT NULL);
4. 删除数据库表 '语法'
DROP TABLE 表名;
eg:
DROP TABLE Student;
将Student表删除,里面的数据也会被删除,且数据恢复比较困难。
5. 插入数据 '语法'
INSERT INTO 表名
(列名1, 列名2, 列名3...)
VALUES(数据1, 数据2, 数据3...);
eg:向company表中插入数据
10086 "张飞" 30岁 "四川" 800.5
10011 "关羽" 31岁 801.5
INSERT INTO company
(id, name, age, address, salary)
VALUES(10086, "张飞", 30, "四川", 800.5);
INSERT INTO company
(id, name, age, salary)
VALUES(10011, "关羽", 31, 800.5);
6. 查询数据 '语法'
select * from company;
eg:
sqlite> select * from company ;
10011|关羽|31|成都|801.5
10011|关羽|31|成都|801.5
10086|张飞|30|四川|800.5
10000|曹操|35||999.9
10002|刘备|34|河南|855.5
10013|关兴|28|湖南|600.5
10015|刘禅|18|北京|300.0
10014|曹植|16|广东|1200.5
10008|赵云|26|上海|888.8
7. 删除数据 '语法'
DELETE FROM 表名 WHERE [条件] // 一般使用唯一属性进行匹配删除
eg:// 比如 id
DELETE FROM company WHERE id = 10000;
8. 修改数据 '语法'
UPDATE 表名 SET 列名1 = 数值1, 列名2 = 数值2... WHERE [条件];
// 一般使用唯一属性进行匹配修改单条信息
eg:
UPDATE company SET age= 26 WHERE id= 10014;
UPDATE company SET address= "上海" WHERE id < 10014;
// 算数:+ - * / % 比较:== = != <> > < >= <= !< !>
// 逻辑:AND BETWEEN EXISTS IN LIKE
// 逻辑:GLOB NOT OR IS UNIQUE
9. 查询数据 '语法'
// 所有列,可以用 * 替换
SELECT 列名1, 列名2, 列名3... FROM 表名;
SELECT 列名1, 列名2, 列名3... FROM 表名 WHERE [条件];
SELECT 列名1, 列名2, 列名3... FROM 表名 WHERE [条件]
ORDER BY 列名 ASC/DESC ; // ASC 升序,DESC 降序
eg:
SELECT id, name FROM company;
SELECT id, name FROM company WHERE id > 10014;
SELECT * FROM company WHERE salary < 1000;
SELECT id,name FROM company ORDER BY id ASC;
10. 扩充SQLite数据库操作,了解命令: LIKE / LIMIT / DISTINCT