1. MYSQL分类
关系型数据库:(SQL)
MySql Oracle Sql Server DB2 SQLlite
通过表与表之间,列与列之间的关系进行数据存储
非关系型数据库:(NoSQL,not only sql)
Redis MongoDB
通过对象进行存储,通过对象自身的属性决定操作
DBMS 数据库管理系统
是一个数据库的管理软件,数据库用于存储数据,DBMS用于管理和操作数据。
MYSQL
mysql是关系型数据库管理系统,使用语言为SQL语言,分为社区办和商业版。体积小、速度快、成本低。
2. 安装MYSQL
安装建议
- 不要用EXE安装,卸载不干净
- 尽可能使用压缩包安装
安装
- 解压压缩包
- 将解压后的包,放在自己电脑环境目录下
- 添加环境变量:Mysql的bin目录
- 新建mysql配置文件,在bin的同级下创建文件my.ini
[mysqld] basedir=安装包所在目录,如D:\Pg\mysql-5.7\ datadir=没有改目录不用管,会自动生成,如D:\Pg\mysql-5.7\data\ port=3306 skip-grant-tables \\用于免登陆
- 启动管理员下的CMD,运行所有的命令(往注册表里注册服务,安装)
· 切换到mysql的bin目录下,mysqld -install
· 初始化数据文件,就是my.ini中配置的data目录,mysqld --initialize-insecure --user=mysql,查看bin同级下是否新生成data目录 - 启动mysql,修改密码
· net start mysql net stop mysql
· mysql -uroot -p
· updata mysql.user set authentication_string=password(‘root’) where user=‘root’ and Host=‘localhost’;
安装可视化软件SQLyog
3. 数据库操作
3.1 连接数据库
mysql -uroot -proot --连接数据库
update mysql.user set authentication_string=password('12345') where user = 'root' and Host = 'localhost' ; --修改用户名密码
flush privileges; --刷新权限
-------------------------------------------------------------
show databases; --查询数据库
use 数据库名称; --切换数据库
show tables; --查看数据库下的表
describe 表名; --查看表中字段的信息
-------------------------------------------------------------
create database 数据库名; --创建一个数据库
exit --退出连接
-- 单行注释
/* */ 多行注释
3.2 数据库操作
create database [if not exists] 数据库名;
drop database [if exists] 数据库名;
use 数据库名; --注意,如果数据库名是一个特殊字符,就需要带飘,use `数据库名`;
show databases; --查看所有数据库
3.3 数据库列类型*
数值:
tinyint 1个字节
smallint 2个字节
mediumint 3个字节
int 4个字节,标准整数
bigint 8个字节,对应long
float 4个字节,浮点数
double 8个字节,(存在精度问题)
decimal 字符串形式的浮点数,用于金融计算
字符串
char 0~255,固定大小的字符串
varchar 0~65535,可变长度字符串,对应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到现在的毫秒数
null
没有值,未知,不要使用null进行运算,如果运算结果为null
3.4 数据库的字段属性
unsigned
无符号整数,声明了该列取值不能为负数
zerofill
默认字段使用0填充,不足的位数使用0填充,如果长度设置为5,35就会写成00035
自增
自动在上一条基础上+1,用来设置唯一的主键,必须是整数类型,可以自定义设置主键自增的起始值和步长
非空
NULL 和 not null,设置为not null,如果新增的时候不给赋值就会报错
默认
设置默认的值
注意:开发时, 每个表都应有几个固定字段,包括ID(主键),version(做乐观锁的),is_delete(伪删除),gmt_create(创建时间),gmt_update(修改时间)
3.5 操作数据库表
注意点:
使用英文括号,表名称和字段名称用飘圈起来
1. 创建数据库表
语法:
create table if not exits `表名` (
`id` int(4) not null auto_increment comment ‘这里是英文的点’,
`name` varchar(30) not null default ‘默认值’ comment ‘姓名’,
`birthday` datetime default null comment ‘出生日期’,
primary key (`id`) – 一般写在表的最后,方便查看
)engine=innodb default charset=utf8; --声明引擎和默认字符集
Innodb(默认使用)和Myisam的区别
MYISAM | INNODB | |
---|---|---|
支持事务 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约为myisam两倍 |
总结:
1. myisam节约空间,速度较快
2. innodb安全性高,事务的处理,多表多用户操作
3. 所有的数据库文件都存在data目录下,一个文件夹对应一个数据库,本质都是文件存储:
innodb在数据库表中只有一个*.frm文件,以及上级目录下的ibdata文件
myisam对应文件:*.frm 表结构的定义文件,*.MYD 数据文件,*.MYI 索引文件
2. 修改数据库表
alter table 原表名 rename as 新表名;
3. 增加数据库表字段
alter table 表名 add 字段名 列属性;
eg> alter table teacher add age int(11) not null;
** 4. 修改数据库表字段**
1. 重命名表字段
alter table 表名 change 原列名 新列名
eg> alter table teacher change age age1;
2. 修改字段约束
alter table 表名 modify 字段名 列属性;
eg> alter table teacher modify age varchar(11);
5. 删除数据库表字段
alter table 表名 drop 字段名;
drop table if exists 表名;