本篇是关于MySQL的一些基础操作,包括创建、授权、数据的增删改查,还涉及引擎、枚举、集合以及主键、外键等。(复习自用)
一、创建
1.创建用户
create user'用户名' @'ip地址'identified by '密码'
# ip地址中出现%表示任意、所有
2.创建库
create database 库名;
3.创建表
create table 表名 (列名及约束)
eg:
create table t1 (
id int null /default 1/auto_increment primary key,
name char(10)
)engine=innodb default charset=utf8;
# null表示可以为空(不加默认不为空),default 1表示默认为1,auto_increment primary key表示自增和主键(一个表里只能有一个)。注意engine是引擎,便于插入中文。
二、授权
grant 权限 on 库.表 to '用户' @'ip';
eg: grant select,insert,update on dp1.t1 to 'alex'@'%';
eg: grant all privileges on dp1.t1 to 'alex'@'%';
# all privileges表示所有权限但不包括授权
#末尾加with grant option,表示可将权限传递
收回权限:revoke all privileges on dp1.t1 to 'alex'@'%';
三、数据的处理
1. 插入
insert into 表名<列名(可多个 逗号隔开)> value <内容(对应列名)>;
2. 删除
删数据:delete from 表名 where 删除条件
删除表/库:drop table 表名 / drop table if exists 表名;drop databases 库名
清空表:delete table 表名;# 内容会删但自增不归一,会接下去
truncate table 表名;# 删除且自增归一(也更快)
3. 修改
update t1 set age=18; # age全改为18
update t1 set age=18 where age=17; # age=17的改为18
4. 查询
查数据库:show datebases;
查库里面:ues 库;
select 列名(可多个) from 表名;
查当前数据库下的所有表的名称:show tables
查表是如何创建的:show create table 表名
查表包含哪些字段:desc 表名
四、数据与时间的类型
1. 数据类型
数字:整数 tinyint、int、bigint(范围从小到大) 小数 float、double、decimal(准确)
字符串:char()、varchar()、text
#char(10)会自动填补空位 长度一致(查询时速度快),varchar(10)不自动填补(节省空间),前两个最多长度255个,text 最多65535个
#创建数据表时定长的列往前放
#上传文件:文件存硬盘,db存路径
2. 时间类型
最常用:datetime 表示年月日时分秒 yyyy-mm-dd hh:mm:ss
五、枚举与集合
1. 枚举
enum('a','b','c','d')
#只能是括号内的内容,即只能是a或b或c或d
2. 集合
set('a','b','c','d')
#括号内的任意组合均可,例如a或acd都可
六、主键与外键
1. primary key主键
能作为唯一标识的属性组(只能有一个)
约束:不能重复且不能为空
加速查找
2. 外键
用来和其他表建立联系用,外键是另一表的主键(可有多个,可重复可为空)
constraint 外键名称 foreign key (主表的列) references 从表(列)
节省空间
保证数据一致性
eg:将部门名称用数字代替,以节约空间
create table userinfo(
uid bigint auto_increment primary key,
name varchar(32),
department_id int,
constraint fk-user-depar foreign key ("deparment_id") references department('id')
)engine=innodb default charset=utf8;
create table department(
id bigint auto_increment primary key,
title char(15)
)engine=innodb default charset=utf8;