mysql知识点回顾
Posted 铠甲巨人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql知识点回顾相关的知识,希望对你有一定的参考价值。
回顾mysql中的常用知识点
上图为win版本启动关闭服务方式。
连接mysql命令:mysql -u alex -p
查看所有数据库:show databases;
use db_name ;切换数据库
show tables; 显示所有表
select * from 表名;
select name,age,id from 表名;
连接:
默认:用户root
创建用户:
create user \'alex\'@\'192.168.1.1\' identified by \'123123\'; identified 设置密码
create user \'alex\'@\'192.168.1.%\' identified by \'123123\'; %代表任意
create user \'alex\'@\'%\' identified by \'123123\'; 所有ip
用户管理
创建用户
create user \'用户名\'@\'IP地址\' identified by \'密码\';
删除用户
drop user \'用户名\'@\'IP地址\';
修改用户
rename user \'用户名\'@\'IP地址\'; to \'新用户名\'@\'IP地址\';;
修改密码
set password for \'用户名\'@\'IP地址\' = Password(\'新密码\')
PS:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议)
授权
权限 人
grant 权限
grant select,insert on db1.t1 to \'alex\'@\'%\' ;
设置alex只能查看db1数据库的t1表
grant all privileges on db1.t1 to \'alex\'@\'%\' ;
alex除了grant以外的所有权限都可以
revoke all privileges from db1.t1 to \'alex\'@\'%\' ;
取消这条权限
show grants for \'用户\'@\'IP地址\' -- 查看权限
grant 权限 on 数据库.表 to \'用户\'@\'IP地址\' -- 授权
revoke 权限 on 数据库.表 from \'用户\'@\'IP地址\' -- 取消权限
SQL语句规则
操作文件夹(操作数据库)
create database db2;
create database db2 default charset utf8; 数据库默认utf8
show databases;
drop database db2;
操作文件(操作表)
show tables;
create table t1(id int,name char(10)); 创建表,id,name字段,name限制10
个字符,超出取前十个。
create table t1(id int,name char(10)) default charset=utf8; 表默认是utf8
create table t1(
#列名,类型,null,
#列名,类型,not null,不可以为空
#列名,类型,not null,default 1,
#列名,类型,not null,auto_increment,自增
id int,
name char(10)
) engine=innodb default charset=utf8; 表默认是utf8,引擎默认是innodb
select * from t1;
innodb 支持事务,可以回滚,原子性操作。
myisam 不支持事务
auto_increment 表示:自增
primary key:表示,约束(不能重复,且不能为空);加速查找,
一个表里只能有一个自增列,只能有一个主键。但是主键不一定是一行。
清空表:
delete from t1; 清空表,新增数据的自增id从之前的接着。
truncate table t1;清空表,自增id从头开始。
删除表:
drop table t1;
查看表结构以及类型:
desc tabename;
查看表是如何创建的:
show create table tablename;
show create table tablename \\G; 加一个\\G 可以去掉空格
自增:
通过命令 更改下次插入数据时,自增ID的值:
alter table tablename AUTO_INCREMENT=13;更改下次插进来数字,自增主键为13
mysql中自增的步长
操作文件内容(操作内容)
插入数据:
insert into t1(id,name) values(1,\'egon\');
删除数据:
delete from t1 where id<6
修改:
update t1 set age=18; 将age列全部修改为18
update t1 set age=18 where age=17; 将age为17的改为18
查看数据:
select * from t1;
create table t3(id int auto_increment primary key,name char(10)) default charset=utf8; 设置id为主键 并自增。
insert into t3(name) values(\'abcdef\'); 所以插入数据的时候只需要插入name字段即可。
数据类型
数字
tinyint
int
unsigned 表示创建表的时候字段属性没有符号(比如负号)
signed 表示有符号的
bigint
以上三种就是长度的区别
FLOAT
只能表示不太精准的小数,如果长度不大,可以使用
DOUBLE
只能表示不太精准的小数,如果长度不大,可以使用
decimal
该类型小数非常精准,因为内部原理是将长的小数按字符串存储的。
decimal(10,5) 10代表总位数,5代表小数点后几位
bigint支持的数字的大小范围为:
19位,存电话号码等。
有符号范围:-9223372036854775808 到 9223372036854775807
int支持的数字范围为:
10位,
有符号范围:-2147483648 到 2147483647
无符号范围:0-4294967295
字符串
char(10)
如果字符没有占满,则会自动填充至10个字符,比如填充空格
varchar(10)
如果没有填满,在硬盘中只会占用实际字符长度,节省空间,查找速度没有char快11
char和varchar最高只能存储255个字符
text可以存储65535个字符
如果更多的内容,需要写到文件中,将路径写到数据库。
优化建议:创建表时,将定长的数据往前放,变长的往后放。
时间类型
DATETIME
枚举
enum
相当于给插入数据的时候规定了一个选项
单选字符串数据类型,适合存储表单界面中的“单选值”。
设定enum的时候,需要给定“固定的几个选项”;存储的时候就只存储其中的一个值。
设定enum的格式:
enum("选项1","选项2","选项3",...);
实际上,enum的选项都会对应一个数字,依次是1,2,3,4,5...,最多有65535个选项
使用的时候,可以使用选项的字符串格式,也可以使用对应的数字。
SET规定,只能插入a,b,c,d的任意组合
多选字符串数据类型,适合存储表单界面的“多选值”。
设定set的时候,同样需要给定“固定的几个选项”;存储的时候,可以存储其中的若干个值。
设定set的格式:
set("选项1","选项2","选项3",...)
同样的,set的每个选项值也对应一个数字,依次是1,2,4,8,16...,最多有64个选项
使用的时候,可以使用set选项的字符串本身(多个选项用逗号分隔),也可以使用多个选项的数字之和(比如:1+2+4=7)
=====================================================================================
外键
create table userinfo(
uid bigint auto_increment primary key,
name varchar(32),
department_id int,
constraint fk_user_depart foreign key ("department_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;
外键的名字,上面标红处不能与别的外键重名,建议用表_表这种起名
主键:
上图为主键的两种写法。
一个表只能有一个主键,主键可以由多列组成。
以上是关于mysql知识点回顾的主要内容,如果未能解决你的问题,请参考以下文章