数据库MySql 01
一、数据库的分类
关系型数据库
- MySql、Oracle、SQL Server、DB2、SQLliter
- 通过表和表之间,行和行之间的关系进行数据的存储,如员工信息表,考勤表....
非关系型数据库
- Redis、MongDB
- 非关系型数据库,对象存储,通过对象的自身的属性来决定
二、DBMS(数据库管理系统)
- 数据库的管理软件,科学有效的管理数据。还能维护和获取数据
- MySql,数据库管理系统
三、MySql简介
MySql是关系型数据库管理系统,就是一个基于socket编写的C/S架构的软件,其主要通过表结构来存储数据,每一个列称为一个字段,每一行称为一个记录,而每一个列的集合称为数据表,每一个表的集合称为数据库,它是最流行的关系型数据库之一,在web应用方面,MySql是最好的RDBMS(数据库管系统)软件之一,并且MySql是开源的数据库软件。
四、MySql优点
1)MySQL 是开放源代码的数据库
MySQL 是开放源代码的数据库,任何人都可以获取该数据库的源代码。这就使得任何人都可以修正 MySQL 的缺陷,并且任何人都能以任何目的来使用该数据库。MySQL 是一款可以自由使用的数据库。
2)MySQL 的跨平台性
MySQL 不仅可以在 Windows 系列的操作系统上运行,还可以在 UNIX、Linux 和 Mac OS 等操作系统上运行。因为很多网站都选择 UNIX、Linux 作为网站的服务器,所以 MySQL 的跨平台性保证了其在 Web 应用方面的优势。虽然微软公司的 SQL Server 数据库是一款很优秀的商业数据库,但是其只能在 Windows 系列的操作系统上运行。因此,MySQL 数据库的跨平台性是一个很大的优势。
3)价格优势
MySQL 数据库是一个自由软件,任何人都可以从 MySQL 的官方网站上下载该软件,这些社区版本的 MySQL 都是免费试用的,即使是需要付费的附加功能,其价格也是很便宜的。相对于 Oracle、DB2 和 SQL Server 这些价格昂贵的商业软件,MySQL 具有绝对的价格优势。
4)功能强大且使用方便
MySQL 是一个真正的多用户、 多线程 SQL 数据库服务器。它能够快速、有效和安全的处理大量的数据。相对于 Oracle 等数据库来说,MySQL 的使用是非常简单的。MySQL 主要目标是快速、健壮和易用。
五、MySql基本的命令操作
- 连接数据库:mysql -u root -p
- 修改用户密码:update mysql.user set authentication_string=password('123456' ) where user='root' and Host = 'localhost';
- 刷新权限:flush privileges;
- 查看所有数据库:show databases;
- 切换数据库 use 数据库名:use ams;
- 查看某个数据库中所有的表:show tables; 需要切换到该数据库之下才能查看
- 显示某个数据库中某个表的全部信息:describe 表名;
- 创建数据库: create database 数据库名; 此处需要注意如果数据库名是大写字母的话它会自动转化为小写字母
- 退出连接:exit;
注意:所有的语句后面都使用 ; 结尾。
-- 单行注释(SQL原来的注释)
/*
这是SQL的多行注释
*/
六、操作数据库语句
mysql关键字不区分大小写
创建数据库
CREATE DATABASE IF NOT EXISTS rxj --IF NOT EXISTS判断数据库是否存在,可写可不写
删除数据库
DROP DATABASE IF EXISTS rx --IF EXISTS如果存在删除,不存在就会有警告
使用数据库
USE `rxj` --如果表名或者字段名是一个特殊字符,需要用 `` 括起来
查看数据库
SHOW DATABASES
七、数据库的列类型
数值
- tinyint 十分小的数据 1个字节
- samalint 较小的数据 2个字节
- mediumint 中等大小的数据 3个字节
- int 标准的整数 4个字节(最常用)
- bigint 较大的整数 8字节
- float 浮点数 4字节
- double 浮点数 8字节
- decimal 字符串形式的浮点数(一般在涉及金钱的时候使用)
字符串
- char 字符串固定大小 0~255
- varchar 可变字符串 0~65535(常用,对应Java中的String)
- tinytext 微型文本 2^8-1
- text 文本串 2^16-1
时间日期
- date 日期格式 YYYY-MM-DD
- time 时间格式 HH:mm:ss
- datetime YYYY-MM-DD HH:mm:ss(最常用的时间格式)
- timestamp 时间戳 1970.1.1到现在的毫秒数
- year 年份表示
null
- 没有值,未知
- 建议不使用进行运算,结果为NULL
八、数据库的字段属性
Unsigned
- 无符号的整数
- 不能声明为负数
zerofill
- 0填充
- 不足的位数,使用0来填充
自增
- 自动在上一条记录上面加一
- 通常用来设计唯一的主键且必须是整数类型
- 可自定义设计主键的起始值和步长
非空
- 设置非空以后,如果不赋值,就会报错
默认
设置默认的值
如sex,默认值为 男 ,如果不指定该列的值,就会有默认的值
九、创建数据库表
-- AUTO_INCREMENT 自增
-- 字符串用''括起来
-- 所有语句后面加,,最后一个不用加
-- COMMENT 注释
-- PRIMARY KEY 主键
CREATE TABLE IF not EXISTS `rxj`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '工号',
`name` VARCHAR(30) NOT NULL DEFAULT '筱筱' COMMENT '姓名',
`pd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
建表格式
CREATE TABLE IF NOT EXISTS `表名`(
`字段名` 列属性 属性 索引 注释,
`字段名` 列属性 属性 索引 注释,
......
`字段名` 列属性 属性 索引 注释,
PRIMARY KEY(`主键`)
)表类型 字符集设置 注释
常用命令
SHOW CREATE DATABASE stumysql -- 查看创建某个数据库的语句
SHOW CREATE TABLE student -- 查看创建某个表的语句
DESC student -- 显示某个表的结构
十、数据库引擎
-- 数据库引擎
/*
INNODB 默认使用
MyISAM 很早以前使用的
*/
区别
MYISAM | INNODB | |
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约为2倍 |
常规操作
- MYISAM:节约资源,速度较快
- INNODB:安全性高,事务的处理,多表多用户操作哦
在物理空间存在的位置
所有的数据库文件都存在data目录下
本质上还是文件的存储
引擎在物理文件上的区别
- INNODB在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
- MYISAM对应的文件
- *.frm --表结构的定义文件
- *.MYD --数据文件(data)
- *.MYI --索引文件
十一、设置数据库表的字符集编码
CHARSET=utf8 -- 如果不设置的话,就会设置默认的编码,但是它不支持中文