1.基本的命令行操作
-- 连接数据库
mysql -uroot -p123456
-- 修改用户密码
update mysql.user set authentication_string = password('123456') where user = 'root' and Host = 'localhost';
-- 刷新权限
flush privileges;
-- 查看所有数据库
show databases;
-- 切换数据库
use `数据库名`;
-- 查看数据库下所有表
show tables;
-- 查看表信息
describe `表名`;
-- 退出连接
exit;
-- 单行注释
/*
多行注释
*/
DDL: 数据库定义语言
DML: 数据库操作管理语言
DQL: 数据库查询语言
DCL: 数据库控制语言
2.操作数据库
mysql关键字不区分大小写
2.1 创建数据库
create database [if not exists] databaseName;
2.2 删除数据库
drop database [if exists] databaseName;
2.3 使用数据库
-- 如果数据库名、表名、字段名是关键字,我们必须要使用 ``
use `数据库名`;
2.4 查看数据库
show databases;
2.5 查看创建数据库的语句
show create database `库名`;
2.6 查看创建表的语句
show create table `表名`;
2.7 查看表结构信息
desc `表名`;
3. 列的数据类型
3.1 数值
- tinyint 十分小的数据 1个字节
- smallint 较小的数据 2个字节
- mediumint 中等大小的数据 3个字节
- int 标准的整数 4个字节
- bigint 较大的数据 8个字节
- float 浮点数 4个字节
- double 浮点数 8个字节
- decimal 字符串形式的浮点数(金融计算的时候,一般使用decimal)
3.2 字符串
- char 字符串固定大小的 0~255
- varchar 可变字符串 0~65535
- tingtext 微型文本 2^8-1
- text 文本串 2^16-1
3.3 时间日期
- date YYYY-MM-DD 日期格式
- time HH:mm:ss 时间格式
- datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
- timestamp 时间戳 1970.1.1 到现在的毫秒数
- year 年份
3.4 null
- 没有值,未知
- 注意:不要使用null进行运算,结果为null
4.数据库的字段属性
- Unsigned (无符号的整数) : 声明了该列不能为负数
- zerofill (填充0) : 不足位数的,使用0来填充
- 自增: 自动在上一条记录的基础上 +1 (默认),通常用来设计唯一的主键,必须是整数类型。也可以自定义设计主键自增的起始值
- 非空:假设设置了非空,如果在插入时不给它赋值,就会报错。
- 默认:设置默认值
5. 拓展
在实际开发中,每个表中必须包含以下字段
- id 主键
- version 乐观锁
- is_delete 伪删除
- create_time 创建时间
- update_time 修改时间
6. 创建数据库表
-- 表的名称和字段尽量使用``括起来
-- auto_increment 自增
-- comment 注释
-- primary key 主键,一般一个表只有一个主键
-- engine 引擎
-- charset 编码集
create table if not exists `student`(
`id` int(4) not null auto_increment comment '学号',
`name` varchar(10) not null default '匿名' comment '姓名',
`sex` varchar(2) not null default '女' comment '性别',
`pwd` varchar(10) not null default '123456' comment '密码',
`birthday` datetime default null comment '出生日期',
`address` varchar(20) default null comment '地址',
`email` varchar(20) default null comment '邮箱',
primary key(`id`)
)engine=InnoDB default charset=utf8 comment='学生表';
7.数据表的类型
7.1 常见的两种 InnoDB(默认) 和 MyISAM
7.2 InnoDB 和 MyISAM的区别
MYISAM | InnoDB | |
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为MyISAM的2倍 |
7.3 常规使用操作:
- MyISAM 节约空间,速度较快
- InnoDB 安全性高,事务的处理,多表多用户操作
7.4 在物理空间存在的位置
所有的数据库文件都存在data目录下。
本质:还是文件存储。
7.5 Mysql引擎在物理文件上的区别
- InnoDB 在数据库表中只要一个*.frm文件,以及上级目录下的ibdata1文件
- MyISAM对应文件
- *.frm -- 表结构的定义文件
- *.MYD --- 数据文件
- *.MYI --- 索引文件
8. 数据库表的字符集编码
charset = utf8
不设置的话,会是mysql默认的字符集编码(不支持中文)
在my.ini文件中配置编码
character-set-server=utf8
9、修改、删除数据表字段
-- 修改表名
alter table 旧表名 rename as 新表名
-- 增加表字段
alter table 表名 add 字段名 列属性
-- 修改表字段(重命名、约束)
alter table 表名 modify 字段名 列属性 --修改约束
alter table 表名 change 旧字段名 新字段名 列属性 -- 字段重命名
-- 删除表字段
alter table 表名 drop 字段名
-- 删除表 (如果表存在则删除)
drop table if exists 表名
change 和 modify 的区别
-- change用来字段重命名,不能修改字段类型和约束
-- modify不用来字段重命名,只能修改字段类型和约束
10. mysql数据管理
10.1 外键
-- 添加外键
alter table 表名 add constraint 约束名 foreign key (外键字段) references 目标表(目标字段)
总结:不建议使用数据库外键,避免数据库表过多造成困扰,想使用外键可以通过程序来实现。
10.2 DML语言(insert , update , delete)
-- 插入语句
insert into 表名 (字段名1,字段名2,字段名3,......) values (值1,值2,值3,......)
-- 修改语句
update 表名 set 字段名1 = 值1,字段名2=值2,字段名3=值3 where 条件
--删除语句
delete from 表名 where 条件
-- 清空表数据
truncate 表名