MySQL-基本使用
客户端——服务器——数据库
数据库优点:
- 持久化存储
- 读写速度极高
- 保证数据的有效性
- 对程序支持性非常好,容易扩展
RDBMS:这是一个程序,用来管理数据库
SQL:结构化查询语言,是一种用来操作RDBMS的数据库语言
SQL语句不区分大小写
数据类型
- 使用数据类型的原则是:够用就行、尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间
- 常见的数据类型
- 整数:int、bit
- 小数:decimal
- 字符串:varchar、char
- 日期时间:date、time、datetime
- 枚举类型(enum)
- 特别类型
- decimal 表示浮点数,如 decimal(5,2) 表示共存 5 位数,小数占 2 位。
- char 表示固定长度的字符串,varchar 表示可变长度的字符串
- 字符串 text 表示存储大文本,字符大于 4000 是推荐使用
- 对于图片、音频、视频等文件,不存储在数据库中 ,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
- unsigned 整数无负数类型
- 约束
- 主键 primary key:物理上存储的顺序
- 非空 not null:此字段不允许填写空值
- auto_increment: 自动增长
- 惟一 unique:此字段的值不允许重复
- 默认 default:当不填写此值时会使用默认值,如果填写时以填写为准
- 外键 foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
- 外键不推荐使用
数据库的操作命令
- ENGINE=InnoDB 表示使用该引擎
- 数据库支持函数
--操作
mysql -uroot -p密码; --登录数据库
exit/quit/ctrl + d -- 退出登录
show databases; --查看数据库
use 数据库名; --使用数据库
select version(); --查看数据库版本
select database(); -- 查看当前使用的数据库
create database 库名 charset=utf8; --创建数据库,并指定编码
show tables; --查看数据库中的所有表
create table 表名(列名 类型 约束); --创建数据表
insert into 表名 values(插入的数据); --向表中插入数据
select * from 表名; -- 查看表中所有内容
desc 表名; --查看表的结构
show create table 表名; -- 查看表的创建语句
drop database 数据库名; --删库跑路
drop table 表名; --删除数据表
--解决 windows 的 DOS 窗口中中文乱码
-- 查看MySQL内部设置的编码
-- 查看包含 character 开头的全局变量
show variables like "character%";
--解决方案
--1.在 DOS 窗口输入命令 ’chcp 65001‘ 可以将窗口编码格式变为 utf-8格式
chcp 65001
--2.修改内部编码。注意:退出DOS窗口就会失效,需要每次都重新配置
set names gbk;
--修改表
--alter 和 drop 不建议在工作中使用
alter table 表名 add 列名 类型; -- 添加字段
alter table 表名 change 原名 新名 类型及约束; --修改字段,重命名
alter table 表名 modify 列名 类型及约束; --修改字段,不重命名
alter table 表名 drop 列名; -- 删除字段
--增删改查
--增加
--自动增长项插入时可以填 0、null、default
--枚举项插入时可以根据枚举中的下标来指定,下标从 1 开始
insert into 表名 values(要插入的值 对于表结构); --全列插入
insert into 表名(列名,...) values(值,...); --指定列插入
--修改
update 表名 set 列名=要改成的值; --全列修改
update 表名 set 列名=要改成的值 where 指定修改; --指定修改
--删除
--物理删除 慎用
delete from 表名; --清空数据表 不要使用
delete from 表名 where 指定条件删除; --指定删除
--逻辑删除 一般使用
--给表中添加一个 is_delete 字段为 bit 类型 只有 0 和 1,
alter table 表名 add is_delete bit default 0;
update 表名 set is_delete=1 where 指定条件;
--查询
select * from 表名; --显示表中所有内容
select * from 表名 where 指定条件; --指定条件查询
select 列1 as 别名,列2 as 别名,... from 表名; --查询指定列,可以使用as起别名