关系型数据库与非关系型数据库的区别
关系型数据库
关系型数据:指采用了关系模型来组织数据的数据库。
我们可以把关系模型理解为:类似于Excel表格,由二维表及其之间的联系所组成的一个数据组织。
优点:
- 易于维护:使用表结构,格式一致
- 使用方便:支持sql语法,可用于查询一个表或多个表之间复杂的查询
- 支持事务
- 数据不易丢失:数据保存在磁盘中
缺点:
- 固定的表结构,灵活性不好
- 读写性能稍差,尤其是大量数据的读写
- 为有数据更新的表做索引或表结构(schema)变更
非关系型数据库
非关系型数据库:是一种数据结构化存储方法的集合,可以是文档或者键值对等
优点:
- 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等
- 可拓展性高:数据之间耦合性低
- 读写速度快
缺点:
- 因为数据灵活,复杂查询比较麻烦
- 不支持事务:无法保证事务的安全性和完整性
- 学习成本较高
Mysql语句
数据库的基础操作
mac安装数据库:brew install mysql
Ubuntu安装数据库:sudo apt-get install mysql-server
登录方法:
mysql -u root -p xxx
-u后面填写账号,-p填写密码
未设置密码使用:mysql -uroot
数据库相关操作
退出数据库
quit 或者 exit 或者 Ctrl + D
查看所有的数据库
show databases;
使用某数据库
use xxx; #xxx为要使用的数据库名称
查看当前使用的数据库
select database();
创建数据库
create database 数据库名称 charset=utf8;
eg: create database hero charset=utf8;
删除数据库
drop database 数据库名称;
eg: drop database hero;
查看创库sql语句
show create database 数据库名称
表的相关操作
已下表为例子
id | name | age |
---|---|---|
1 | Liming | 20 |
查看所有的表
show tables;
创建表
create table 表名(
字段名称, 数据类型, 可选约束条件
);
例:
create table hero (
id int unsigned primary key auto_increment not null,
name varchar(20) not null,
age varchar(20) not null
);
修改表-添加字段
alter table 表名 add 字段 类型 约束;
例:
alter table hero add ages int not null
修改表-修改字段类型
alter table 表名 modify 字段 类型 约束;
例:
alter table hero modify ages varchar(4) not null;
modify只能修改字段类型和约束,不能修改字段名称
修改表-修改字段名称和字段类型
alter table 表名 change 字段 类型 约束;
例:
alter table hero change name varchar(20) not null
change可以修改字段名称、字段类型和字段约束条件
修改表-删除字段
alter table 表名 drop 字段
例:
alter table hero drop name
查看创建表sql语句
show create table 表名
删除表
drop table 表名
例:
drop table hero
操作表中的数据
在表中插入数据
insert into 表名 values (整条数据)
或者
insert into 表名 (整条字段名称) values (整条数据)
或者
insert into 表名 values (整条字段名称) (整条数据)
例:
insert into hero values (1, 'Liming')
insert into hero (id,name) values (1,'Liming')
insert into hero values (id,name) (1,'Liming')
修改表中的数据
update 表名 set 字段名=要修改的值 where 条件;
例:
update hero set id=2,name='Tom' where id = 1;
删除表中的数据
delete from 表名 where 条件;
例:
delete from hero where id =1;