1、整理今天所学的知识点
、、、、、、、、、、、、、、、、、、、、、、、、、、
2、内置函数
1、字符串
1、length
select LENGTH("abc中国");
select ename,LENGTH(ename) from EMP;
2、concat
select CONCAT("a","bc","xx");
3、str_to_date
select STR_TO_DATE("2018年02月03日","%Y年%m月%d日");
create table tt(
id int auto_increment primary key,
birthday date
);
insert into tt(birthday) values("2018-2-4");
insert into tt(birthday) values(STR_TO_DATE("2018年02月03日","%Y年%m月%d日"));
select * from tt;
2、数字
1、floor,ceil
select FLOOR(1.56),CEIL(1.16);
2、rand
select RAND(10);
3、日期
1、now
select NOW();
select DAYOFWEEK('2018-08-26');
2、date_format 日期转字符串
select DATE_FORMAT(NOW(),"%Y年%m月%d日 %H时%i分%s秒");
select DATE_FORMAT("2018-2-3","%Y年%m月%d日");
2、视图
创建视图
create view myview
as
select avg(sal) avg_sal,deptno from EMP group by deptno;
使用视图
select * from myview;
3、事务
下订单:
1、insert订单表
2、update商品表
3、insert物流表
.......
转账:
1、update转出
2、update转入
3、insert交易记录
.......
事务:
事务开始
增删改语句
事务提交/回滚
目的:让多个操作同生共死,保证数据的正确性。
drop table bank;
create table bank(
id int primary key,
money int
);
insert into bank values(1,10);
insert into bank values(2,1);
select * from bank;
begin;
update bank
set money = money-5
where id = 1;
update bank
set money = money+5
where id = 2;
rollback;
commit;
select * from bank;
begin;
savepoint p1;
update bank
set money = money-1
where id = 1;
savepoint p2;
update bank
set money = money-1
where id = 1;
savepoint p3;
update bank
set money = money-1
where id = 1;
savepoint p4;
rollback to p4;
commit;
4、账户管理
1、root登陆
mysql -uroot -p
2、选择数据库
use mydb
3、创建用户并授权
grant select,insert on mydb.* to 'laowang'@'%' identified by '123456'
4、修改权限
grant 权限名称 on 数据库 to 账户@主机 with grant option;
5、修改密码
update user set authentication_string=password('新密码') where user='用户名';
6、登陆测试
mysql -ulaowang -p
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
2、sql函数,整理30个。
、、、、、、、、、、字符串函数、、、、、、、、、、、、、、
1.[if !supportLists]· 查看字符的ascii码值ascii(str),str是空串时返回0
2.[if !supportLists]· 查看ascii码值对应的字符char(数字)
select char(97);
3.[if !supportLists]· 拼接字符串concat(str1,str2...)
4.[if !supportLists]· 包含字符个数length(str)
select length('abc');
5.left(str,len)返回字符串str的左端len个字符
6.right(str,len)返回字符串str的右端len个字符
7.substring(str,pos,len)返回字符串str的位置pos起len个字符
select substring('abc123',2,3);
8.ltrim(str)返回删除了左空格的字符串str
9.rtrim(str)返回删除了右空格的字符串str
10.trim([方向 remstr from str)返回从某侧删除remstr后的字符串str,方向词包括both、leading、trailing,表示两侧、左、右
select trim(leading 'x' FROM 'xxxbarxxx');
select trim(both 'x' FROM 'xxxbarxxx');
select trim(trailing 'x' FROM 'xxxbarxxx');
返回由n个空格字符组成的一个字符串space(n)
select space(10);
11.替换字符串replace(str,from_str,to_str)
select replace('abc123','123','def');
12. lower(str)大写转小写
13. upper(str)小写转大写
select lower('aBcD');
数学函数
14 求绝对值abs(n)
select abs(-32);
15. 求m除以n的余数mod(m,n),同运算符%
select mod(10,3);
select 10%3;
16.地板floor(n),表示不大于n的最大整数
select floor(2.3);
17.天花板ceiling(n),表示不小于n的最大整数
select ceiling(2.3);
18. 求四舍五入值round(n,d),n表示原数,d表示小数位置,默认为0
select round(1.6);
19.求x的y次幂pow(x,y)
select pow(2,3);
20. 获取圆周率PI()
select PI();
21. 随机数rand(),值为0-1.0的浮点数
select rand();
、、、、、、、、、日期函数、、、、、、、、、、、
22. year(date)返回date的年份(范围在1000到9999)
23. month(date)返回date中的月份数值
24. day(date)返回date中的日期数值
25. hour(time)返回time的小时数(范围是0到23)
26. minute(time)返回time的分钟数(范围是0到59)
27. second(time)返回time的秒数(范围是0到59)
28.• 日期格式化date_format(date,format),format参数可用的值如下
获取年%Y,返回4位的整数
* 获取年%y,返回2位的整数
* 获取月%m,值为1-12的整数
29. 获取日%d,返回整数
* 获取时%H,值为0-23的整数
* 获取时%h,值为1-12的整数
* 获取分%i,值为0-59的整数
获取秒%s,值为0-59的整数
/*日期-->字符串*/
select date_format('2017-10-20','%Y年%m月%d日')
/*字符串-->日期*/
select str_to_date('2017年10月20日','%Y年%m月%d日')
30.• 当前日期current_date()
select current_date();
• 当前时间current_time()
select current_time();
• 当前日期时间now()
select now();
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
3、实现sql字符串转日期,日期转字符串
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
4、实现python字符串转日期,日期转字符串
、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
5、安装pymysql,使用python代码实现增删改查。