数据库基础(一)

数据库基础(一)

了解数据

  • 数据时对客观事物的符号表示,如图形符号、数字、字等
  • 数据是数据库中的存储的基本对象
  • 在计算机中,为了存储和处理日常生活中的事物,就要将事物的特征抽象出来组成一个记录来描述。这个记录就是数据。
  • 数据的种类包括数字、文字、图像、声音和视频等。

数据库(Database 简称DB)

定义: 数据就是按照数据结构来组织、储存和管理数据的仓库,数据库是存储相关数据的集合。这些数据是结构化的、能与多个用户与应用程序彼此独立的。
类型

  • 纯文本数据库:只用空格符、制表符和换行符来分割信息的文本文件。只能顺序访问,适用于小型应用,对于大中型应用来说它存在诸多限制。
  • 关系型数据库:由于纯文本数据库的局限性,人们开始研究数据模型,设计了各种类型的使用方便的数据库,其中有层次模型、网状模型和关系模型。其中关系模型是目前使用最广泛和最具有发展前途的一种数据模型,器数据结构简单,当前主流数据库系统几乎都是关系模型。
  • 非关系型数据库(NoSQL) 指非关系型、分布式、不提供ACID(数据库事务正确执行的四个基本要素)的数据库设计模式。

数据库优点
数据按一定的数据模型组织、描述和存储各种用户共享、节省存储空间、易扩展,编写有关数据库应用程序。

时下流行的数据库
Oracle(Oracle):应用广泛、功能强大、分布式数据库系统“关系- 对象” 型数据库。
MySQL(Oracle): 快捷、体积小、可靠、开源、免费。
SQL Server(MS):针对不同用户群体的五个特殊的版本、易用性好。
DB2(IBM):应用于大型应用系统,具有较好的可伸缩性。

MySQL

MySQL是一个小型关系型数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中,由于其体积小、速度快,总体拥有成本低,尤其是开发源码这一特点,许多中小型网站为了降低总体拥有成本选择了MySQL作为网站数据库,MySQL属于关系型数据库。
数据表:关系模型把数据组织到数据表(table)中,这种所谓的“关系型”可以理解为“表格”的概念,一个关系型数据库是由一个或数个表格组成。
组成:表头(header)每一列表示的名称;
列(row):具有相同数据类型的数据的集合。
行(col):每一行用来描述某个人、物的具体信息。
键(key):表示用来识别某个特定的人、物的方法、键的值在当前列中具有唯一性。
值(value): 行的具体信息,每个值必须与该列的数据类型相同。

数据类型的分类

MySQL有三大数据类型,分别为数字、日期|时间、字符串这三大类型中友更细致的划分了许多子类型:
数字类型:
整数:tinyint、smallint、mediumint 、int、bigint。
数据库基础(一)_第1张图片
浮点数:float、double、real、decimal
数据库基础(一)_第2张图片
日期和时间:data、time、datatime、timestamp、year
数据库基础(一)_第3张图片
数据库基础(一)_第4张图片
字符串类型:
数据库基础(一)_第5张图片
字符串:char定长字符串, varchar不定长字符串
文本:tinytext、text、mediumtext、longtext
二进制(可用来储存图片、音乐等):tinyblob、blob、mediumblob、longblob
复合数据类型:
MySQL支持两种复合数据类型enum枚举类型和set集合类型。
enum类型的字段类似u单选按钮的功能,一个enum类型的数据最多可以包含65535个元素。
set类型的字段类似于复选框的功能,一个set类型的数据最多可以包含64个元素。

MySQL数据库的操作

启动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)

SQL是专门为数据库而建立的操作命令集,是一种功能齐全的数据库语言。
语法组成:

  • DML(Data Manipulation Language 数据操作语言):查询(select)、插入(insert)、删除(delete)和修改(update)数据 等
  • DCL(Data Control Language数据控制语言)用来控制存取许可、存储权限等。commit、roolback等
  • DDL(Data Definition language数据定义语言)用来建立数据库、数据库对象和定义其列create table 、drop table 、alter table等
  • 功能函数:日期函数、数字函数、字符函数、系统函数等
    注意:属于一个SQL语句,使用分号(;)结尾,否则mysql认为语句没有输入完。
    SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分);
    使用函数时,函数名和后面的口号之间不能有空格。

常用语句
使用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)的组合。主键字段可以是单字段或多字段组合,即:在主键约束下的单字段或者多字段组合上不允许有空值,也不允许有重复值。
    一个表只能允许建立一个主键,其他约束条件没有明确规定。
    主键相关约定

    1. 主键应是对系统无意义的数据
    2. 永远也不要更新主键,让主键除了唯一标识一行之外,再无其他的用途
    3. 主键不应包含动态变化的数据,如时间戳
    4. 主键应自动生成,不要人为干预,以免使它带有除了唯一标识一行以外的意义
    5. 主键尽量建立在单列上
  • 外键约束(Foreign key) 简称FK: 外键约束条件定义在两个表的字段或一个表的两个字段上,用于保证相关两个字段的关系。
    SQL创建外键语句的方法:
    constraint 表名 foreign key(字段) reference 外键表(外键字段)
    也可以建表的同时添加外键约束条件。
    注意:外键确定了主从表的先后生成关系,有时会影响业务逻辑。

主键和外键的区别
数据表之间的关联/引用关系是依靠具体的主键(primary key)和外键(foriegn key)建立起来的。
主键:帮助MySQL以最快的速度把一条特点的数据记录的位置确认下来,主键必须唯一,一般使用整数类型比较合适。
外键:引用另一个数据表的某条记录,外键列类型尽可能与主键列类保持一致,外键列上应该加上not null。

你可能感兴趣的:(数据库)