我的mysql记事本

登陆
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的数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,451评论 0 13
  • 这一篇最主要是记录下命令,方便以后查找 使用Mysql 创建数据库 create database mysql_t...
    Treehl阅读 576评论 0 0
  • 1. 了解SQL 1.1 数据库基础 ​ 学习到目前这个阶段,我们就需要以某种方式与数据库打交道。在深入学习MyS...
    锋享前端阅读 1,062评论 0 1
  • 转载,觉得这篇写 SQLAlchemy Core,写得非常不错。不过后续他没写SQLAlchemy ORM... ...
    非梦nj阅读 5,397评论 1 14
  • 看完这本书心情有点沉重,初看书名以为很轻快很有活力。阿米尔童年一心为获得父亲的认可与独一的爱,因自己的懦弱和自私伤...
    清风自来zy阅读 297评论 0 0