数据结构化
实现数据共享
可以减少冗余数据
数据独立性高
数据统一管理与控制
数据库介绍
MySQL 数据库
Oracle
Orcale数据库管理系统由甲骨文公司开发,在数据库领域一直处于领先地位
商业收费,大型系统,淘宝、京东就使用了 Oracle 数据库
SqlServer 数据库
由微软公司开发,只能在Windows上运行。.net开发程序员
DB2
由IBM公司开发,在金融行业中使用的比较多。IBM的服务器,买服务器送数据库
商业收费
MS SQL Server
以上这些数据库都是使用 SQL 语言进行操作
SQL 语言就是用于 关系型数据库 的一个操作语言
利用这个 SQL 语言可以增删改查库和表,以及增删改查表数据
表 就是 关系
表与表之间就是关系
MongoDB
非关系型数据库
没有表,这个数据库中存储的数据都在集合中,类似于 JavaScript 对象,其实就是 json 格式的数据
集合没有结构,集合就是一个数组
也可以往集合中插入数据
MongoDB是由10gen公司开发的一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库中功能最丰富,最像关系型数据库的。他支持的数据结构非常松散,是类似json的格式,所以可以存储比较复杂的数据结构类型。MongoDB数据库管理系统最大的特点就是它支持的查询语言非常强大,语法类似于面向对象的查询语言。它还是一个开源的数据库,对于大数据量、高并发的互联网应用,支持非常不错。操作非关系型数据库不需要使用SQL语言。
关系型数据库存储结构
根据表结构存储记录数据
根据业务设计表结构
数据库管理系统
数据库服务器
数据库
数据表
记录
oracle、sqlserver、DB2、MySQL 都是关系型数据库。
安装和配置 MySQL 数据库
官方网站:http://www.mysql.com/
启动 和 停止MySQL服务:
通过Windows的运行,输入services.msc找到MySQL服务
通过DOS命令启动MySQL服务(使用管理员权限打开终端)
登录MySQL数据库:
mysql -h localhost -P 3306 -u root -p
-h:主机名
-P:端口
-u:用户名
-p:密码
mysql默认连接localhost和3306,所以可以省略-h和-P:
mysql -u root -p
在命令行中输入“help;”或者“h”,就会显示出MySQL的帮助信息。
数据库的存储结构
一个数据库服务器上可以有多个数据库
一个数据库中可以有多个表
一个表一定要有表结构
所有的数据存储在表中,所以有了数据库之后,要先设计你的表结构
一张表中存储多条记录
记录按照表结构的形式进行存储
创建数据库和表
创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name
查看数据库
SHOW DATABASES;
显示数据库创建语句
SHOW CREATE DATABASE db_name;
删除数据库
DROP DATABASE [IF EXISTS] db_name;
选择数据库
USE db_name;
查看当前使用的数据库
SELECT database();
数据类型
整数类型
浮点型
在MySQL数据库中,存储小数都是使用浮点数和定点数来表示的。
浮点数有两种:
单精度浮点数(FLOAT)
双精度浮点数(DOUBLE)
定点数(DECIMAL)[?des?ml]
时间和日期类型
如果插入的数值不合法,系统会自动将对应的零值插入到数据库中。
YEAR
使用4位字符串或数字表示,范围为‘1901‘ ~ ‘2155’或1901~2155
例如,输入‘2016‘或者2016,插入到数据库的值均为2016
DATE
DATE类型用来表示日期值,不包含时间部分。
可以使用“YYYY-MM-DD“或‘YYYYMMDD‘字符串表示
例如,输入‘2016-10-01‘或’20161001‘插入到数据库的日期都是2016-10-01
TIME
TIME类型用于表示时间值,它的显示形式一般为HH:MM:SS,其中HH 表示小时,MM表示分,SS表示秒
可以使用下面三种方式指定时间的值:
以“D HH:MM:SS“字符串格式表示。其中,D表示日,可以取0-34之间的值,插入数据时,小时的值等于(D*24+HH)
例如,输入‘2 11:30:50‘,插入数据库的日期为 59:30:50
以‘HHMMSS‘字符串格式或者HHMMSS数字格式表示
例如:输入‘345454‘或345454,插入数据库的日期为34:54:54
使用CURRENT_TIME或NOW()输入当前系统时间
DATETIME
指定DATETIME类型的值:
以‘YYYY-MM-DD HH:MM:SS‘或者’YYYYMMDDHHMMSS‘字符串或数字都可以。
使用NOW来输入当前系统的日期和时间
TIMESTAMP
TIMESTAMP类型显示形式和DATETIME相同,但取值范围比DATETIME小。
输入CURRENT_TIMESTAMP输入系统当前日期和时间
输入NULL时,系统会自动输入当前日期和时间
无任何输入时,系统会输入系统当前日期和时间
标记。利用它可以保存表中某条记录的最后修改时间。自动维护。
CHAR和VARCHAR
当数据为CHAR(4)类型时,不管插入值的长度是多少,所占用的存储空间都是4个字节。而VARCHAR(4)所对应的数据所占用的字节数为实际长度加1.
总结:
字符长度不固定的类型使用VARCHAR 查询的时候要计算字节的长度
字符串长度固定的使用CHAR 查询速度快。
VARCAHR比CHAR省空间
CHAR比VARCHAR省时间
TEXT类型
表示大文本数据,例如:文章内容、评论等
基本操作
查看表结构
查看当前数据库中的所有表: show tables;
查看表结构: desc table_name;
查看建表语句: show create table table_name;
修改数据表
增加列: ALTER TABLE table_name ADD colum datatype;
修改列: ALTER TABLE table_name MODIFY colum datatype;
删除列: ALTER TABLE table_name DROP colum;
修改表名: rename TABLE table_name to new_table_name;
修改列名: ALTER TABLE table_name change colum_name new_colum_name datatype;
删除数据表
DROP TABLE table_name;
表的约束
表的约束条件都是针对表中字段进行限制,从而保证数据表中数据的正确性和唯一性。
主键约束
每个数据表中最多只能有一个主键约束,定义为PRIMARY KEY 的字段不能有重复值且不能为NULL值。也就是非空而且唯一
语法:字段名 数据类型 PRIMARY KEY
非空约束
非空约束指的是字段的值不能为NULL,在MySQL中,非空约束是通过NOT NULL 定义的。
语法:字段名 数据类型 NOT NULL;