zoukankan      html  css  js  c++  java
  • MySQL常用命令

    MySQL常用命令

    一、用户管理

    当IP地址为一段时是可使用通配符%,即'192.1638.1.%'

    创建用户

    create user '用户名'@'IP地址' identfied by '密码';

    删除用户

        drop user '用户名'@'IP地址';

    修改用户

        remane user '用户名'@'IP地址';to '新用户名'@'IP地址';;

    修改密码

        set password for '用户名'@'IP地址'=password('新密码');

    二、用户权限:

    默认,什么都没有

    show grants for '用户名'@'IP地址'                          #查看权限

    grant 权限 on 数据库.表 to '用户名'@'IP地址'          #授权

    remove 权限 on 数据库.表 to '用户名'@'IP地址'      #取消授权

    allprivileges       #除了grant外的所有权限即除了不能给其他用户设置权限外,其他所有root具有的权限它都有

    select         #査权限

    数据库.表

    test.tb1         #只允许査test数据库中的tb1表

    test.*       #允许査test数据库中所有表

    *.*                 #允许查看所数据库和数据库里的所有表

          select,insert #査和插入数据权限

    三、SQL语句

    数据库级别

                  show databases ;           #查看当前Mysql都有哪些数据

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

               create database 数据库名 default charset utf8 collate utf8_general_ci;

               use 数据库名;                  #使用该数据库

               drop database 数据库名; #删除数据库

    表级别

                  show tables;                      #查看数据库中所有表

               desc  表名;                   #查看数据表的数据结构

               create table 表名(列名 数据类型,列名 数据类型)#创建表

                     eg:create table td1(id int,name varchar(20));

                     eg:create table 表名(

                                列名 类型 是否可以为空

                                列名 类型 是否可以为空

                          )engine=InnoDB default charset=utf8;

    a.默认值

    b.是否可以为空,为空设为null,不能为空设为not null

    c.自增列(一张表只能有一个,数字,必须是索引-主键)

    d.主键索引:

          一张表只能有一个主键,唯一不能重复,不能为null,一般情况下,自增列设置主键

    唯一索引:

               可以为null,一张表可以有多个唯一列

                --约束

               --索引,加速查找

    主键:

          不能为null、不能重复、一张表只有一个主键(可以多列组成主键)

          #一般用法:

               id int auto_increment primary key,

         e、外键:

          alter table 被限制表的表名 add constraint 外键名 foreign key 被限制表(被限制的列名) references 另一张表的表名(提供限制范围的列名)。

          其作用为:两张表建立约束,实现一对多

         f、数据类型:数值、时间和字符串

          数值 :

               bit   二进制

          整数:

               tinyint

               smallint

               int

               bigint        --上面四个的区别为各自的范围不一样

    小数:

               decimal   --精确的,保存的是原值

               float         --最不精确

               double    --不太精确

    字符串:

          char(m)         --定长字符串,保存时是以固定长度储存,比较占空间,查找速率快

          varchar(m)    --变长字符串,保存时最多可存储设定的值,查找速率慢

          text           --

          mediumtext

          longtext

          二进制数据:

          tinyblob,blob,mediumblob,longblob

          时间:

               DATE:

                     YYYY-MM-DD(1000-01-01/9999-12-31)

               TIME:

                     HH:MM:SS('-838:59:59'/'838:59:59')

               YEAR:

                     YYYY(1901/2155)

               DATETIME:

                     YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59)

               TIMESTAMP:

                     YYYYMMDD HHMMSS(1970-01-01 00:00:00)

         枚举和集合的区别:

          枚举是单选,集合是多选

    drop table 表名;                       #直接删除表

    delete from td1;                           #清空表内容,自增时会接着删除前的数值增加

    truncate table 表名;                    #清空表内容,速度快,自增回到原点

    修改表:

               添加列:

               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 外键名(形如:FK_从表_主表) foreign key 从表(外键列名)references 主表(主键字段);

               删除外键:

               alter table 表名 dropforeign key 外键名;

    数据行级别:

    a、增

          insert into 表名(列名,列名) values('值1','值2');   #一次性增加一条数据

          insert into 表名(列名,列名) values('值1','值2'),('值3','值4’);#一次性增加多条数据

          insert into 表1名(列名,列名) select 列名,列名 from 表2名;    #将表2中的数据插入表1

          eg:insert into tb1(name,age)select class,people from tb2;#将tb2中class和people列中的数据插入到tb1中的name和age列

          注意:插入数据时一定注意对应两列的数据类型要一致

          insert into 表名(列名,列名) select 列名,列名 from 数据所在的表名 where 条件;    #将表2中符合要求的数据插入表1

          eg:insert into tb1(name,age)select class,people from tb2 where id>2;     #将tb2中id大于2的class和people列中的数据插入到tb1中的name和age列

    b、删

          delete from 表名 where 条件;   #删除满足条件的数据行

          delete from 表名 where 条件1 and 条件2;   #删除满足条件1和条件2的数据行

          delete from 表名 where 条件1 or 条件2; #删除满足条件1或条件2的数据行

    c、改

          update 表名 set 列名=值;                    #将该表中指定列的值全部改为指定值

          update 表名 set 列名=值 where 条件;     #将该表中满足条件的指定列的值全部改为指定值 

                         

    d、査

          select * from 表名 ;               #查看该表内所有数据

          select 列名1,列名2 from 表名;    #查看该表中列名1和列名2的数据,显示时是以列名1和列名2的顺序显示,而非建表是的顺序

          select 列名1,列名2 from 表名 where 条件; #查看该表中满足条件的列名1和列名2的数据,显示时是以列名1和列名2的顺序显示,而非建表是的顺序

                         

    e、其他

    1、条件

          select * from 表名 where 条件;#查看该表满足条件的所有数据

          select * from 表名 where 条件1 and 条件2;  #查看该表同时满足条件和条件2的所有数据

          select * from 表名 where 条件1 or 条件2;#查看该表满足条件或条件2的所有数据

          select * from 表名 where 列名 between 值1 and 值2; #查看该表中指定列的值在值1和值2之间的所有数据

          select * from 表名 where id in(1,4,5); #查看该表中id是1,4,5的所有值

          select * from 表名 where id not in(1,4,5);      #查看该表中id不是1,4,5的所有值

          select * from 表名 where id in(select nid from 表2);#查看该表中id是表2中nid的所有值

    2、通配符

          select * from 表名 where user like 'sdf%';             #查看该表中user列中以sdf开头的所有值(多字符串)

          select * from 表名 where user like 'sdf_';             #查看该表中user列中以sdf开头的所有值(一个字符串)

          3、限制

               select * from 表名 limit 5;                #前5行

               select * from 表名 limit 6,5;              #从第6行开始的5行(不建议使用)

               select * from 表名 limit 5 offset 6;   #从第6行开始的5行(推荐使用)

          4、排序

               select * from 表名 order by 列名 asc ;                 #根据列从小到大排列

               select * from 表名 order by 列名 desc ;               #根据列从大到小排列

               select * from 表名 order by 列1 desc ,列2 asc;     #根据列1从大到小排列,如果相同则按列2从小到大排列

          5、分组

    将数据以某一列的相同值相互合并成一条数据。

          select * from 表名 group by 列名;  #以指定列将该表数据进行分组

          使用聚合函数:

          select age ,max(part),min(part),sum(part),count(part)from tb3 group by age; #以age列分组,max(part)中显示该分组中part列中的最大值,min(part)中显示该分组中part列中的最小值,sum(part)中显示该分组中又有part值相加的和,count(part)中显示该组是由几条数据合并的分组,

          select age ,max(part) as a,min(part) as b from tb3 group by age;    #以age列分组,a中显示该分组中part列中的最大值,b中显示该分组中part列中的最小值,

          select age ,count(part) from tb3 group by age having count(part)>2;  #显示出count(part)>2的以age为分组标准的数据

          6、组合

          select 列1 from 表1 union select 列2 from 表2;     #将表2中列2的数据在表1中列1的数据后面显示,默认会进行去重操作,如不想进行去重,则在union后面加上all

          7、连表

          select * from 表1 ,表2 where 表1.列1=表2.列2; #将表2中的数据根据表1.列1=表2.列2匹配后对应的显示在表1的右侧,以表1为基准

          select * from 表1 left join 表2 on 表1.列1=表2.列2 ;#将表2中的数据根据表1.列1=表2.列2匹配后对应的显示在表1的右侧,以表1为基准

          select * from 表1 inner join 表2 on 表1.列1=表2.列2;#两张表的数据根据表1.列1=表2.列2,匹配显示后,将包含null的行清除,实际上就是将left join的结果进行筛选显示

  • 相关阅读:
    WPF简单模拟QQ登录背景动画
    Bootstrap WPF Style,Bootstrap风格的WPF样式
    琴弦文字 - wpf行为
    值得注意的IsHitTestVisible
    WPF实现三星手机充电界面
    我的Android开发之路——ListView的使用
    我的Android开发之路——百度地图开源工具获取定位信息
    例题 线段树合并
    [PA2015]Siano 单调栈
    笔记 可持久化线段树
  • 原文地址:https://www.cnblogs.com/xshan/p/8157082.html
Copyright © 2011-2022 走看看