radians mysql_Python学习日记(三十八) Mysql数据库篇 六

Mysql视图

假设执行100条SQL语句时,里面都存在一条相同的语句,那我们可以把这条语句单独拿出来变成一个'临时表',也就是视图可以用来查询。

创建视图:

CREATE VIEW passtview AS SELECTstudent_id,

course_id,number

FROMscoretableWHERE

number >= 60;

执行语句后,可以在左边的视窗中看到刚创建的视图表

b858f1b01a768b866cab17b2d4be7a71.png

如果在scoretable中插入一条数据,视图中也会随之增加。因为scoretable它的本质是一张物理表,即真实存在,而视图它是一个虚拟的表格,在视图中的数据都是从物理表中动态的读取出来,因此本质上视图中的数据自己是不能去修改。

修改视图:

ALTER VIEW passtview AS SELECTstudent_id,

course_id,number

FROMscoretableWHERE

number < 60;

删除视图:

DROP VIEW passtview;

Mysql触发器

当某张表要做增删改操作时,可以使用触发器来自定义关联行为;当使用插入方法时能使用NEW关键字添加新数据,删除方法时能使用OLD关键字添加老数据,更新时可以使用OLD和NEW关键字去添加新老数据。

删除触发器

drop trigger t1;

插入前

delimiter //                        --将结束符改成//

CREATE TRIGGER t1 BEFORE INSERT ON studenttable FOREACH ROWBEGIN

INSERT INTO teachertable (tname) VALUES ('akj');END//

delimiter ;--将结束符改成 ;

再在学生表中加入一个新的数据

insert into studenttable(sname,gender,class_id) values('Jxson','男',2),('Jxsons','男',3);

可以看到学生表在添加了两个数据之后,教师表中也增加了相应个数的数据

b41c216d89134441e8d40c7fe7498e41.png

动态插入:

delimiter //

CREATE TRIGGER t1 BEFORE INSERT ON studenttable FOREACH ROWBEGIN

INSERT INTO teachertable (tname) VALUES(new.sname);END //delimiter ;

加入数据

insert into studenttable(sname,gender,class_id) values('实习老师1','男',2),('实习老师2','男',4)

通过这种动态插入会让两张表加入的数据相同

插入后

CREATE TRIGGER t1 AFTER INSERT ON studenttable FOREACH ROWBEGIN...END

删除前

CREATE TRIGGER t1 BEFORE DELETE ON studenttable FOREACH ROWBEGIN...END

删除后

CREATE TRIGGER t1 AFTER DELETE ON studenttable FOREACH ROWBEGIN...END

更新前

CREATE TRIGGER t1 BEFORE UPDATE ON studenttable FOREACH ROWBEGIN...END

更新后

CREATE TRIGGER t1 AFTER UPDATE ON studenttable FOREACH ROWBEGIN...END

Mysql函数

处理字符串内置函数

1.CHAR_LENGTH

计算字符串中字符的个数

select CHAR_LENGTH('string');

执行结果:

a864657c629bb249ebb54e0ee6813fb0.png

2.CONCAT(str1,str2,...)

将所有的字符串进行拼接

select CONCAT('abc','123','!@#$')

执行结果:

32424144056cc48237b741d643a4be94.png

如果里面有NULL存在,就返回NULL

select CONCAT('abc','123','!@#$',NULL)

执行结果:

a1c8d6151b427a1b0087d65998d98a15.png

3.CONCAT_WS(separator,str1,str2,...)

自定义字符串拼接的方式,会忽略NULL,separator是分隔符

select CONCAT_WS('+','string1','string2',NULL,'string3');

执行结果:

1c10297dd1a6058cb015bc53a2b44c04.png

4.CHARACTER_LENGTH(str)

返回字符串的字符数

SELECT CHARACTER_LENGTH('abc a');

执行结果:

8627a9a9ba04e488fd2a766885d52a9e.png

5.ASCII(str)

返回字符串第一个字符的ASCII值

select ASCII(tname) from teachertable;

执行结果:

6934ab03aeb81ab948f89a11583ee2c4.png

6.FIELD(str,str1,str2,str3,...)

返回第一个字符串str在字符串列表(str1,str2...)中的位置

select FIELD('cas','cas','a','b','cas');

执行结果:

d424a18715324dbd4870a997a4ee213e.png

7.FIND_IN_SET(str,strlist)

返回字符串s2与s1匹配的字符串位置

select FIND_IN_SET('hi12','abc,wcs,hi12,ssw')

执行结果:

749eef17ef3fc3ce891394614a3ed5f6.png

8.FORMAT(X,D)

函数将数字x进行格式化“#,###.##”,将x保留到小数点后n位,最后一位四舍五入,X为输入的浮点数,D为保留的小数位

select FORMAT(1348922.7777777,5)

执行结果:

e3d71e7b58b16eda0b62a9db871ee34c.png

9.INSERT(s1,x,len,s2)

将字符串s2替换s1的x位置开始长度为len的字符串

select INSERT('11111111',3,3,'###')

执行结果:

2562a413a567b447e6ec56b679142cca.png

10.LOCATE(substr,str)

从字符串substr中获取str开始的位置

select LOCATE('aaa','111aaa111aaa1111');

执行结果:

73e8d5ec1a25d770b3abdaa631588364.png

11.LCASE(str)

按字符串str的所有字母变成小写字母

select LCASE('aABaswQOP');

执行结果:

fa695d92ac85ad1f05dd87cf03b4f2f1.png

12.LEFT(str,len)

返回字符串str的前n个字符

select LEFT('abcde',3);

执行结果:

f49a3af5f455f4eff0694b4f8ed60a17.png

13.LOWER(str)

将所有字符串str的所有字母变成小写字母

select LOWER('aABCS 1AASDa')

执行结果:

eafc12844710a15a063bcd87194b4ff0.png

14.LPAD(str,len,padstr)

在字符串str的开始处填充字符串padstr,使字符串长度达到len

select LPAD('abc',10,'#@$')

执行结果:

61505c5754785ba442336d60cfba1f50.png

15.LTRIM(str)

去掉字符串str的空格

select LTRIM('## ## ##')

执行结果:

e32f868b143e52457970e50e81abe738.png

16.MID(str,pos,len)

从字符串str的pos位置截取长度为len的子字符串,同SUBSTRING

select MID('abcdefg',-3,3)

执行结果:

5ee3887b9a8a24e429bc257389c9026c.png

17.POSITION(substr IN str)

从字符串substr中获取s1的开始位置

select POSITION('#' IN 'a#fg#a');

执行结果:

3026ad3fd40ce45c4083500f47ea1219.png

18.REPEAT(str,count)

将字符串str重复count次

select REPEAT('@_@',3);

执行结果:

4e8e6d8df98eb6ba9e312a69fc5118d8.png

19.REPLACE(str,from_str,to_str)

将字符串to_str替代字符串str中的from_str

select REPLACE('1aaaaaa1','a','#');

执行结果:

c901432720e6049e6d27c2b49f183b4c.png

20.REVERSE(str)

反转字符串str

select REVERSE('abc123');

执行结果:

c582269b73ffd5096c8d2c0fda608bc9.png

21.RIGHT(str,len)

返回字符串str的后len个字符

select RIGHT('abcd123',4)

执行结果:

6ebf167ac3d2c150f6c58e0e34a5c1ca.png

22.RPAD(str,len,padstr)

在字符串str的结尾处添加字符串padstr,使字符串的长度达到len

select RPAD('vvvvv',10,'$%^');

执行结果:

601f44444600a9c5430be01095218882.png

23.SPACE(N)

返回N个空格

select SPACE(5);

执行结果:

3433f641e488c513882e28a971f0b946.png

24.STRCMP(expr1,expr2)

比较字符串expr1和expr2,如果expr1与expr2相等返回0,如果expr1>expr2返回1,如果expr1

select STRCMP('abc','a'),STRCMP('abc','abc'),STRCMP('a','abc');

执行结果:

b89f3670b4b36870521d9e2329035383.png

25.SUBSTR(str,pos,len)

从字符串str的pos位置截取长度为len的子字符串

select SUBSTR('abcdefg',2,3)

执行结果:

d013af56a6a03bdd62e64f3080106ee9.png

26.SUBSTRING(str,pos,len)

从字符串str的pos位置截取长度为len的子字符串

select SUBSTRING('abcedfg',2,3);

执行结果:

a1600c97afbe0570bf94070d24bd2957.png

27.SUBSTRING_INDEX(str,delim,count)

返回从字符串str的第count个出现的分隔符delim之后的字串,如果count > 0,返回第count个字符左边的字符串,如果count < 0,返回第count的绝对值(从右开始数)个字符右边的字符串

select SUBSTRING_INDEX('a*b*c*d*e','*',2),SUBSTRING_INDEX('a*b*c*d*e','*',-2)

执行结果:

58886e7ce900ac9665ffc92aad24a134.png

28.TRIM(str)

去掉字符串开头和结尾的空格,除此之外还有LTRIM和RTRIM函数

select TRIM('as asa s as');

执行结果:

76437743b6984cdf83e6691577077061.png

29.UCASE(str)

将字符串转成大写,UPPER函数也有相同的功能

select UCASE('abc1@');

执行结果:

941c67217fc5410e72ba392a451c3c5c.png

处理数字内置函数

1.ABS(X)

返回X的绝对值

select ABS(-1);

执行结果:

471f7d124d1eb46aebb33ae8251190fb.png

2.ACOS(X)

返回X的反余弦值(X为弧度)

select ACOS(0.25);

执行结果:

f4a01bf28825a435e7beee4f9e187ed8.png

3.ASIN(X)

求反正弦值(X为弧度)

select ASIN(0.25);

执行结果:

9f431aaee5c0fa46422e69189b42f73d.png

4.ATAN(X)

求反正切值(X为弧度)

select ATAN(2.5);

执行结果:

e25077fdfd4a0d03c63434bbec0c53b6.png

5.ATAN2(Y,X)

求反正切值(Y,X为弧度)

select ATAN2(-0.8,2);

执行结果:

4fc32e029bd038a19f2faf55463e35bb.png

6.AVG(expr)

计算平均值,expr为一个字段

7.CEIL(X)

返回大于或等于X的最小整数

select CEIL(3.789);

执行结果:

193865404415d09f8c9122806b35ddd5.png

8.CEILING(X)

返回大于或等于X的最小整数

select CEILING(3.256);

执行结果:

e9f565fddd67143c9ff12aa80ee28ded.png

9.COS(X)

求余弦值(X为弧度)

10.COT(X)

求余切值(X为弧度)

11.COUNT(expr)

返回查询的记录总数,expr为一个字段或者*号

12.DEGREES(X)

将弧度转换为角度

select DEGREES(3.141592);

执行结果:

a95e7e55a53068eabd09c65a8eea004b.png

13.n DIV m

整除,n为被除数,m为除数

select 15.5 DIV 3;

执行结果:

4f5786e50b94bec19b4543af0b103f14.png

14.EXP(X)

返回e的X次方

select EXP(2);

执行结果:

45a1cfa0449d061bd1dfe31ff1b3b568.png

15.GREATEST(value1,value2,...)

返回列表的最大值

select GREATEST(1,7,8,9,-2,6,0);

执行结果:

6f7f6ad91a589efedfc32561e6fb26df.png

比较字符串

select GREATEST('%^','1234','awsl');

执行结果:

a91db7c456011d4daf052bac656ac69a.png

16.LEAST(value1,value2,...)

返回列表中的最小值

select LEAST(1,2,-3,0);

执行结果:

7c231d3207e5cb0026737f26e61b31f2.png

比较字符串

select LEAST('App','Abc','Abb');

执行结果:

327893bcadc73e6b918ca0456c21d1c2.png

17.LN(X)

返回数字的自然对数

select LN(6);

执行结果:

2663ce939e75cdec26fb1530f83e9bde.png

18.LOG(X)

返回自然对数(以e为底的对数)

select LOG(2);

执行结果:

fcd546881dd5882d4065ccea5907eafc.png

19.LOG2(X)

返回以2为底的对数

20.LOG10(X)

返回以10为底的对数

21.MAX(expr)

返回字段expr中的最大值

22.MIN(expr)

返回字段expr中的最小值

23.MOD(N,M)

返回N除以M以后的余数

select MOD(10,3);

执行结果:

d717389e064b27e4bce73ebc9b0cf073.png

24.PI()

返回圆周率

select PI();

执行结果:

2cc36856ceaad172eabd346bb97b440f.png

25.POW(X,Y)

返回X的Y次方

select POW(2,3);

执行结果:

e83f2b4d2cedb868a61db8fc69703976.png

26.POWER(X,Y)

返回X的Y次方

select POWER(2,3);

执行结果:

04ba0e028f197aaed5fa0035411ac2a8.png

27.RADIANS(X)

将角度转化为弧度

select RADIANS(180);

执行结果:

a97ca24f10496b54f616df7c1921604d.png

28.RAND()

返回0-1的随机数

select RAND();

执行结果:

d503cda2f6c2708d869aa27afeb91261.png

29.ROUND(X)

返回距离X最近的整数

select ROUND(1.456);

执行结果:

0981f6e1170c6d48f1c9f924d1bd75a3.png

30.SIGN(X)

返回X的符号,X是负数,返回-1,X是正数,返回1,X是0,返回0

select SIGN(-6),SIGN(0),SIGN(6);

执行函数:

ed932b91484aebc55a999a5239f5505c.png

31.SIN(X)

求正弦值(参数是弧度)

32.SQRT(X)

返回平方根

select SQRT(4);

执行函数:

28ae6d13044d92ccea231d8d919d8a80.png

33.SUM(expr)

返回指定字段的总和

34.TAN(X)

求正切值(参数是弧度)

35.TRUNCATE(X,D)

返回数值X保留到小数点后D位的值(与ROUND最大的区别是不会进行四舍五入)

select TRUNCATE(1.2356,3);

执行结果:

29035ecbf392fa1d774386e3d63d1aba.png

处理时间内置函数

1.ADDDATE(expr,days)

计算起始日期expr加上days天的日期

select ADDDATE('2019-10-1',INTERVAL 10 DAY);

执行结果:

6533257d83c000f2cb2f732a8ae90bc3.png

2.ADDTIME(expr1,expr2)

时间expr1加上expr2秒的时间

select ADDTIME('2019-10-1 12:35:20',20);

执行结果:

5762dd3f7f837320a9036224d69d845a.png

3.CURDATE();

返回当前日期

select CURDATE();

执行结果:

b602dfed69a1cf36ce9f03aa02bdb1e8.png

4.CURRENT_DATE()

返回当前日期

select CURRENT_DATE();

执行结果:

488dc89b8d155aeaa2da9243c6c52fc0.png

5.CURRENT_TIME

返回当前时间

select CURRENT_TIME;

执行结果:

a4959c884f7bd4d5a5c12151acf0ec59.png

6.CURRENT_TIMESTAMP()

返回当前时间和日期

select CURRENT_TIMESTAMP();

执行结果:

ce9b4e39c3894573e3a9d27536c673af.png

7.CURTIME()

返回当前时间

select CURTIME();

执行结果:

9d5f1464ceb91c2a690016b036030c19.png

8.DATE(expr)

从日期或日期表达式中提取日期值

select DATE('2019-10-6');

执行结果:

8d3672cd4d35bd43c95f350c8ee8094a.png

9.DATEDIFF(expr1,expr2)

计算日期expr1->expr2之间相隔的天数

select DATEDIFF('2019-10-1','2019-10-16');

执行结果:

d6ac37515dc45216ceecbd466839b35d.png

10.DATE_ADD(date,INTERVAL expr unit)

计算起始日期date加上一个时间段后的日期

select DATE_ADD('2012-5-21 11:21:23',INTERVAL 5 MINUTE);

执行结果:

88f1725d76e02befaab8beda5647c451.png

11.DATE_FORMAT(date,format)

按表达式format的要求显示日期date

select DATE_FORMAT('2012-5-9 23:50:49','%Y-%m-%d %r');

执行结果:

d0536d9c67b58338fd139996b6aff34f.png

12.DATE_SUB(date,INTERVAL expr unit)

函数从日期减去指定的时间间隔

select DATE_SUB('2019-5-6 17:55:20',INTERVAL 7 DAY);

执行结果:

2e8d12b63e6af47be1c28f26e964951c.png

13.DAY(date)

返回日期值date的日期部分

select DAY('2019-6-9');

执行结果:

fbef2c98277418f8dbe437e5f4173784.png

select DAYOFMONTH('2019-10-15 21:55:32');

14.DAYNAME(date)

返回日期date是星期几,如Monday,Tuesday等

select DAYNAME('2019-10-28 12:59:59');

执行结果:

479e5977fa217713ee98d1afdd6c3126.png

15.DAYOFMONTH(date)

计算日期date是本月的第几天

select DAYOFMONTH('2019-10-15 21:55:32');

执行结果:

fde9af884f6831408ad7ac99c23f38d6.png

16.DAYOFWEEK(date)

计算date今天是周几

select DAYOFWEEK('2019-10-15 21:55:32');

执行结果:

5b9fb9cfab5a51617e7998cc3bbb841f.png

17.DAYOFYEAR(date)

计算日记date是本年的第几天

select DAYOFYEAR('2019-10-15 21:55:32');

执行结果:

c64ff4efeeabe7481be079af44488dcc.png

18.EXTRACT(unit FROM date)

从日期date中获得指定的值,unit指定返回的值,unit可取得值为:

MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR、SECOND_MICROSECOND、MINUTE_MICROSECOND、MINUTE_SECOND、HOUR_MICROSECOND、HOUR_SECOND、HOUR_MINUTE、DAY_MICROSECOND、DAY_SECOND、DAY_MINUTE、DAY_HOUR、YEAR_MONTH

19.FROM_DAYS(N)

计算0000年1月1日开始N天后的日期

select FROM_DAYS(1111);

执行结果:

3d75dbae596c7c26bc4d6ea170a751ff.png

20.HOUR(time)

返回time中的小时值

select HOUR('2019-7-8 21:48:20');

执行结果:

bf02b89683d83a6c607d793cc40bd056.png

21.LAST_DAY(date)

返回给定日期的那一月份的最后一天

select LAST_DAY('2019-10-17 21:18:32');

执行结果:

fb6f895cbeea7323454b0efc3ff59e51.png

22.LOCALTIME()

返回当前日期和时间

select LOCALTIME();

执行结果:

1ce3a8fe346ab611939d7ed1fdacd6d8.png

23.LOCALTIMESTAMP()

返回当前日期和时间

select LOCALTIMESTAMP();

执行结果:

1eb3664b2a8eff02fb9499e317803112.png

24.MAKEDATE(year,dayofyear)

基于给定参数年份year和所在年中的天数序号dayofyear返回一个日期

select MAKEDATE(2019,300);

执行结果:

b7711cbff833c0a320feb078593f5f8d.png

25.MAKETIME(hour,minute,second)

返回时间,参数为小时、分钟、秒

select MAKETIME(18,2,48);

执行结果:

ee103207bc018966c5c83675ad4c862b.png

26.MICROSECOND(expr)

返回日期参数所对应的微秒数

select MICROSECOND('2019-4-5 14:26:20.30');

执行结果:

88dc5b1385b126b47d7c7806b5e0312d.png

27.MINUTE(time)

返回time中的分钟值

select MINUTE('2019-4-5 14:26:20');

执行结果:

901f77b9825d15df239bf3783d00e030.png

28.MONTHNAME(date)

返回日期当中的月份名称

select MONTHNAME('2019-4-5 14:26:20');

执行结果:

99a74ac2e7bd8591ef89243b8e4ae4bd.png

29.MONTH(date)

返回日期的月份值(1-12)

30.NOW()

返回当前日期和时间

31.PERIOD_ADD(P,N)

为年-月 组合日期添加一个时段

select PERIOD_ADD(201910,3);

执行结果:

d371a35f57118e495d4228ad565f4f36.png

32.PERIOD_DIFF(P1,P2)

返回两个时段之间的月份差值

select PERIOD_DIFF(201910,202003);

执行结果:

6465059835fc9c6c49490848bbd0d0c6.png

33.QUARTER(date)

返回日期date是第几季节,1-4

select QUARTER('2019-4-5 14:26:20');

执行结果:

8ce05ebf57502fbfb86e69eb580128ab.png

34.SECOND(time)

返回time的秒钟值

select SECOND('2019-4-5 14:26:20');

执行结果:

dbf7155065075f5dbe523c58b232fdaf.png

35.SEC_TO_TIME(seconds)

将秒为单位的时间seconds转化为时分秒的格式

select SEC_TO_TIME(15164);

执行结果:

7554387cdb3c6e2ac990c13abf68e3b6.png

36.STR_TO_DATE(str,format)

将字符串转变为日期

select STR_TO_DATE('April 4 2019','%M %d %Y');

执行结果:

7006dab8b6c2bbd99efbd68ae1cb64ef.png

37.SUBDATE(expr,days)

日期date减去日期days

select SUBDATE('2019-7-5 21:45:20',5);

执行结果:

df932d540bd84b7a7e7dc32983166dcc.png

38.SUBTIME(expr1,expr2)

时间expr1减去expr2秒的时间

select SUBTIME('2019-7-5 21:45:20',5);

执行结果:

e7fa750fafb8ad0d9090588935f3c937.png

39.SYSDATE()

返回当前日期和时间

40.TIME(expr)

提取传入表达式的时间部分

select TIME('2019-4-5 14:26:20');

执行结果:

6b8c27e2d6c5e83c01bff91b02a8b09f.png

41.TIME_FORMAT(time,format)

按表达式format的要求显示时间time

select TIME_FORMAT('2019-4-5 14:26:20','%r');

执行结果:

cafcd088cc79b20df224eaf3f8093ddd.png

42.TIME_TO_SEC(time)

将时间time转化为秒

select TIME_TO_SEC('14:26:20');

执行结果:

989f425cc0abe9096ae7aacb2a35d0c6.png

43.TIMEDIFF(expr1,expr2)

计算时间差值

select TIMEDIFF('14:26:20','15:26:20');

执行结果:

85f51cf81af10f650a47c868fe7a0e84.png

44.TIMESTAMP(expr1,expr2)

单个参数时,函数返回日期或日期时间表达式;有两个参数时,将参数加合

select TIMESTAMP('2019-4-5 14:26:20'),TIMESTAMP('2019-4-5','15:20:6');

执行结果:

87b3e0aa9846e0bbbe39ca3206c86b1a.png

45.TO_DAYS(date)

计算日期date距离0000年1月1日的天数

select TO_DAYS('2019-4-5 14:26:20');

执行结果:

847b27ee98a69daeb22cb043eadf9789.png

46.WEEK(date)

计算日期date是本年的第几个星期,范围是0-53

select WEEK('2019-4-5 14:26:20');

执行结果:

682e2c19149ca3b3277be4754fef3125.png

47.WEEKDAY(date)

返回日期date是星期几

select WEEKDAY('2019-4-5 14:26:20');

执行结果:

65938d2457a4a6d88dedce748634c51f.png

48.WEEKOFYEAR(date)

计算日期date是本年的第几个星期,范围是0-53

select WEEKOFYEAR('2019-4-5 14:26:20');

执行函数:

61081d8e59274b91487542e202545841.png

49.YEAR(date)

返回年份

50.YEARWEEK(date,mode)

返回年份及第几周(0-53),mode中0表示周末,1表示周一,2表示周二...

select YEARWEEK('2019-4-5',12);

执行结果:

4f234b1dfdfb9bdff8c713641ea7b2c8.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值