定义: 数据就是按照数据结构来组织、储存和管理数据的仓库,数据库是存储相关数据的集合。这些数据是结构化的、能与多个用户与应用程序彼此独立的。
类型:
数据库优点:
数据按一定的数据模型组织、描述和存储各种用户共享、节省存储空间、易扩展,编写有关数据库应用程序。
时下流行的数据库:
Oracle(Oracle):应用广泛、功能强大、分布式数据库系统“关系- 对象” 型数据库。
MySQL(Oracle): 快捷、体积小、可靠、开源、免费。
SQL Server(MS):针对不同用户群体的五个特殊的版本、易用性好。
DB2(IBM):应用于大型应用系统,具有较好的可伸缩性。
MySQL是一个小型关系型数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中,由于其体积小、速度快,总体拥有成本低,尤其是开发源码这一特点,许多中小型网站为了降低总体拥有成本选择了MySQL作为网站数据库,MySQL属于关系型数据库。
数据表:关系模型把数据组织到数据表(table)中,这种所谓的“关系型”可以理解为“表格”的概念,一个关系型数据库是由一个或数个表格组成。
组成:表头(header)每一列表示的名称;
列(row):具有相同数据类型的数据的集合。
行(col):每一行用来描述某个人、物的具体信息。
键(key):表示用来识别某个特定的人、物的方法、键的值在当前列中具有唯一性。
值(value): 行的具体信息,每个值必须与该列的数据类型相同。
MySQL有三大数据类型,分别为数字、日期|时间、字符串这三大类型中友更细致的划分了许多子类型:
数字类型:
整数:tinyint、smallint、mediumint 、int、bigint。
浮点数:float、double、real、decimal
日期和时间:data、time、datatime、timestamp、year
字符串类型:
字符串:char定长字符串, varchar不定长字符串
文本:tinytext、text、mediumtext、longtext
二进制(可用来储存图片、音乐等):tinyblob、blob、mediumblob、longblob
复合数据类型:
MySQL支持两种复合数据类型enum枚举类型和set集合类型。
enum类型的字段类似u单选按钮的功能,一个enum类型的数据最多可以包含65535个元素。
set类型的字段类似于复选框的功能,一个set类型的数据最多可以包含64个元素。
启动MySQL服务:net start mysql
关闭MySQL服务:net stop mysql
如果是自定义安装则按照你自动的名字来:
如:net start mysql57
登录数据库:在进入到mysql安装目录bin下,输入
mysql -P 3306 -u root -p, 然后回车输入密码,即可登录到本地MySQL 客户机与本地MySQL服务器之键的连接。
选定默认的数据库: use 数据库名;
显示所有的数据库:show databases;
显示默认数据库中的所有表:show tables;
查询表结构:describe 表名 或者desc 表名;
放弃正在输入的命令:\c
显示命名清单:\h
退出mysql程序:\q
查看Mysql服务器状态信息:\s
SQL是专门为数据库而建立的操作命令集,是一种功能齐全的数据库语言。
语法组成:
常用语句
使用create datebase 数据库名[其他选项]
;可完成对数据库的创建;如create database sadiao_db character set utf8
创建一个sadiao_db的数据库,字符指定编码为utf-8。
使用create table 表名(列声明)
创建表,如:创建students表为列,表中将存放学号(id)、姓名(name)、性别(gender)、年龄(age)和电话(tel)
create table students(
id int unsigned not null auto_increment primary key,
name char(8) not null,
sex char(4) not null,
age tinyint unsigned not null
);
说明:以id为列说明
id 为列的名称,
int
指定该类的类型为int
unsigned
表示该类型无符号
not null
表示该列的值不能为空,必须要填,如果不指定该属性,默认为null.
auto_increment
需要在整列中使用,器作用是在插入数据时若该列为Null,mysql将自动产生一个比现存值更大的唯一标识符值,在每张表中仅能有一个这样的值且所在列必须为索引列。
primary key
表示该列是表的主键,此列的值必须唯一,mysql将自动索引该列。
char(8)
表示存储的字符长度为8。
更改表结构:
使用alter table 表明 action
:
action的值可以是如下语句:
add 列名[first | after 列名]
为表添加一列,如果没指定first或after,则在列尾添加一列,否则在指定位置添加。
add primary key(列名)
:为表添加一个主键,前提,表没有主键。
add foreign key(列名) refernces 表名(列名)
为表添加一个外键(两个列的数据类型和长度一致)。
alter 列名 set default 默认值
可以更改指定列的默认值。
change 旧列名 新列名 <建表语句> [first |after 列名]
可以替换列名。
modify 列名 <建表语句> [first|after 列名]
可以修改列的参数。
drop 列名
可以删除一列
drop primary key
可以删除主键
其他操作:
rename table old_name to new_name
修改表名
drop table table_name
删除表
drop database da_name
删除数据库
约束(constraint)的全称是约束条件,也称完整性约束条件,是在数据表上强制执行的一些数据校验规则,当执行到DML操作时,数据必须符合这些规则。约束条件可以保证表中数据的完整性,保证数据间的商业逻辑。
类型:
约束条件包括:
非空约束(not null) 简称NN: 用于确保字段值不为空。
唯一性约束(unique)简称UK:用于保证字段或字段的组合不出现重复值,当给表的某一列定义了唯一约束。可以在建表是同时建立也可以在建表以后再建立。
主键约束(primary key)简称PK :约束条件从功能上看相当于非空(NOT NULL)且唯一(UNIQUE)的组合。主键字段可以是单字段或多字段组合,即:在主键约束下的单字段或者多字段组合上不允许有空值,也不允许有重复值。
一个表只能允许建立一个主键,其他约束条件没有明确规定。
主键相关约定:
外键约束(Foreign key) 简称FK: 外键约束条件定义在两个表的字段或一个表的两个字段上,用于保证相关两个字段的关系。
SQL创建外键语句的方法:
constraint 表名 foreign key(字段) reference 外键表(外键字段)
也可以建表的同时添加外键约束条件。
注意:外键确定了主从表的先后生成关系,有时会影响业务逻辑。
主键和外键的区别:
数据表之间的关联/引用关系是依靠具体的主键(primary key
)和外键(foriegn key
)建立起来的。
主键:帮助MySQL以最快的速度把一条特点的数据记录的位置确认下来,主键必须唯一,一般使用整数类型比较合适。
外键:引用另一个数据表的某条记录,外键列类型尽可能与主键列类保持一致,外键列上应该加上not null。