美文网首页
我的mysql记事本

我的mysql记事本

作者: Juha | 来源:发表于2019-12-17 17:01 被阅读0次

登陆
mysql -uroot -p

权限问题
分配权限
分配只读权限:
GRANT SELECT ON . TO 'username'@'%' IDENTIFIED BY "password" WITH GRANT OPTION;
flush privileges;//刷新权限

分配所有权限:
GRANT ALL PRIVILEGES ON . TO 'username'@'%' IDENTIFIED BY "password" WITH GRANT OPTION;
flush privileges;//刷新权限

这里的.的意思,第一个是指数据库名,第二个是指数据表名,.指的是所有数据库下的所有数据表。

查看用户权限
show grants for 授权用户名@;
这里如果不是%那么需要把指定IP加上。
默认情况下,show grants for 授权用户名 <=>show grants for 授权用户名@%
会话变量&全局变量

创建表,所有内容都写在括号里,每个字段的信息用逗号分隔
create table database_name.table_name
id varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT UUID() COMMENT "",

)charset utf8 comment "xxxx";

desc table;
描述表,显示表的详情

order by
select field1,field2 from table1 order by field1 acs/desc;
acs 升序,默认升序,
desc降序

select field1,field2 from table1 order by field1 acs/desc ,field2 acs/desc;
acs 升序,默认升序,
desc降序
by后面是两个字段,前面一个优先级高,后面的优先级低,只有当前面的这个字段相等的时候才会按照后面的进行排序

select field1,field2 from table1 order by 1/2 acs/desc;
1是指这里的select后面第一个出现的字段,这个没有上面的健壮

数据处理函数,单行处理函数

select upper(filed) from table as alias; //大写
select lower(filed) from table as alias; //小写
select substr(filed,start_index,length) from table as alias; //分片
select length(filed) from table as alias;//长度
select trim(filed) from table as alias;//去空格
select round(filed,num) from table as alias;//四舍五入,num表示保留几位小数
select rand() //生成随机数

数据库中,有null参与运算的,结果一定是null
ifnull(filed,num)如果filed字段为空,那么默认值为num

group by 分组查询语句
就是分组,类似于excel里的筛选功能,一般使用起来是这样的:
select count(*),filed_name from table_name gruop by filed_name
就是把所有的记录记个数,然后这里的filed_name字段的每个值有多少条记录就能够看到。

这里也可以进行重复值的筛选,需要用having子句,用法如下:
select count(),filed_name from table_name gruop by filed_name having count() >1

这里有一点需要注意,就是在进行where查询的时候,需要把where放在group by之前。

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
这里有三个参数,第一个是单位(YEAR、MONTH、DAY、HOUR、MINUTE、SECOND)

DATEDIFF(expr1,expr2)
两个参数,返回的值是两个日期的天数。

IF(expr1,expr2,expr3)
其中expr1是判断条件,expr2 是正确的值,expr3是错误的值。

mysql中默认的join是inner join
join之后的where和on的区别,on是先筛选后连表,where是先连表后筛选
因此,on会带出null值而where不会

if子句中如果需要select,需要添加括号
select if(expr1,(selct filed_name1 from tablr_name where ...),(selct filed_name1 from tablr_name where ..))

使用select子句查询
这里的select子句需要对与子句进行一个名字的设置
select filed_name from ( sele * from table 1) as name【这里的as可有可无】

FIND_IN_SET(str,strlist)
找到str在strlist中的第几个
例如 FIND_IN_SET('a','a,b,c,a')
结果是1

一个if只能对应到一个 end if;

limit用法
limit offset,count

offset指的是偏移量,即从第几个开始取limit,默认情况下offset是0,即从头开始取。

根据列名【即字段名】查找表名
information.schema库里的columns表,通过column_name筛选字段名称,table_name即为表的名称

decimal用法
decimal(m,d)
m是数字的最大位数,他的范围是从1-65;
d是小数点后的位数,他的范围是0-30,并且不能大于m。

如果m被省略了,那么m的值默认为10,
如果d被省略了,那么d的值默认为0.

举例表示:

1、decimal(5,2) 所指代的范围是-999.99~999.99 数字的最大位数是5位,小数点右侧是2位,即有两位小数。

2、decimal(7,6)所指代的范围是-9.999999~9.999999 数字的最大位数是7位,小数点右侧是6位,即有六位小数。

字的位数和所占字节数,有以下对应表:

小数点左侧位数 数据结构所占的字节数
1–2 1
3–4 2
5–6 3
7–9 4

举例表示:
decimal(18,9)小数位左右各为9位数,此数据所占以上表格即为4字节整数位,4字节小数位;

decimal(20,6)整数位为14位,小数位位6位,此数据需要4个字节给整数位的9位和3字节给另外的5位整数,另外小数位需要3个字节,总共是4+3+3 = 11个字节。

decimal不能够存储以“+”、“-”和“0”开头的数据,如果是“+”开头momo默认存为正数,而“-”开头则不存储

union 集合查询
集合查询主要包括union并操作、intersect交操作和except差操作
这里的前提是,参与集合查询的,必须要列数相同,并且每列对应的数据类型也相同。

convert和cast
对于转换格式:
CAST(expr AS type)

CONVERT(expr,type)

convert还有一个用法,就是不同编码:
CONVERT(expr USING transcoding_name)
这里的transcoding_name可以是utf8等

查询特定字符在一个字符串字段内的位置
position("特定字符串" IN "目标字段/字符串")

case的使用,case有两种使用方法:
1、case field_name when 'xx' then 'xxx' when 'xx1' then 'xxx1' else 'yyy' end

2、case when filed_name = 'xx' then 'xxx' when filed_name = 'xx1' then 'xxx1' else 'yyy' end

两种用法都是对filed_name进行重新赋值

如何查询数据中某个字段是空值或者是null的记录

使用ifnull函数
ifnull( filed_name,'') = ''
这里filed_name这个字段只有是null或者''空值的时候,才能满足条件。

ROW_COUNT()

指的是update语句或者delete语句影响了多少条数据,不包括select和insert;
如果返回值是0,说明执行了语句,但是并没有影响数据,说明变动前后数据一致;
如果返回值大于0,则说明影响了几条数据;
如果返回值为-1,说明并没有执行update /delete语句。

FOUND_ROWS()

这个函数仅表示select了多少语句;并且不包括limit的里面的。但是我实验好像不是这样的,一直都是345,不知道为什么。
官网说明

replace into与insert into的区别

最简单的理解,是replace into会对primary key进行检查,如果已经存在相同的primary key的话将把原数据删除,新增这条重复的primary key的数据。

相关文章

  • 我的mysql记事本

    登陆mysql -uroot -p 权限问题分配权限分配只读权限:GRANT SELECT ON . TO 'us...

  • Windows下修改MySQL默认字符集

    1.在安装mysql的目录下找到my.ini文件,以记事本模式打开,添加以下内容 2.重启mysql,Window...

  • Mysql操作记事本

    在mysql中做统计的时候,count()会扫描所有的行数,不管行的值是否为空,count('column nam...

  • 记修改my.ini文件后mysql无法启动问题

    我是用记事本直接修改my.ini文件后,mysql服务无法启动,网上找了好久未解决 报错:解决本地计算机上的MyS...

  • 笔记bug搬运mysql 8.0.19修改my.ini无法启动同

    mysql 8.0.19修改my.ini无法启动 修改之后ini文件后不要直接关闭!!!在记事本里点击另存为,编码...

  • 我的新记事本儿

    我的记事本儿用完了,妈妈昨天又给我买了一个新的记事本,上面图案是小猫的。 我的记事本是64K的小本儿,记事本的大部...

  • 我的记事本

    九月的第一天,太阳就早早出来了,家长开始忙碌了,小孩子开始朝气蓬勃的上学,日子按部就班正常的。 可能是一个人久了,...

  • 《记事本圆梦计划》内容分享(三)

    第三章 三种记事本,让梦想都实现!——梦想记事本、行动记事本、思考记事本 第一部分 梦想记事本(记事本中最重要的部...

  • 读书《你的时间有限,不要为别人而活》-02

    今天读第三章:三种记事本,让梦想都实现!使用梦想记事本、行动记事本、思考记事本。 要点: 「梦想记事本」:最重要,...

  • 正确在win10下正确配置MySQL

    1.新建配置文件 win10 安装mysql 需新增配置文件my.ini,新建记事本,输入以下内容并将后缀修改为i...

网友评论

      本文标题:我的mysql记事本

      本文链接:https://www.haomeiwen.com/subject/kyexrctx.html