纯文本数据库:
纯文本数据库是只用空格符、制表符和换行符来分割信息的文本文件。适用于小型应用,对于大中型应用来说,它有诸多限制:
① 只能顺序访问,不能进行随机访问;
②查找数据和数据关系或多用户同时访问进行写操作非常困难。
关系数据库:
由于纯文本数据库存在诸多局限,所以人们开始研究数据模型,设计各种类型的使用方便的数据库。在数据库的发展史上,最具影响的数据库类型有:层次模型,网状模型和关系模型。其中,关系模型是目前应用最广泛和最有发展前途的一种数据模型,其数据结构简单,当前主流的数据库系统几乎都采用关系模型。
数据库系统构成: 数据库,数据库管理系统(以及开发工具),应用系统,数据库管理员(和用户)比如: ACCESS , SQL Server , Oracle , MySQL , FoxPro 和 Sybase
SQL 即 Structured Query Language 。数据库系统通过SQL语言来管理数据库
SQL语言主要分为三个部分:
--DDL:即 Data Definition Language 主要用于定义数据库,表,视图,索引,触发器。比如 create , alter , drop 等
--DML: 即 Data Manipulation Language 主要用于数据的增删改查。 比如: Insert , select , update , delete 等
--DCL : 即 Data Control Language 主要用于控制用户的访问权限。 比如 :Grant , revoke 等
简单SQL命令:
-h : 党廉洁MySQL服务器不在同台主机时,填写主机名或IP地址
-u : 登录MySQL的用户名
-p :登录MySQL的密码
tips: 密码如果写在命令行的时候一定不能有空格。如果使用的系统为Linux并且登陆用户名字MySQL的用户名相同即可不用输入用户名和密码,LInux默认以root登录,
Windows默认用户是ODBC,免安装的用户root ,密码为空。
数据库操作:
创建数据库语法 : create database 数据库名
叙述: 创建一个具有指定名称的数据库。如果要创建的数据库已经存在,或者没有创建的适当权限,此语句失败。例如 mysql> create database student;
删除数据库:Drop database 数据库名
数据类型种类:
---数值列类型
---字符串列类型
---日期和时间列类型
---二进制数据类型
数值型:分为整点型和浮点型
整型:可以由十进制和十六进制表示,整数由数字部分组成;十六进制表示方法0x且后面加1-9和A-F的任意数字或字母
浮点型: 浮点型由一个数字加一个小数点再加上一个数字组成。两个数字序列不能同时为空。
字符串: “abc” ‘abc10’
字符串中要用转义字符才能表示特殊符号,由单引号或者双引号括起来的字符或者数字
序列\0\'\" \b \n\r\t\\
说明NUL(ASCII 0) 单引号双引号退格新行 回车 制表符 反斜杠
日期和时间值:按“年-月-日”顺序
NULL值:是一种无类型的值,表示“空,什么也没有”二进制类型:是存放二进制数据的类型
浮点数类型和定点数类型 :插入值的精度高于实际定义的精度,系统将会自动四舍五入;如果不指定精度,浮点数和定点数都有默认的精度。
整数类型----数值列的完整性约束
AUTO_INCREMENT : 自动标识列,在需要产生唯一标志符号或者顺序值的时候,可用此属性。值一般从1开始,每行增加1,在插入NULL到一个AUTO_INCREMENT列时,MySQL会插入一个比该列中当前最大值大1 的值,一个表中最多能有一个有此属性的列。对于想使用此属性的列应该定义为NOT NULL,并定义为PRIMARY KEY 或者定义为UNIQUE键 。举例:create table t(id int auto_increment not null primary key);
无符号:此属性禁用负值,将数值的取值范围从零开始。举例:create table t(num tinyint , num2 tinyint unsigned);
NULL和NOT NULL:默认为NULL,即插入值时没有在此字段插入值时自动填NULL,如果指定了NOT NULL,则必须在插入值时在此字段添入值,不允许插入NULL值。
DEFAULT:可以通过此属性来指定一个缺省值,即如果没有在此列添加值,那么默认添加DEFAULT后指定值。
ZEROFILL:前导零填充数值类型值以达到列的显示宽度。举例:create table test2(num1 int default 1,num2 int zerofill);
float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)
double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)decimal的有效位数很大,达到了28位,但是表示的数字范围与double相同,使用的时候会对计算时的性能有影响。
float f=345.98756f; double = 345.975423578631442;
字符串类型:对于可变长的字符串类型,其长度取决于实际存放在列中的值的长度。
字符串类型包括CHAR(0~255) , VARCHAR (0~65535) , TEXT
TEXT类型只能保存字符数据 TINYTEXT(0~255) TEXT(0~65535) MEDIUMTEXT(0~167772150)LONGTEXT(0~4294967295)
char varchar tetxt 的区别: char为定长,另外两个变长; char在保存的时候,右边会用空格来填充到指定的长度,在检索的时候会自动将后面的空格去掉,所以检索出来的数据需要再用trim之类的函数去处理;varchar在保存环境的时候,不进行填充,当值保存和检索时尾部的空格仍然保留;text不可以写默认值,后面如果指定长度,不会报错误,但是这个长度是不起作用的
总结 : char会造成空间浪费,但是有速度优势;而varchar节省了空间,但是速度不如前者;经常变化的字段用varchar;知道固定长度用char ;尽量用varchar 超过255字节只能用varchar灬这text;使用varchar的地方不能使用text。
日期与时间类型:
YEAR :表示时间DATE :表示日期 TIME :表示时间DATETIME 和 TIMESTAMP :表示日期和时间
常用数据类型:==== 二进制数据类型(BLOB)文本数据类型(char,varchar,text)时间和日期(time , date , datetime)数值型数据(int,smallint,float,double)
货币数据类型(decimal)Bit数据类型:(bit)