1、数据库简介
(1)、什么是数据库?
一个文件 一个文件夹 一个u盘 一个硬盘......都叫做数据库 存放数据的仓库
(2)、常见的数据库?
mySql sqlServer mongodb oracle......
(3)、数据库的有点
1、采用结构化查询语言SQL访问数据库
2、支持linux mac os、windows等多种操作系统
3、为多种编程语言提供API 如C java php。。。
4、开源的,无需支付额外的费用
5、提供用于管理 检查 优化数据库的管理工具
(4)、数据库中的数据是存放在表中的,表是有行和列组成,列也叫做字段
2、表中字段类型的基本了解
(1)、字段类型---字符串
数据类型 含义
char 最多255个字符
varchar 最多65532个字符
tinytext 最多255个字符
text 最多65535个字符
mediumtext 最多2的24次方-1个字符
longtext 最多2的32次方-1个字符
当你设置字段类型为VARCHAR或CHAR时,需要指定长度值
关于varchar与char的区别
1、一个汉字=2个英文字母=2字节
2、定义一个char[10]和varchar[10],如果存进去的是‘abcd’,那么char所占的长度依然为10,除了字符‘abcd’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,
3、char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的
(2)、字段类型---时间
数据类型 含义
date 日期,格式:YYYY-MM-DD
time 时间,格式:HH:MM:SS
datetime 日期时间,格式:YYYY-MM-DD HH:MM:SS
timestamp 功能和detetime相同(但范围小)
year 年份,格式:yyyy
3、字段属性
unsigned:
如果设置unsigned那么只能存储正数
例如金额 订单id 用户id等等
zerofill:
定义无符号的数值,对应的取值范围翻倍
当插入该列的长度小于定义的长度的时候会自动在前面补0 这个属性和unsigned一起使用
binary:
只用于char和varchar值,当字段指定了该属性时,将以区分大小写的方式排序
4、NULL&&NOT NULL
指定null属性时,该列可以保持为空
如果将一个列定义为not null,将不允许向该列插入null值
选中:可以为空
不选中:不能为空
5、索引
(1)、mysql的索引主要有以下几种
1、主键索引:primary
2、唯一索引:unique
3、索引:index
4、全局索引:fulltext
主键索引: 是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值
唯一索引: 索引列的值必须唯一,但允许有空值
索引: 这是最基本的索引,它没有任何限制,也是我们大多数情况下用到的索引。
全局索引: MySQL从3.23.23版开始支持全文索引和全文检索,FULLTEXT索引仅可用于 MyISAM 表;他们可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或CREATE INDEX被添加。
可以在char、varchar或text类型的列上创建
主键索引与唯一索引的区别
1、主键不允许空值,唯一索引允许空值
2、主键只允许一个,唯一索引允许多个
2、主键只允许一个,唯一索引允许多个
(2)、索引的优点及缺点:
优点:
大大加快数据查询速度
通过创建唯一索引,保证数据库表每行数据的唯一性
缺点:
维护索引需要耗费数据资源
占用磁盘空间
影响对表的数据进行增删改的速度
6、auto_increment
当存在并发的时候
自动生成整数值
新值为上一次插入的值+1
只适用于整数列
必须有唯一索引
必须具备NOT NULL属性
A_I就是auto_increment的缩写