第一阶段、MYSQL总结

一、数据完整性

如何保证数据完整性:数据类型+约束

数据类型:

1.使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间
2.常用类型:
整数:int,bit (只有0,1)
小数:decimal
字符串:varchar,char
日期类型:date, time,datetime
枚举类型:enum
注意事项:
Decimal表示浮点数,Decimal(5,2)表示5位数,小数占2位
Char表示固定长度的字符串
Varchar表示可变长度的字符串

约束条件:

主键约束 primary key
唯一性约束:unique
外键约束:foregin key
非空约束:not null

二、数据表的操作:

1.创建表:

Create table 表名(
字段1 字符类型 约束,
字段2 字符类型 约束,
);
Auto_increment 为自动增长
unsigned表示无符号的意思,也就是非负数,只用于整型.

2.删除表:

Drop table 表名

3.修改表:alter table 表名 修改方式

3.1 修改表名:Alter table 原表名 rename to 新表明;
3.2 添加字段:alter table 表名 add 列名 数据类型 约束;
3.3 修改字段(不重命名):alter table 表名 modify 列名 数据类型 约束;
3.4 修改字段(重命名):alter table 表名 change 原列名 新列名 数据类型 约束;
3.5 删除字段:alter table b表名 drop 列名

4.查看表:

4.1 查看表的创建语句:
Show creare table 表名;
4.2 查看当前数据库中所有的表格
Show table;
4.3 查看表结构;
Desc 表名;

三、数据的操作:增删查改:

1.增加:

1.1 全列插入:注意值的顺序和表中的字段的顺序一一对应
Insert into 表名 values(…)
设置了自动增长的字段,可以使用0或者 default 或者 null 来占位,实现自动排序和插入
枚举型的字段,可以填写枚举值数字位置
有默认值的字段,取默认值用 default

2.删除:

Delete from 表名 where 条件
一般不删除数据,如果需要可以使用逻辑删除,本质是修改操作
Update students set idselete = 1 where id=1;

3.修改

Update 表名 set 列1 = 值1,列2 = 值2 where 条件

四、Mysql 查询

1.基本语句: select 字段名 from 表名

在select后面列前使用distinct可以消除重复的行

2.条件查询:

select * from 表名 where 条件:
Where后面支持多种表示方式,也称运算符,包括
比较运算、模糊查询、范围查询、空判断、逻辑运算
2.1 比较运算:>、<、=、!=(不等于)
2.2 模糊查询:
select * from 表名 where 字段名 like “%或者
%表示任意多个字符,
表示一个任意字符
2.3 范围查询
In();表示在一个非连续的范围内
Select * from 表名 where 字段名 in(1,2,3)
Between …and …:表示在一个连续的范围内
Select * from 表名 where 字段名 between … and …
2.4 空判断
Is null 就是判断空
2.5 逻辑运算,组合条件
使用 and 、or、not对多个查询条件进行组合
优先级由高到低的顺序为:小括号,not,比较运算符,逻辑运算符
and比or先运算,如果同时出现并希望先算or,需要结合()使用

3.数据排序

使用order by 字段1 desc,字段2 asc
Desc 代表降序
Asc 代表升序

4.聚合函数

4.1 总数(count函数)
count(*)表示计算总行数,和 count(1) 的结果是相同的,但是count(列名) 不会统计null值记录
4.2 最大值
max(列)表示求此列的最大值
4.3 最小值
min(列)表示求此列的最小值
4.4 求和
sum(列)表示求此列的和
4.5 平均值
avg(列)表示求此列的平均值

5.分组函数(group by)

group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组
group by可用于单个字段分组,也可用于多个字段分组
5.1 分组聚合函数:
使用group by会对数据进行分组,可以使用聚合函数(sum、count、avg、min、max)对分组集合做一些操作。
5.2 分组拼接函数:
可以指定连接顺序,连接符号。group_concat([distinct] 字段 [order By 字段 asc separator'-'])
group_concat(字段名)可以作为一个输出字段来使用,
表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合
5.3 筛选分组
having 条件表达式:用来分组查询后指定一些条件来输出查询结果
having作用和where一样,但having只能用于group by
5.4 with rollup
with rollup的作用是:在最后新增一行,来记录当前列里所有记录的总和
select * from 表名 group by 字段名称 with rollup

6.sql写作和执行顺序

6.1 写作顺序
SELECT 列名
FROM 表名
[WHERE 条件判断]
[GROUP BY 分组条件]
[HAVING 条件判断]
[ORDER BY 排序]
[LIMIT 取数范围]
6.2 执行顺序:
先关联,再查询,再排序

七、字符切分函数

1.substring : 从字符串 s 的 start 位置截取长度为 length 的子字符串
Substring(s,start,length)

2.substring_index :返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串,number如果是正数,则返回左边的的字符串,number如果是负数,则返回右边的
Substring_index(s,delimiter,number)

3.left:返回字符串s的前n个字符
Left(s,n)

4.right:返回字符串s后n个字符,从右边数
Right(s,n)

5.mid:从字符串s的n位置截取长度为len的子字符串,同substring

6.insert:返回字符串str,在pos起始的字串且len个字符上的字串由字符串newstr代替
Insert(str,pos,len,newstr)

八、字符定位、拼接函数:

1.字符定位函数:
1.1 length:返回字符串str的长度
Length(str)

1.2 locate:返回字串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0
Locate(substr,str)

1.3 instr:返回字串substr在字符串str的第一个出现的位置,与locate只是参数位置相反
Instr(str,substr)

2.字符串拼接函数
2.1 concat:返回来自于参数连结的字符串。可以有很多个参数,如果参数有一个是NULL,则结果返回NULL。一个数字参数被变换为等价的字符串形式。
Concat(str1,str2,str3,…)

2.2 concat_ws: 同 CONCAT(s1,s2,...) 函数,但是每个字符串之间要加上 x,x 可以是分隔符
Concat_ws(x,str1,str2,str3,…)

2.3 lpad:在字符串 s1 的开始处填充字符串 s2,使字符串长度达到 len。如果s2不够则重复填充多个s2,如果s2过长则优先取左边的字符使得达到len长度。
lpad(s1,len,s2)

九、数学函数:

1.mod(n,m)函数:返回N除以M余数

2. Round(N)函数:返回数字N的四舍五入的一个整数

3. Ceil(N)函数:返回大于或等于数值N的最小整数

4. Floor(N)函数:返回小于或等于数值N的最小整数

5. Rand()函数:返回从0,1之间的随机float值

6. power(N,M)函数:幂运算,N的M次方

7.sqrt(n)函数:进行开平运算

十、时间函数:

1.获取当前时间
1.1 获取年月日时分秒
1.1.1 now()函数:获取当前时间信息
1.1.2 sysdate()函数:
两者区别为:now()在执行开始值得到,sysdate()在函数执行时动态得到值

1.2 Current_date()函数:获取年月日

1.3 current_time()函数:获取时分秒

2.时间格式的转换
2.1 字符串转换为日期格式:
Str_to_date(时间字符串,字符串日期格式)

字符串时间格式.png

2.2 日期转换为特殊字符串形式:
Date_format(日期,字符串格式)

3.提取时间信息
3.1 使用year、month等函数直接提取

时间函数提取表.png

4.日期的运算
4.1 现有日期进行偏移:
Date_sub(“日期”,interval “要减少偏移的间隔” 偏移方式)
Date_add(“日期”,interval “要增加偏移的间隔” 偏移方式)

4.2 两个日期计算天数差
Datediff(time,time2):返回两个日期之间(time1—time2)的天数

4.3 两个日期计算时间差
Timediff(time1,time2):两个日期相减time1-time2

4.4 两个日期得到指定差(推荐使用):
Timestampdiff(unite,begin,end):返回end-begin的结果,其中begin和end是date或者datetime格式

图3.png

十一、窗口函数:

1.定义:可以对数据库数据进行实时分析分析处理的函数
2.基本语法:<窗口函数名> over (partition by <分列的组> order by<要排序的列>)
3.常用窗口函数:
3.1 排序窗口函数:
3.1.1 RANK 函数:计算排序时,如果存在相同位次的记录,则会跳过之后的位次,
3.1.2 DENSE_RANK 函数:同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次
3.1.3 ROW_NUMBER 函数:赋予唯一的连续位次

3.2 聚合类窗口函数:包括SUM、AVG、COUNT、MAX、MIN等
注意:如果有order by排序,会是一个累计计算,没有排序是一个分组计算

3.3 偏移类窗口函数
lag(字段名,行数) 取出当前行前面第n行数据
lead (字段名,行数) 取出当前行后面第n行数据

十二、条件控制语句

1. case when 语句:如果哪个判断成立,那返回对应结果,并且不再往下判断了
case when 判断 1 then 结果1
when 判断 2 then 结果2
. …..
else 结果n
end

2. if函数
If(a,b,c),如果a满足条件,返回b,否则返回c

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

推荐阅读更多精彩内容