mysql前10天数据库_第二十天MySQL数据库入门(事务和MySQL数据库常用系统函数)

#MySQL数据库的事务是默认提交的

#手动关闭事务

#start transactin;关闭数据库默认提交的事务,手动开启提交事务

#往表studen1中插入数据

alter tablestudent1 auto_increment= 15;

insert intostudent1 values(default,'lisi','女',now());

start transaction;

insert intostudent1 values(default,'lisi02','女',now());

#此时,没有提交事务,表中没有数据,当在MySQL的黑窗口,是查询不到数据的。

select* fromstudent1;

#+----+------+------+---------------------+

#| id | name | sex | birthday |

#+----+------+------+---------------------+

#| 15 | lisi | 女 | 2019-08-06 16:50:53 |

#+----+------+------+---------------------+

#当提交事务之后,黑窗口可以查询到刚刚插入的数据

commit;

#+----+--------+------+---------------------+

#| id | name | sex | birthday |

#+----+--------+------+---------------------+

#| 15 | lisi | 女 | 2019-08-06 16:50:53 |

#| 16 | lisi02 | 女 | 2019-08-06 16:53:29 |

#+----+--------+------+---------------------+

#设置手动提交事务,仅这一次有效果。

#概念

#函数是SQL里的关键字,用于对字段里的数据进行操作。函数是一个命令,通常与字段名称或者是表达式联合使用,处理输入的数据并产生结果

#mysql常用函数

#1.控制函数(case, if,nullif,ifnull)

#2.字符串函数(substring,left,length,lower,replace,concat)

#3.数学函数(abs,floor,rand)

#4.日期时间函数(detediff,deta_add,str_to_date,date_format)

#5.组函数(avg,count,max,min,sum)

#创建一个表

create tablestu2(

id int auto_increment,

name varchar(10) not null,

sex enum('男','女','女神经'),

age tinyint,

constraint primary key(id)

)engine= innodb auto_increment= 5 default charsetutf8;

#插入一批数据

insert intostu2 values

(1,'虫虫','女神经',17),(2,'马踏飞燕','男',19),(3,'luky','女',20),

(4,'帅的被人砍','男',21),(5,'风度迷彩','女神经',16),(6,'小王子','男',15),

(7,'发芽的石头','男',26),(8,'赵四','男',19);

#查看男同学,女同学,女神经的个数

selectcount(sex) fromstu2 group by sex; #5,1,2

#如果是男同学 ,就很帅, 女同学 很美 女神经 真的很神经

select

case when sex= '男' thenconcat(name,'你很帅')

when sex= '男' thenconcat(name,'你很美')

elseconcat(name,'真的很神经')

end

fromstu2;

#虫虫真的很神经

#马踏飞燕你很帅

#luky真的很神经

#帅的被人砍你很帅

#风度迷彩真的很神经

#小王子你很帅

#发芽的石头你很帅

#赵四你很帅

#if(expr1,expr2,expr3)

#如果expr1是true,则返回expr2,否则返回值为expr3

selectif(1>2,1,2); #返回1

#ifnull(expr1,expr2)

#如果expr1不为null,则返回expr1,否则返回expr2.

selectifnull(name,"2") fromstu2;

selectifnull(age,2) fromstu2;

#nullif(expr1,expr2)

#如果expr1=expr2,则返回null,否则返回expr1

selectnullif(0,2);#返回0

selectnullif(1,1);#返回null

#substr()和sbustring()是同义词,用法一样。

#substring(str,pos) 从字符串str的起始位置post返回一个字串

selectsubstring('Quadratically', 5);

#subString(str,post,len) 从字符串str的起始位置post截取len长度的字串返回。

selectsubstring('Quadratically', 2, 5);

#当post的值为负数时,则表示有字符串右边开始数,从那个位置开始截取。

selectsubstring('Quadratically', -4, 2); #al

#substr(str,post) 从字符串str的起始位置post截取到字符串末尾,返回

selectsubstr('Quadratically', 2) str;

#substr(str,post,len) 从字符串str的起始位置post截取len长度的字串返回。

selectsubstr('Quadratically', 2, 5);

#当post的值为负数时,则表示有字符串右边开始数,从那个位置开始截取。

selectsubstr('Quadratically', -5, 3); #cal

#length(str) 返回字符串str的长度 ,一个汉字占3个字节

selectlength('#substr()和在');

#left(str,len) 返回字符串str的最左边len个字符

selectleft('#substr()和sbustring()是同义词', 11);##substr()和s

#right(str,len) 返回字符串str的最右边leng个字符。

selectright('#substr()和s', 4) ;#()和s

#lower() 将大写字母转为小写字母返回

selectlower('JDKLAJSFDdfdDF');#jdklajsfddfddf

#upper() 将小写字母转为大写字母返回

selectupper('kdsjfFJDKjdlf');#KDSJFFJDKJDLF

#ltrim(),rtrim(), trim()

#去除左边空格的字符串

selectltrim(' dkdjfk jfd df ');#dkdjfk jfd df

#去除左右两边空格的字符串

selecttrim(' dkdjfk jfd df ');#dkdjfk jfd df

#去除右边空格的字符串

selectrtrim(' dkdjfk jfd df ');# dkdjfk jfd df

#reverse() 返回颠倒字符顺序的字符串str.

selectreverse('#substr()和sbustring()是同义词');#词义同是)(gnirtsubs和)(rtsbus#

#CONCAT(str1,str2,...):返回来自于参数连结的字符串。如果任何参数是NULL,返回NULL。

# 可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。

selectconcat('My','S','QL');#MySQL

selectconcat('My',null,'QL');#null

selectconcat(14.2); #14.2

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

selectlocate('bar','foobarbar1'); #4

selectlocate('xbar','foobarabar1\'');#0

#abs(x) 返回x的绝对值

selectabs(-23); #23

#mod(n,m) 返回n被m除的余数

selectmod(15,7) ; #1

#等效果

select15%7 fromdual; #1

#floor(x) 返回不大于x的最大整数值。

selectfloor(1.23); #1

selectfloor(-2.5); #-3

#ceil(x) 返回大于x的最小整数值

selectceil(-1.232);#-1

selectceil(1.232);#2

#round(x)返回参数X的四舍五入的一个整数

selectround(1.58); #2

selectround(-1.58); #-2

#(detediff,dete_add,str_to_date,date_format)

#datediff(date1,date2) date1 和 date2 参数是合法的日期或日期/时间表达式。 日期的差值

selectdatediff('2008-12-30','2008-12-29');

#date_add(date,INTERVAL expr type) ,进行日期增加的操作,可以精确到秒

#加一天

selectdate_add(now(),interval+ 1 day);#2019-08-07 19:28:53

selectstr_to_date('1990-02-15','%Y-%m-%d');

SELECTSTR_TO_DATE('2017-02-09 15:25:46.635','%Y-%m-%d') FROMdual;

#date_format(datestring,format)datestring参数是合法的日期。format 规定日期/时间的输出格式。

selectdate_format(now(),'%Y"年"%m"月"%d"日 "%H"时"%i"分":%s"秒"');#2019"年"08"月"06"日 "19"时"38"分":08"秒"

#avg,count,max,min,sum 多行函数会自动忽略空值

#求stu2表中年龄的平均值

selectavg(age) fromstu2;

#count()查询数据总数

#COUNT(*):查询所有的记录总数

#COUNT(字段):查询指定字段不为null的数据总数

selectcount(*) fromstu2;

selectcount(sex) fromstu2;

#统计不重复值的数据总数

selectcount(distinct sex) fromstu2;

#sum() 对数值求总和

#可以用来统计表中总记录数

selectsum(salary) fromemp1;

selectsum(1) fromstu2;

#max()查询最大值的MAX()函数,适用三种数据类型(数值型数据,日期型数据,字符型数据)

selectmax(age) fromstu2;#26

#min() 查询最小值的MAX()函数,适用三种数据类型(数值型数据,日期型数据,字符型数据)

selectmin(age) fromstu2; #15

#DISTINCT的可以去除单列重复的数据,也可以去除多列重复得数据

#DISTINCT只能出现在SELECT之后,查询列表之前

#使用DISTINCT去除单列重复的数据

#查询员工所从事的职位

SELECT DISTINCTjob FROMemp;

#使用DISTINCT去除多列重复数据

SELECT DISTINCTdadtno,job

FROMemp

ORDER BYdadtno;

select* fromemp1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值