mysql入门
数据库简介
- 用途:用于存储生活中的一切数据,如:身份、住宿、票务、网站、…
- 分类:
- 关系型数据库:MySQL、oracle、SQL server、…
- 非关系型数据库:Redis、MongoDB、…
- 概念:数据库服务器、数据库、数据表、一条数据(记录)、一列数据(字段)
- SQL:Structured Query Language,结构化查询语言
- 命令:
- 数据定义语言(DDL):创建、删除、修改等
- 数据操作语言(DML):增、删、改
- 数据查询语言(DQL):查
- 数据控制语言(DCL):授权、取消授权
- 数据事务语言(DTL):开启事务、提交事务、操作回滚
数据定义语言(DDL)
- 查看库:show databases;,会显示连接的数据库服务器上所有的数据库
- 创建库:create database test;,创建数据库test
- 删除库:drop database test;,删除数据库test
- 选择库:use test;,选择数据库test
- 查看当前数据库:
- show tables;
- select dabases();
- 查看表:show tables;,查看当前数据库下的所有数据表
- 创建表:create table user(username varchar(20), password char(32));
- 查看表结构:desc user;
- 查看创建方式:
- 查看库:show create database test;
- 查看表:show create table user;
- 删除表:drop table user;
- 指定字符集及存储引擎:
- 创建时指定:create table user()engine=InnoDB default charset=utf8;
- 修改配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf
…
[mysqld]
…
-字符集
character-set-server=utf8
-存储引擎
default-storage-engine=INNODB
必须重启服务后才会生效
- 修改表结构alter
- 修改字段类型:alter table user modify username varchar(32);
- 修改字段名称:alter table user change password pwd char(50);
- 添加新的字段:
- 默认在末尾添加:alter table user add age int(3);
- 指定字段后添加:alter table user add email varchar(30) after pwd;
- 在开头进行添加:alter table user add id int(11) first;
- after、first也可用于modify、change操作
- 删除指定字段:alter table user drop age;
- 修改表的名字:alter table user rename new_user;
数据类型
- 整型
符号 说明
tinyint 1个字节
smallint 2个字节
mediumint 3个字节
int 4个字节
bigint 8个字节
需要指定位数,如:int(11) - 浮点数
符号 说明
float(m, d) 单精度浮点型,4个字节,m表示总位数,d表示小数位数
double(m, d) 双精度浮点型,8个字节,用法同上
decimal(m, d) 以字符串的形式存储浮点数,多用于金融相关应用 - 字符串
符号 说明
char 定长字符串,0~255个字节
varchar 变长字符串,0~65535个字节
需要指定长度, 如:varchar(20) - 时间日期
符号 说明
date 日期,格式:2019-04-01
time 时间,格式:14:36:52
datetime 日期时间,格式:2019-04-01 14:36:52
timestamp 时间戳
year 年,只占用一个字节,年份1901-2155 - 复合类型
符号 说明
set 集合类型,格式:set(s1, s2, …, s63),最多63,0表示错误
enum 枚举类型,格式:enum(e1, e2, …, e65535),最多65535,0表示错误 - 字段修饰
符号 说明
unsigned 无符号数
zerofill 高位填充0,防止出现负数
default 默认值
not null 不能为空
auto_increment 自动增加1,用于整型字段,经常集合主键一起使用 - 字符集
- 查看所有支持的字符集:show character set;
- 存储引擎
- 查看所有的存储引擎:show engines;
- 常用存储引擎:InnoDB、MyISAM
存储引擎 说明
InnoDB .frm表结构信息,.ibd表数据信息
MyISAM .frm表结构信息,.MYD表数据信息,.MYI表索引信息 - 说明:
- 配置选项datadir决定了数据库存放的位置
- 一个数据库对应存储目录中的一个文件夹
- 索引管理
- 说明:简介理解就是一本书的目录,提高读取效率,但也不是越多越好。
- 分类:
索引 说明
普通索引 index,最基本的索引
唯一索引 unique,修饰的字段不能有重复的值
主键索引 primary key,是一个特殊的唯一索引,一张表最多只能有一个字段
全文索引 fulltext,对全局数据添加索引 - 示例:
-添加索引
alter table new_user add index(email);
alter table new_user add unique(username);
alter table new_user add primary key(id);
-删除索引
alter table new_user drop index email; - 创建表示指定索引:
create table user(
id int auto_increment,
name varchar(20),
primary key(id),
unique(name)
)engine=innodb default charset=utf8;
数据操作语言(DML)
- 说明:在绝大多数的数据库操作中,执行的都是增删改查操作(CURD)。
- 准备:准备一张用于数据测试的表star
create table star(
id int auto_increment,
name varchar(20) not null,
money float not null,
province varchar(20) default null,
age tinyint unsigned not null,
sex tinyint not null,
primary key(id)
)engine=innodb default charset=utf8; - 插入数据
- 方式一:不指定字段,添加数据时需要指定所有的字段,如:
insert into star values(1, ‘xxx’, 5000000, ‘河南’, 18, 1);
可以一次性插入多条数据,每条数据都需要使用一个()包括起来,之间使用逗号分割 - 方式二:指定字段,只需要传递指定字段的值,通常使用这种方式
insert into star(name, money, age, province, sex)
values(‘yyy’, 8000000, 34, ‘上海’, 2);
insert into star(name, money, age, province, sex)
values (‘AAA’, 6000000, 32, ’ 河北’, 2),
(‘HHH’, 3000000, 23, ‘江苏’, 1);
插入数据的字段值与前面指定的顺序要一致,与数据表中的字段顺序无关。 - 说明:插入数据时,可以不要传递的字段
- 自增的字段
- 有默认值的
- 可以为空的
- 修改数据
- 示例:update star set age=24, money=7000000 where id=1;
- 警告:修改操作一定不要忘记添加条件,否则后果自负。
- 删除数据
- 示例:delete from star where id=4;
- 警告:删除操作一定不要忘记添加条件,否则后果自负。
- 使用:基本不会做物理删除,大多使用逻辑删除(设置某些字段的值)。
- 查询数据:select * from star;