数据库(DataBase 简称DB)
简单来说 数据库可以看作电子化的文件柜。是用来存储电子文件的地方。
用户可以对文件中的数据进行增删改查等操作。
更直白一点 他就是一个存放数据(电子化表格 类似于excel)的仓库
严格意义上来说 并不是学习数据库,而是学习数据库管理系统。
数据库管理系统(DBMS:DataBase Management System )是为数据库而设计的计算机软件系统 可以通过软件去操作数据库(存储 截取 备份 安全保证…)
关系型数据库(Relational DataBase)
关系型数据库是创建在关系模型(可以理解为二维表格的形式)基础上的数据库
是以行和列的形式去存储数据 为了便于用户理解 关系型数据库中的这些行和列被称之为表
那么一组表就组成了一个数据库
列:具有相同数据线的数据的集合(属性/字段)
行:一条完整的数据记录(一个完整的对象的描述)
常用的关系型数据库:
ORACLE 甲骨文
Mysql
sqlite3 轻量级的开源关系型数据库
SQL Server/DB2
人大金仓 国产
Ocean Base 阿里巴巴
非关系型 NoSQL指 “Not Only SQL”
MongoDB
Redis
...
关系型数据库的语法基本一样
1.创建一个数据库
在终端命令行输入sqlite 数据库名 : 打开或者创建一个数据库
如:sqlite3 test.db
进入sqlite3的命令行 可以在命令行通过SQL语句去操作数据库
注意:在sqlite3命令行下 SQL语句都是以分号结束的
SQL语句支持大小写 在实际使用中建立大写 因为所有的语句在执行的时候 都是先转换为大写的模型
2.新建表格
CREATE TABLE 用于新建一个表格
语法:
CREATE TABLE 表名
(
字段名1 数据类型 “约束” ,
字段名2 数据类型 “约束” ,
字段名3 数据类型 “约束” ,
...
);
表名: 数据库中关系表的名字
字段名: 关系表中的列名
数据类型: 用来说明字段中的数据的类型
int(size) 此字段必须为整数 size规定数字最大的位数
或者integer(size)或者smallint(size)都可以
float double real类似
char(size) 固定长度的字符串 size就是固定的长度
varchar(size) 可变长度的字符串 size指定字符串的最大长度
date 日期
null 空类型
blob 二进制类型
...
约束:
NOT NULL 不为空约束 即存储数据时该列不可为空
UNIQUE 唯一(不能重复) 存储数据的时候 这一列不允许出现相同的数据
PRIMARY KEY : 主键 主键必须是NOT NULL和UNIQUE
主键可以是组合键。
FOREIGN KEY : 外键 这一列在其他表中是主键 但是在自己表中不是主键
CHECK : 限制列中的值的范围
CHECK SCORE >= 0 AND SCORE <= 100
-
删除和修改表格
DROP TABLE 删除一个表格 语法: DROP TABLE 表名 例子: DROP TABLE CLASS1 修改表格的结构: a.修改表名 ALTER TABLE 表名 RENAME TO 新表名 例子:ALTER TABLE CLASS2 RENAME TO CLASS1 b.增加字段 ALTER TABLE 表名 ADD 字段名 字段类型 约束 如:ALTER TABLE CLASS1 ADD TEL INT;
4.插入用户数据
INSERT INTO 用于向表格中插入新的行
语法1:INSERT INTO 表名 VALUES(值1,值2, 值3...);
例子: INSERT INTO CLASS1 VALUES(1,"ZHANGSAN",99.9,10086);
语法2:INSERT INTO 表名(字段1,字段2,..) VALUES(值1,值2...)
例子: INSERT INTO CLASS1 (NUM,NAME,SCORE)VALUES(2,"LISI",88.1);
5.在执行的表中(可以是多个)查询数据
SELECT
语法: SELECT 列名1,列名2... FROM 表名 WHERE 列 运算符 值;
SELECT * FROM 表名;//查询表中所有的列的信息
排序:
SELECT * FROM 表名 ORDER BY 字段 ASC/DESC
ASC : 升序 DESC : 降序
查看模糊值(like)
例子:我要查询一个叫姓zhang的学生的信息
SELECT * FROM CLASS1 WHERE NAME LIKE 'ZHANG%';
排序+条件
我要把学号大于2的学生的信息 按照分数降序的方式 把前2项记录输出
SELECT * FROM CLASS1 WHRER NUM > 2 ORDER BY SCORE DESC LIMIT 2;
多表联查:
SELECT 表名.字段名1,表名.字段名2...form 表名1,表名2... WHERE 列 运算符 值;
其他查询方式:
SELECT MAX(列名) FROM 表名; //查询表中列的最大值
SELECT MIN(列名) FROM 表名; //查询表中列的最小值
SELECT AVG(列名) FROM 表名; //平均值
SELECT SUM(列名) FROM 表名; //总和
SELECT COUNT() FORM 表名; //表中的数据的行数(有多少条记录)
NOTE:
设置显示表头 .header on
按照列对齐的方式显示 .mode column
6.修改表中的数据 UPDATE
语法: UPDATE 表名 SET 列名1 = 新值 ,列名2 = 新值... WHERE 列名 运算符 值;
例子: UPDATE CLASS1 SET SCORE = 91.4 WHERE NUM = 2;
UPDATE CLASS1 SET SCORE = 91.4如果不加条件则所有行的score都会被设置为91.4
7.删除表格中的行 DELETE
语法: DELETE FROM 表名 WHERE 列名 运算符 值;
例子: DELETE FROM CLASS1 WHERE NUM = 1; //把学号为1的这一行(一个记录)删除