(1)实现数据持久化到本地
(2)使用完整的管理系统统一管理,可以实现结构化查询,方便管理
数据库(DataBase)为了方便数据的存储和管理,它将数据按照特定的规则存储在磁盘上,就是一个存储数据的仓库。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。
DB:数据库(DataBase)
存储数据的容器,它保存了一系列有组织的数据。
DBMS:数据库管理系统(DataBase Management System)又称为数据库软件或数据库产品,用于创建或管理DB
总而言之,应用程序操作和查询数据库,数据库为应用程序提供数据
根据不同的存储类型可以分为关系型数据库和非关系型数据库
(1)关系型数据库管理系统称为RDBMS,R指Relation
(2)关系型数据库一般是以表为单位进行操作的
现在流行的关系型数据库有
Oracle:功能强大,收费. MySQL 快捷、可靠 开源、免费
SQL Server(微软): 只能安装在Windows操作系统
DB2 (IBM):适合处理海量数据,收费
(1)非关系型数据库,操作的主要单位是键和值
(1)主要流行的非关系型数据库有
MongdoDB
Redis
数据(结构)定义语言DDL(DataData Definition Language),用于创建和修改数据库表结构的语言
常用语句 create(建表),alter(修改),drop(删除),rename(重命名)
创建数据库并设置编码格式
CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARSET UTF8]
CREATE DATABASE schooldb -- 创建数据库
CREATE DATABASE IF NOT EXISTS schooldb CHARSET utf8 -- 如果该数据库不存在就创建,设置字符编码
DROP DATABASE 数据库名/[IF EXISTSS]数据库名
DROP DATABASE schooldb -- 删除数据库
DROP DATABASE IF EXISTS studentdb -- 如果存在就删除数据库
ALTER DATABASE schooldb CHARSET gbk -- 修改数据库编码
(1)将数据放到表中,再将表放到数据库中
(2)一个数据库可以有多张表,每张表都有一个名字,用来标识自己,每张表具有唯一性(同一个数据库中的表名子不能重复)
(3)表具有一些特性,这些特性定义了数据在表中如何存储,类似java中类的设计
(4)表由列组成,我们也称为字段,所有表都是由一个或多个列组成的,每一列类似于java中的属性
(5)表中的数据是按行存储的每一行类似于java中的对象
表(table)是数据存储的最常见和最简单的形式,是构成关系型数据库的基本元素。表的最简单形式是由行和列组成,分别都包含着数据。 每个表都有一个表头和表体,表头定义表名和列名 .表中的行被看作是文件中的记录,表中的列被看作是这些记录的字段
字段是表里的一列,用于保存每条记录的特定信息
记录也被称为一行数据,是表里的一行。在关系型数据库的表里,一行数据是指一条完
整的记录。
对于某一个具体的表在创建之前要确定表的下列特征
(1)表名(表信息)
(2)表中的字段
(3)字段的数据类型和长度
(4)哪些约束
(1) char(n)长度为n的定长字符串
(2) varchar(n)最大长度为n的可变字符串长度
(3)date 日期,包含年月日
(4)datetime 年月日时分秒
要注意char(n)和varchar(n)的区别
char(n)如果字符串的长度不够n位,也按照n位算
varchar(n)字符串的长度是几位就按照几位算,但不能超过n位
数据类型(M,D)
M:精度,数据的总长度;
D:标度,小数点后的长度 建议使用double
Float(6,2)、Double(6,2)
TEXT列字符字符串
有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。
它的长度:
TINYTEXT:最大长度255个字符(2^8-1)
TEXT:最大长度65535(2^16-1)
MEDIUMTEXT:最大长度16777215(2^24-1)
LONGTEXT最大长度4294967295(2^32-1)
一般用于长文本小说这种数据的存储
主键:在一张表中代表唯一的一条记录,不能重复,不能为空
(1) PRIMARY KEY 设置主键约束
(2) NOT NULL 不能为空约束
(3) UNIQUE 唯一性约束
(4) 检查约束 设置条件
(5) 外键约束
AUTO_INCREMENT 用来让主键自动增长
DEFAULT default_value
comment 注释
CREATE TABLE 表名(
表的字段及约束
)
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '学号',
NAME VARCHAR(5) NOT NULL COMMENT '姓名',
gender CHAR(1) NOT NULL COMMENT '性别',
birthday DATE,COMMENT '生日',
phone CHAR(11) UNIQUE NOT NULL COMMENT '电话',
address VARCHAR(30) NOT NULL COMMENT '地址',
height DOUBLE(3,2) CHECK(height<3) COMMENT '身高',
reg_time DATETIME COMMENT '注册日期'
)
DROP TABLE IF EXISTS 表名
DROP TABLE IF EXISTS student -- 删除表
RENAME TABLE 旧表名 TO 新表名
RENAME TABLE stu TO student -- 修改表名
CREATE TABLE 新表名 LIKE 被复制表名
CREATE TABLE stu LIKE student -- 复制表结构
DML:数据操纵语言(Data Manipulation Language),常用语句insert,delete,update
插入数据有四种方式
方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2……,值n);
INSERT INTO student(NAME,gender,birthday,address,phone,height,reg_time)
VALUE('jim','男','2000-2-2','陕西','13343453',1.75,NOW()) -- 插入表数据
方式2: INSERT INTO 表名 set 列名1=值1,…列名n=值n;
INSERT INTO student SET NAME='tom',gender='女',phone="1566678891",height=1.67,reg_time=NOW()
方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2……,值n),(值1,值2……, 值n);
INSERT INTO student(NAME,phone,reg_time)VALUES('aa',"134555",NOW()),('bb',"1677777",NOW())
方式4:INSERT INTO 表名(列1,列2……,列n) 查询语句(查询的列数与插入列数匹配)
INSERT INTO stu(NAME,phone,reg_time)SELECT NAME,phone,reg_time FROM student
UPDATE 表名 SET 列名 = ‘新值’WHERE 条件
UPDATE student SET gender = '男',birthday="2003-1-1",address="hanzhong" WHERE id = 10
UPDATE student SET gender = '男',birthday="2003-1-1",address="hanzhong" -- 不加条件会全部被改
UPDATE student SET gender = NULL WHERE id = 10
(1) DELETE FROM 表名 WHERE 条件
DELETE FROM student WHERE id = 10 -- 删除某一个id学生对应的信息
-- 删除数据不加任何条件,会清空表中所有的数据, 会一行一行的删除数据,比较慢
DELETE FROM student
(2) TRUNCATE TABLE 表名;清空整张表
-- 清空表中的数据,从表结构上操作,效率快
TRUNCATE TABLE stu