当前位置: 首页 > news >正文

mysql数据库命令 单选_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的结果进行筛选显示

相关文章:

  • 为什么a链接不起作用了_考前必读:原理题难点——最高点是平衡点?催化剂为什么能提高产率?...
  • python随机数比大小_Python实现基于权重的随机数2种方法
  • dao interface运用_简单DAO层示例
  • python爬虫框架论文开题报告范文_基于Web爬虫系统设计开题报告
  • mysql中查询数字字符串很慢_mysql获取字符串中数字的查询语句
  • mysql的内存数据库_内存数据库
  • python 位运算与等号_Python-位运算符规则、原理与用法
  • java怎么给文件加密_如何利用JAVA对文档进行加密和解密处理,完整的java类
  • Java throws 不写_Java如何在没有throws签名的函数中手动抛出异常
  • java加载so文件_在Java运行时加载Linux .so文件
  • bootstrap java web_在java web 项目中 怎么部署BootStrap
  • java gc 收集器_3分钟了解:Java垃圾收集器GC 如何确定哪些是“垃圾”?
  • linux chown x权限mysql_linux 中更改权限命令chown,chmod,chgrp详解
  • python 动态规划设计leetcode_leetcode_动态规划_python
  • linux 下java开发_在 Linux 下搭建 Java 开发环境
  • [NodeJS] 关于Buffer
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • avalon2.2的VM生成过程
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • classpath对获取配置文件的影响
  • gitlab-ci配置详解(一)
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JS变量作用域
  • laravel with 查询列表限制条数
  • magento 货币换算
  • Spring-boot 启动时碰到的错误
  • SQL 难点解决:记录的引用
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 阿里云前端周刊 - 第 26 期
  • 第2章 网络文档
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 浏览器缓存机制分析
  • 树莓派 - 使用须知
  • 小程序测试方案初探
  • 原生 js 实现移动端 Touch 滑动反弹
  • 在Unity中实现一个简单的消息管理器
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​520就是要宠粉,你的心头书我买单
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ​一些不规范的GTID使用场景
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • #在 README.md 中生成项目目录结构
  • (C++17) optional的使用
  • (pojstep1.3.1)1017(构造法模拟)
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (ZT)薛涌:谈贫说富
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)