【Mysql】基本命令(一)

数据库:

    show databases;      #显示数据库

    create database 数据库;   #创建数据库

    创建数据库时的编码制定:
      DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
      DEFAULT CHARACTER SET gbk COLLATE gbk_general_ci;

    use 数据库名;       #使用数据库
    drop 数据库名;       #删除数据库

数据表:

    show tables;       #显示表
    desc 表名;         #显示表的基本结构
    drop table 表名      #直接删除表
    delete from 表名     #清空表,自增会保留
    truncate table 表名    #清空表,速度快,自增回到原点
    select * from 表名;    #查看表

创建表:

 

create table 表名(

字段名 类型 是否可以为空 默认值,
); 
#创建表名 not null不可为空  null可以为空  defalut 默认值
ENGINE=InnoDB DEFAULT CHARSET=utf8
InnoDB引擎支持事务
事务 原子操作 回滚
两件事情同时操作就是一件事务 这个操作就叫做原子操作 任意一件事情失败则回滚

自增列(数字,必须是索引-主键)
主键索引:
  一张表只能有一个主键,可以有多列,唯一不能重复,不能为null 一般情况下,自增列设置主键
  id:1,2,3,4,5,6
唯一索引:
  可以为null,一张表可以有多个唯一列
  id:1,2,3,4,5,6,null
--约束
索引,加速查找
  create table xxx(nid int primary key,)
一个主键多列:
  create table xxx(nid int,name varchar(20)
  name varchar(20), age int,
  primary key (name, num)
  );
一般用法
  nid int auto_incrementprimary key

外键foreign key,一对多
  两张表建立约束
如例:公司数据库中 部门字段:人事部,销售部,IT部等等
可以建立另外一张表,专门用来给部门建立一个索引 如:1=人事部,2=销售部
将两张表建立约束
  create table b(nid int auto_increment primary key, department_name varchar(30))
  create table a(nid int auto_increment primary key, name varchar(20),department int)

添加外键:alter table 从表 add constraint 外键名称 foreign key 从表(外键字段) references 主表(主键字段);
alter table a add constraint fk_a_b foreign key a(department) references b(nid);
删除外键:alter table 表名 drop foreign key 外键名称
alter table a drop foreign key fk_a_b

还可以建立表时直接建立外键:
create table b(nid int auto_increment primary key, department_name varchar(30))
create table a(nid int auto_increment primary key, name varchar(20),department int,
constraint fk_a_b foreign key(department) references b(nid))

 

修改表:

添加字段:alter table 表名 add 字段名 类型
删除字段:alter table 表名 drop column 字段
修改字段:alter table 表名 modify column 字段 类型     -# 类型
     alter table 表名 change 原字段 新字段 类型    -# 字段,类型

添加主键:alter table 表名 add primary key(列名)
删除主键:alter table 表名 drop primary key
alter table 表名 modify 列名 int, drop primary key

添加外键:alter table 从表 add constraint 外键名称 foreign key 从表(外键字段) references 主表(主键字段);
删除外键:alter table 表名 drop foreign key 外键名称

添加默认值:alter table 表名 alter 列名 set default 数值
取消默认值:alter table 表名 alter 列明 drop default

基本命令:

增:
  insert into tabl(name,age) values('',10),('',12)              #可以像这样插入多行数据
  insert into tab1(name,age) select(name,age) from tab2            #将表2中的name age字段插入到了表1中的name age字段 这样插入如果遇到可以转换的类型则转换插入,如果不能则报错
  insert into tab1(name,age) select(name,age) from tab2 where nid<3      #添加一个条件

删:
  delete from tab1 where nid>3 and age<13

改:
  update tab1 set age=1
  update tab1 set age=1,name='xxxx' where nid>3
查:
  select * from tab1 where nid<3
  select name,age,nid from tab1 where nid<3
其他:
  条件:
    and             #并且
    between x and y       #范围
    in(x,x,x,x)          #包含
    not in(x,x,x)           #不包含
  通配符:
    % 任意多个字符
    _  任意一个字符
  分页limit:
    select * from tab1 limit 0,10            #从第0行开始取10条
    select * from tab1 limit 10 offset 0        #从第0行开始取10条 推荐用这个
  排序:
    select * from tab1 order by nid asc         #从小到大
    select * from tab1 order by nid desc         #从大到小
    select * from tab1 order by nid desc,age desc    #遇到相同的则以第二个排序为标准
  分组:
    group by 字段
    聚合函数:对聚合条件筛选必须用 having
      max()
      min()
      sum()
      count()
  组合:拿两张表的数据
    select nid from a union select name from b       #会去重
    select nid from a union all select name from b     #显示所有

  链表:
    select * from a,b where a.x = b.x                #显示ab张表,条件a表x=b表x,意思是将b表x等于a表x的全部数据跟到a表后面 。
    select * from a left join b on a.x = b.x
    select * from a right join b on a.x = b.x
    select * from a inner join b on a.x = b.x           #不会显示NULL 

 

 

导出现有数据库数据:

  mysqldump -u 用户名 -p 数据库名称 > 导出文件路径    # 结构+数据

    Enter password:                   # 密码

  mysqldump -u 用户名 -p -d 数据库名称 > 导出文件路径   # 结构

    Enter password:                   # 密码

 

导入现有数据库数据:

  mysql -u 用户名 -p 数据库名称 < 文件路径

    Enter password:                   # 密码

 

 

posted @ 2020-07-22 12:35  Shuranima  阅读(122)  评论(0)    收藏  举报