Mysql数据库 day01
数据库
存储数据
MySQL、oracle、sql server、db2、sqlite…
关系型数据库
数据以表格形式存放
No sql
Mysql
开源免费数据库
在互联网领域,是最常用的数据库
被 sun 以10亿美金收购,一年后,sun被oracle收购
Mysql被oracle收购后,存在闭源风险
各大开源社区,已经不再支持mysql
Mysql的创始人,继续开发一个mysql 的分支版本,mariadb
开源社区都转向支持mariadb的开发
阿里投资maradb 3000万
阿里把自己开发的数据库新功能,免费贡献给 mariadb
下载安装mysql
Mysql有收费版本,也有免费开源的社区版本
下载开源社区版
安装 mysql或mariadb都可以
Mysql使用
Mysql数据库服务,是一个后台进程
使用客户端来连接mysql
Mysql命令行客户端:mysql
mysql -uroot -p –h192.168.121.90 –P3306(这是登录别人的服务器时用的)
Mysql官方窗口客户端:workbench
Navicat、sqlyog、mysqlfront…
Mysql命令行客户端
连接、登录mysql服务器
mysql –uroot –p 登录本机服务器
退出客户端,断开与服务器的连接
exit
\q
显示数据库列表
show databases;
show schemas;
schema -就是数据库
进入数据库
use test;
查看数据库中数据表的列表
show tables;
mysql用户
mysql用户由“用户名+ip地址”来标识
创建用户
create user ‘root’@’192.168.121.%’ identified by ‘1234’
对用户授权
grant all privileges on . to ‘root’@’192.168.121.%’
用户表
use mysql; 进入mysql库
select * from user; 查系统用户表数据
select * from user\G 纵向查看结果
删除用户
drop user ‘用户名’@’主机地址’
库管理
创建库
create database 库名 charset=utf8;
查看库
show databases;
show schemas;
use db1
修改库
对数据库只能修改它的默认字符编码
alter database db1 charset gbk;
.
删除库
删除数据库,会把内容所有数据表全部删除,且不可恢复
drop database db1;
数据表
创建表
create table tb1(
id int,
name varchar(20),
money decimal(8,2)
) engine=innodb charset=utf8;
查看表
show tables;
desc tb1;
show create table tb1\G
删除表
删除表不可恢复(三思而后行)
drop table tb1;
截断表(重建表)
先删除,再重建,数据不可恢复
truncate table tb1;
修改表
修改表名rename table A to B
rename table tb1 to tb2;
修改表的参数(引擎、编码)
alter table tb2
engine=myisam charset=gbk;
添加字段
first - 加到最前面
after - 指定加到哪个字段之后
alter table tb2
add gender varchar(4) first;
alter table tb2
add height int after name;
alter table tb2 add(
weight int,
tel varchar(20)
);
desc tb2;
show create table tb2\G
修改字段名
alter table tb2
change gender sex varchar(4);(注意change与modify之间的区别)
修改字段类型
alter table tb2
modify height decimal(3,2);
修改字段位置
alter table tb2
modify sex varchar(4) after name;
alter table tb2
modify name varchar(20) first;
删除字段
整列数据会被删除,不可恢复
alter table tb2
drop column weight;(删除weight列)
字段字节量总合,不超过65535个字节
create table tb3(
id int, – 4字节
price double, – 8字节
name varchar(65520) – 65520+2
)charset=latin1;
create table tb4(
id int not null, -- 4字节
price double not null, -- 8字节
name varchar(65521) not null -- 65521+2
)charset=latin1;
(注意:如果有空字符的话也算一个字节)
create table tb5(
id int not null, – 4字节
price double not null, – 8字节
s tinyint not null, – 1字节
name varchar(21840) not null – 21840*3+2
) charset=utf8;
varchar类型
如果长度小于等于255,前面有一个字节,表示字节长度
如果长度大于255,前面有两个字节,表示字节长度
如果表中字段,只要有允许 null 值的字段,那么需要有额外的一个字节来表示
sql
结构化的查询语言
用来访问数据库
DDL(database definition language) - 数据定义语言,建库建表
DML(database manipulation language) - 数据操作语言,增删改
DQL (data query language) - 数据查询语言,select
Insert插入数据
insert into 表 values(值1, 值2…)
update修改数据
update 表 set 字段1=值1, 字段2=值2, 字段3=值3 where ……
delete删除
delete from 表 where ……
select查询
select * from 表
select 字段1, 字段2, 字段3 from 表
数据库存储引擎
innodb
默认推荐引擎
支持事务
支持外键
提供行级锁
表文件:
tb1.frm 保存表结构
tb1.ibd 保存数据、索引
myisam
不支持事务
不支持外键
数据访问效率更高
只提供表级锁
表文件:
tb2.frm 保存表结构
tb2.MYD 保存数据
tb2.MYI 保存索引数据
memory 内存表
…