数据库介绍
数据库(database)简称DB,实际上是一个文件集合,是一个存储数据的仓库,本质上是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查等操作,音乐,视频等文件也是数据。
数据库存储数据的特点
- 持久化存储,不会因为电脑死机、突然断电等情况而丢失数据。
- 读写速度极高,用SQL语句进行操作,效率高。
- 保证数据的有效性,对数据有数据类型、数据唯一性、有效性等的约束。
- 对程序支持非常好,容易扩展,在JAVA、PHP、C、Python等语言中都支持数据库。
数据库的分类
- 关系型数据库
可以保存现实生活中的各种关系数据,数据库中存储数据以表为单位,主流的关系型数据库:MYSQL,Oracle,SQLServer等 - 非关系型数据库
通常用来解决某些特定的需求,比如高并发访问,主流非关系型数据库:Redis,Mongodb,memacahe等
MYSQL介绍与安装
MYSQL介绍
MYSQL是由瑞典MySQL AB公司开发,发现用ISAM和mSQL来访问表格的速度和灵活性不能满足需求,于是便开发了跟mSQL接口类似的数据引擎MYSQL。Oracle和SQL Server是商业的数据库,mysql是开源的。
MYSQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言(结构化查询语言SQL)进行数据库管理,MYSQL因为其速度、可靠性和适应性而备受关注。在不需要事务化处理的情况下,MYSQL是管理内容最好的选择。excel跟MYSQL进行数据管理类似,但数据的存放量和灵活性不如MYSQL。
MYSQL特点
- mysql是开源的,所以你不需要支付额外的费用就能使用。
- mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
- mysql使用标准的SQL数据语言形式。
- mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括R、Python、Java、PHP、Ruby等。
MYSQL安装
下载地址:http://www.mysql.com/downloads
分为在线安装和下载到本地安装。安装时默认选择,然后依次点击"Excute"、“Next”、"Finish"都能解决。安装完成后把安装目录下的bin文件夹添加到环境变量里才能正常使用。
从cmd中进入到mysql安装目录下的bin文件夹内,输入mysql -uroot -p ,输入密码就可以进入到mysql数据库。
也可以用PhStudy代替MYSQL,它非常适合用来搭建网站,是一个集成开发环境,安装后需要启动MYSQL服务,才能连接到数据库。
图形界面管理工具
使用命令进行输入的时候,相比用excel等图文并茂的操作会有些不方便,这时候就需要使用图形界面管理工具,这里使用SQLyong图形界面。
SQLyong介绍
SQLyong是一个快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理数据库,由业界著名的Webyong公司出品,也是一个开源软件。
开源软件(open source software),简称OSS,公开源代码软件。因此开源软件具备可以免费使用和公布源代码的特征。
SQLyong只是一个连接数据库的工具,并不是数据库。
下图为安装成功SQLyong后的界面,尽量不要安装到C盘,密码为安装SQL时候的,不要设置的过于复杂。
下图为进入SQLyong的界面
右键点击root@localhost,选择创建数据库,输入数据库的名称为test1,基字符集选择utf8,数据库排序规则选择utf8_general_ci,然后点击创建。
就会出现如下图所示的界面,右键点击表,选择创建表,会弹出新表的界面,输入表名称为demo1,引擎选择InnoDB,字符集选择utf8,在下方输入列名、数据类型、长度等信息。
MYSQL语法基础
SQL
SQL是结构化查询语言,是一种用来操作RDBMS(关系型数据库管理系统)的数据库语言,当前关系型数据库都支持SQL语言进行操作,也就是说通过SQL操作orcal,sql sever,mysql等关系型数据库。
SQL语句分类
- DDL语句:数据定义语言,这些语句定义了不同的数据点、数据库、表、列、索引等数据库对象。
- DML语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。
- DCL语句:数据控制语句,用于控制不同数据段直接许可和访问级别的语句。
数据完整性
在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束。
数据类型
数值类型
整数类型有5种,每个种类包含的数字大小是不一样的,定义数据的范围是合适就好,当定义数据的范围比较大的时候,建议使用无符号范围。
整数类型 | 有符号范围(有正有负) | 无符号范围(正数范围) |
---|---|---|
TINYINT(size) | -128~127 | 0~255 |
SMALLINT(size) | -32768~32767 | 0~65535 |
MEDIUMINT(size) | -8388608~8388607 | 0-16777215 |
INT(size) | -2147483648~2147483647 | 0-4294967295 |
BIGINT(size) | -9223372036854775808~9223372036854775807 | 0~18446744073709551615 |
小数类型有3种,size指的是数据的长度,d为保留的小数位数。
小数类型 | 描述 |
---|---|
FLOAT(size,d) | 带有浮动小数点的小数字。在括号中规定最大位数,在d参数中规定小数点右侧的最大位数。 |
DOUBLE(size,d) | 带有浮动小数点的大数字。在括号中规定最大位数,在d参数中规定小数点右侧的最大位数 |
DECIMAL(size,d) | 作为字符串存储的DOUBLE类型,允许固定的小数点,默认会保留整数,舍去小数。(定点数类型) |
字符串类型
字符串类型 | 字节大小 | 示例 |
---|---|---|
CHAR(size) | 0~255 | char(3)输入’ab ‘(添加空格,凑成3个字符的长度),实际存储为’ab’;输入’abcd’,实际存储为’abc’ |
VARCHAR(size) | 0~65535 | char(3)输入’ab’,实际存储为’ab’;输入’abcd’,实际存储为’abc’ |
枚举类型
枚举类型的英文为ENUM,对1~ 255个成员的枚举需要1个字节存储;对于255~65535个成员,需要2个字节存储,最多允许65535个成员,创建方式:enum(“M”,“F”),创建时会自动弹出枚举值列表框,在输入值中填入要输入的内容,如男、女分别添加进去,在进行表内容输入的时候,就只能输入或选择男、女,输入其他的值则不显示
日期类型
数据类型 | 描述 |
---|---|
DATE() | 日期,格式:YYYY-MM-DD,支持范围:‘1000-01-01’到‘9999-12-31’ |
DATETIME() | 日期和时间的组合,格式:YYYY-MM-DD HH:MM:SS ,支持范围:‘1000-01-01 00:00:00’到‘9999-12-31 23:59:59’ |
TIME() | 时间,格式:HH:MM:SS,支持范围:‘-838:59:59’到‘838:59:59’ |
YEAR() | 2位或4位格式的年。4位格式:1901到2155;2位格式:70到69,表示从1970到2069 |
TIMESTAMP() | 时间戳,跟随系统时间发生变化,跟时区有关。格式:YYYY-MM-DD HH:MM:SS,支持的范围:‘1970-01-01 00:00:0’ UTC 到 ‘2038-01-09 03:14:07’ UTC |
注意
- decimal表示定点小数,如decimal(5,2)表示共存5位数,小数占2位,不写则默认为decimal(10,0),默认舍去小数位。
- char 表示固定长度的字符串,如char(3),如果填充’ab’时则会补充一个空格为’ab ’
- varchar 表示可变长度的字符串,如carchar(3),填充’ab’时就会存储’ab’
- 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
- 枚举类型不区分大小写
约束
- 主键约束(primary key):它能够唯一确定表中的一条记录,也就是我们通过给某个字段添加约束,就可以使得字段不重复且不为空。如身份证号
- 自增约束(auto_increment),创建表时勾选自增,在填充内容时,会自动增加序列
- 惟一约束(unique):此字段的值不允许重复,主键是惟一的,但惟一并不一定是主键,如身份证和银行卡
- 非空约束(not Null):此字段不允许填写空值
- 默认约束(default):当不填写此值时会使用默认值,如果填写时则以填写为准
- 外键约束(foreign key):对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常,一个表的主键也可以为另一个表的外键