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;
 
外键的名字,上面标红处不能与别的外键重名,建议用表_表这种起名
 
主键:

 

上图为主键的两种写法。
一个表只能有一个主键,主键可以由多列组成。
 
 
 
 
 
 
 
 
 
 
posted @ 2018-03-02 11:06  铠甲巨人  阅读(189)  评论(0编辑  收藏  举报