一 数据库的一些简单操作
1.1 数据库的两种登录方式
1、当要连接本地的数据库时
(1)mysql -uroot -p“密码” -S /xx/xxx/x(想要连接的数据库的套接字程序文件)
(2)mysql -uroot -p“密码” -P “端口”(想要连接的数据库的端口)
2、当要连接外地的数据库时
在1的基础上带上-h ip地址
1.2 数据库进去后修改密码的操作
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('3307');
FLUSH PRIVILEGES;
1.3 数据库的创建
create database 数据库名 charset utf8mb4;
1.4 数据库操作的增删改查
1、库
增
create database db1 charset utf8mb4;
改
# 改数据库没办法改名字,但是可以改字符编码
alter database db1 charset gbk;
查
show create database db1;
删
drop database db1;
--------------------------
2、表
create database db1;
use db1;
增
create table t1(id int,name varchar(16));
改
# 改表的字段,不能改内容
alter table t1 modify name varchar(20);
查
# 查看当前库下的表都有哪些
show tables;
# 查看表t1的内容
desc t1;
# 展示创建的表t1
show create table t1;
删
drop table t1;
------------------------------
3、记录
create database db1;
use db1;
create table t1(id int,name varchar(16));
增
insert db1.t1 values(1,"egon"),(2,"tom"),(3,"jack");
insert db1.t1(name,id) values("lili",4);
insert db1.t1(id) values(5);
改
update db1.t1 set name="JACK" where id=3;
查
select * from db1.t1;
select id,name from db1.t1;
select id,name from db1.t1 where id=3;
select id,name from db1.t1 where id<3;
删
delete from db1.t1 where id=3;
# 清空表
delete from db1.t1; ------不要这么做,无法做到彻底还原
truncate db1.t1;
1.5 表语法
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
注意:
1、在同一张表中,字段名是不能相同的
2、宽度和约束条件可选
3、字段名和类型是必须的
二 系统数据库
- information_schema:虚拟库,不占用磁盘空间,存储的数据库启动后的一些参数,如用户表信息、列表信息、权限信息、字符信息
- performance_schema:MYSQL5.5开启新增的第一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发送到各种事件、锁等现象
- mysql:授权库,主要存储系统用户的权限信息
- test:MYSQL数据库系统自动创建的测试数据库
三 存储引擎
3.1 常用的存储引擎有
-
InnoDB(最常用)
特点: 1、事务:一组操作,要么全部成功,要么全部失败。 2、行级锁:innodb支持行级锁,myisam是表级锁,锁的颗粒度越小并发能力越强 行级锁 = 修改数据时,只锁住那一行,其他行不受影响。 表级锁 = 修改数据时,锁住整张表,谁都别想动。 3、外键:外键 = 强制要求:A 表的某个字段的值,必须在 B 表的主键里存在。 t2.frm:表结构 t2.ibd:数据+索引 -
MyISAN
t1.frm:表结构 t1.MYD:数据 t1.MYI:索引 -
MEMORY
-
BLACKHOLE
3.2 修改存储引擎innodb,使其各表独立为一个文件夹
修改innodb引擎内容,让其使用此引擎保存的表都自己为一个文件夹,而不是全部都放在一个文件夹
在数据库的配置文件加入如下内容
vim /etc/my.cnf
[mysqld]
default-storage-engine=innodb
innodb_file_per_table=1
四 数据的类型
4.1 整数类型
只用int即可
int()内的是显示宽度
其他的才是限制宽度
4.2 浮点数类型
浮点类型:FLOAT(255,30) DOUBLE(255,30) DECIMAL(65,30)
这几个精准度由低到高,但是FLOAT在日常中足够使用,除非对精度要求极高的场景
作用:存储薪资、身高、体重、体质参数等
浮点数后面(m,n)内的参数中m是数字总个数,n是小数点后个数。m最大值为255,n最大值为30
4.3 位类型(了解)
BIT可以用来存放多位二进制数,M范围从1~64,如果不写默认为1位
注意:对于位字段需要使用函数读取
bin() 显示为二进制
hex() 显示为十六进制
4.4 日期类型
create table t13(
id int,
name varchar(10),
reg_time datetime, #年月日时分秒
class_time time, #时分秒
born_year date #年月日
);
注意:
1、datetime的日期范围是1001-9999年,timestamp的时间范围是1970-2038年
2、datetime的存储时间与时区无关,timestamp存储时间与时区有关,显示的值也依赖与时区
3、datetime使用8字节的存储空间,timestamp只用4字节,因此空间利用率更高
4、datetime默认值为null,timestamp的字段默认不为空,默认值为当前的时间
4.5 字符串类型
1、char定长
假如定为4个字符,那么如果输入的字符数不足4个,会被空格来补齐
这样,每次读取也是4个这样读取,保证数据准确性
2、varchar变长
varchar会在存储的字符串前面加一个数据头,里面存储着这个varchar类型的字符串是多少位
3、面试问
关于这二者用谁,要分情况考虑,大多数情况下是用varchar
4.6 枚举类型与集合类型
字段的值只能在给定范围中选择,如单选框,多选框
enum单选,只能给定的范围内选一个值
set多选,在给定的范围内可以选择一个或者多个值
五 表的完整性约束
约束条件和数据类型的宽度一样,都是可选参数
作用:用于保证数据的完整性和一致性
主要分为
1、PRIMARY KEY(PK) 标识该字段为该表的主键,可以唯一的标识记录
主键: 能用主键字段作为查询条件就不用其它字段
两大用途:
(1)约束效果:not null unique
(2)加速查询
2、FOREIGN KEY(FK) 标识该字段为该表的外键
3、NOT NULL 标识该字段不能为空
4、UNIQUE KEY(UK) 标识该字段的值是唯一的
5、AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键)
6、DEFAULT 为该字段设置默认值
UNSIGNED 无符号
ZEROFILL 使用0填充