站在巨人的肩膀上看世界,MySQL初步使用

 MySQL是一个常用的数据库,对于他的使用,我们需要尽量的了解它,但是掌握初步的语法,也可以勉强使用它,这都归功于它的研发者们。正是因为这些大佬,写好了软件,让我们的操作更加的便捷,我们这些学习和使用编程的都是站在巨人的肩膀上看世界,下面是我所整理的一些MySQL的基本使用语法。

MySQL语言语法分类:

1.数据查询语言(DQL):
 其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
2.数据操作语言(DML):
 其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
3.事务处理语言(TPL):
 它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
4.数据控制语言(DCL):
 它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
5.数据定义语言(DDL):
 其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
6.指针控制语言(CCL):
 它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
7.函数:
8.数据库的备份与还原
 以上便是MySQL语言的大致分类,也是我接下来所整理的子标题。

SQL的书写的注意事项

 1. 在MySQL数据库中,SQL语句大小写不敏感
 2. SQL语句可单行或多行书写
 3. 在SQL语句中,关键字不能跨多行或缩写
 4. 为了提高可读性,一般关键字大写,其他小写
 5. 空格和缩进使程序易读

数据查询语言(DQL)

1.查询语句
 table_name 表名
 a,b表示表中的a,b字段名,
 当查询整张表用*表示
 可以在字段后面用’别名’,显示出字段的别名

SELECT a, b FROM table_name;
SELECT a 'a的别名', b 'b的别名' FROM table_name;

2.过滤查询
 table_name 表名

-- >
-- >=
-- <
-- <=
-- !=
-- =
SELECT * FROM table_name WHERE 判断语句;
--查询表table_name 中字段a>100的所有数据
SELECT * FROM table_name WHERE a > 100;
  1. 逻辑运算:!(NOT) > AND(&&) > OR(||)优先级
--查询表table_name 中字段a>100并且字段b>200的所有数据
SELECT * FROM table_name WHERE a > 100 AND b > 200;
--查询表table_name 中字段a>100或者字段b=200的所有数据
SELECT * FROM table_name WHERE a > 100 || b = 0;

4.范围查询——BETWEEN 值1 AND 值2
 查询值1<字段<值2 的数据

--查询表table_name 中字段100<=a<=200的所有数据
SELECT * FROM table_name WHERE a >= 100 AND a <= 200;
SELECT * FROM table_name WHERE a BETWEEN 100 AND 200;

5.查询值确定的数据——IN和NOT IN

--查询表table_name 中字段a=100或者a=200的所有数据
SELECT * FROM table_name WHERE a = 100 || a = 200;
SELECT * FROM table_name WHERE a IN(100,200);
--查询表table_name 中字段a!=100或者a!=200的所有数据
SELECT * FROM table_name WHERE a != 100 || a != 200;
SELECT * FROM table_name WHERE a NOT IN (100,200);

6.空值查询 IS NULL

--查询表table_name 中字段a为null的所有数据
SELECT * FROM table_name WHERE IS NULL;

7.模糊查询LIKE
 '%'匹配任意字符
 '_'下划线匹配单个字符

--查询表table_name 中字段b含有人字符的所有数据
SELECT * FROM table_name WHERE b LIKE '%人%';
--查询表table_name 中字段b格式为X人XXXXXX字符的所有数据
SELECT * FROM table_name WHERE b LIKE '_人%';
--XXXX表示未知的数据

8.正则表达式
 REGEXP 在where中使用

--查询表table_name 中字段b匹配上正则表达式,
--字符串只有数字和小写字母的数据
SELECT * FROM table_name WHERE b REGEXP '^[a-z0-9]+$';

9.结果排序
 使用ORDER BY子句将结果的记录排序:
 ASC : 升序,缺省–不写默认。
 DESC: 降序。
 ORDER BY 语句出现在SELECT语句的最后。

--查询表table_name 中所有数据,并按照字段a升序排列
SELECT * FROM table_name ORDER BY a ASC;
--查询表table_name 中所有数据,并按照字段a降序排列
SELECT * FROM table_name ORDER BY a DESC;

10.分页查询 LIMIT写在SQL语句最后
  真分页:每一次从数据库查询指定条数的记录(最主流,也可以结合使用)
 假分页:一次性将数据库所有记录查询出来,然后在前台显示的时候,是每次只显示指定条数的记录,但是换页很快
 每一页显示指定的记录条数
 pageSize:每页显示多少条记录
 page:当前页码

-- 第1页, 0表示从1开始的记录号, 5表示当前每页条数
SELECT * FROM table_name LIMIT 0,5;
-- 第n页, (n-1)*5表示从(n-1)*5+1开始的记录号, 5表示当前每页条数
SELECT * FROM table_name LIMIT (n-1)*5,5;
SELECT * FROM product LIMIT (page-1)*pageSize,pageSize;-- 第page页

11.聚集函数
 聚集函数作用于一组数据,并对一组数据返回一个值。
 COUNT(字段):统计结果记录数 如果列的值为null 不会计算在内的
 MAX(字段): 统计计算最大值
 MIN(字段): 统计计算最小值
 SUM(字段): 统计计算求和
 AVG(字段): 统计计算平均值 如果列的值为null 不会计算在内的

--查询表中数据条数
SELECT COUNT(*) FROM table_name;
--查询表中字段a的最大值
SELECT MAX(a) FROM table_name;

12.分组查询 GROUP BY
 可以使用GROUP BY 子句将表中的数据分成若干组,再对分组之后的数据做统计计算,一般使用聚集函数才使用GROUP BY.
table_name 表示表名
 语法格式:
  SELECT 聚集函数或者分组的列
  FROM table_name
  WHERE 条件 GROUP BY 列名 HAVING 分组之后的条件;
  注意:GROUP BY 后面的列名的值要有重复性分组才有意义;
   使用HAVING字句,对分组之后的结果作筛选;
  不能在 WHERE 子句中使用组函数(注意);
 可以在 HAVING 子句中使用组函数;

--将表按照c字段分组,查询表中c的每个数据出现次数
SELECT COUNT(*) FROM table_name GROUP BY c;
--将表按照c字段分组,查询表中c的每个数据并且大于100出现次数
SELECT COUNT(*) FROM table_name GROUP BY c HAVING c > 100;

13.多表查询

--查询表table_name1,表table_name2中所有数据
SELECT * FROM table_name1,table_name2 ;

14.内连接查询
 显式内连接 INNER JOIN

--查询表table_name1,表table_name2中所有数据,
--并且表table_name1的字段a等于表table_name2的字段b,用one表示表table_name1,
--two表示表table_name2,one,two是别名,作用是简化代码
SELECT * FROM table_name1 one
INNIT JOIN table_name2 two ON one.a = two.b;
--INNIT可以省略
SELECT * FROM table_name1 one
JOIN table_name2 two ON one.a = two.b;

 隐式内连接

--查询表table_name1,表table_name2中所有数据,
--并且表table_name1的字段a等于表table_name2的字段b,用one表示表table_name1,
--two表示表table_name2,one,two是别名,作用是简化代码
SELECT * FROM table_name1 one,table_name2 two WHERE one.a = two.b;

注意事项:
使用表名前缀在多个表中区分相同的列。
在不同表中具有相同列名的列可以用表的别名加以区分。
使用别名可以简化查询。
使用表名前缀可以提高执行效率。
如果使用了表的别名,则不能再使用表的真名

14.外连接
 左外连接:查询出JOIN左边表的全部数据查询出来,JOIN右边的表不匹配的数据使用NULL来填充数据.

--查询表table_name1,表table_name2中所有数据,并且以表table_name1为主,
--table_name2不匹配表table_name1的数据全部用NULL填充
--并且表table_name1的字段a等于表table_name2的字段b,用one表示表table_name1,
--two表示表table_name2,one,two是别名,作用是简化代码
SELECT * FROM table_name1 one
LEFT JOIN table_name2 two ON one.a = two.b;

 右外连接:查询出JOIN右边表的全部数据查询出来,JOIN左边的表不匹配的数据使用NULL来填充数据.

--查询表table_name1,表table_name2中所有数据,并且以表table_name2为主,
--table_name1不匹配表table_name2的数据全部用NULL填充
--并且表table_name1的字段a等于表table_name2的字段b,用one表示表table_name1,
--two表示表table_name2,one,two是别名,作用是简化代码
SELECT * FROM table_name1 one
SELECT JOIN table_name2 two ON one.a = two.b;

15.自连接查询
 适用于查询上下级关系、菜单和子菜单树桩结构的场景

--当表table_name中a字段的值与b字段的值有关系之时
--例如:a是学生编号,b是该学生的组长编号
--查询表table_name中name字段的上级
--例子中的组员与组员的组长姓名
SELECT a.name '组员姓名', b.name '组长姓名' FROM table_name t1
JOIN table_name t2 ON t1.a = t2.b;

16.子查询(嵌套查询)
 一个查询语句嵌套在另一个查询语句中,内层查询的结果可以作为外层查询条件。
 一般的,子查询嵌套在WHERE或者FROM字句中。也可以在select中
分析:
 从最里面的这一先查,查询出来后看看效果(现在就是一张临时表了)。
 再从基于最里面的查询分析,继续查。

--当a=100这行的b未知的时候,查询出这行b的值,然后查询table_name中所有b等于a=100这行的b的值的所有数据。
SELECT * FROM table_nameWHERE b = (SELECT b FROM table_name WHERE a = 100);

  一定要保证 = 左右两边的字段的类型顺序一致
  方式2:常用
 子查询可以作为临时表

数据操作语言(DML)

1.插入数据(添加)
 插入语句:一次插入操作只插入一行.
   方式1 标准插入方式: 值和字段类型要一致
 语法:
INSERT INTO table_name (column1,column2,column3…)
VALUES (value1,value2,value3…);

--给表table_name 的字段a,b,c分别赋值为1,2,3,一一对应
INSERT INTO table_name (a,b,c)
VALUES  (1,2,3);

方式2 下面是所有字段都插入:必须是全部的字段都有匹配有值
INSERT INTO table_name VALUES (value1,value2,value3…);

--给表table_name 的所有字段赋值,并且必须一一对应,顺序,个数,数据类型必须相等
INSERT INTO table_name
VALUES  (1,2,3);

方式3 mysql特有方式
INSERT INTO table_name (column1,column2,column3…)
VALUES (value1,value2,value3…),
(value1,value2,value3…),
(value1,value2,value3…)…;

--给表table_name 的字段a赋值为1,4;字段b赋值为2,5;字段c赋值为3,6;一一对应
INSERT INTO table_name (a,b,c)
VALUES  (1,2,3),(4,5,6);

-方式4 插入查询结果,注意,必须保证字段数量和类型完全一致
INSERT INTO table_name (column1,column2,column3…)
SELECT column1,column2,column3…
FROM table_name;

--将table_name 表中的字段a=1的字段a,b,c数据查询出来并插入到表table_name 中
INSERT INTO table_name (a,b,c)SELECT a,b,c FROM table_name WHERE a = 1;

2.delete删除
 删除一条数据,必须要有条件判断where, 否则就是全表删除
 这种方式可以用事务回滚将删除的数据还原(前提要关闭自动提交业务)。

--删除表table_name 中id=11这条数据
DELETE FROM table_name WHERE id = 11;
-- 没有条件判断就是全表删除
DELETE FROM table_name ;

 更高效的删库的方式,这种方式,不能通过事务回滚恢复数据
TRUNCATE 表名;

-- 全表删除
TRUNCATE table_name ;

3.update修改
 修改数据,必须要有条件判断where,否则就是全表修改
UPDATE 表名
SET a = b
WHERE a = ?;
可以根据子查询修改数据

--将表table_name 中字段a大于100的数据全部修改成100
UPDATE table_name
SET a = 100
WHERE   a > 100;

事务处理语言(TPL)

 1.事务:就是一系列完整的sql操作的语句,不可以被打断。否则回滚
  2.MySQL默认是自动提交模式。也就是一条SQL语句完成后,系统就自动提交了。
 自动提交优点:可以及时同步数据,安全
 自动提交缺点:每次修改数据库,都要提交,导致频繁的IO操作,浪费资源
 查看当前的模式是否为自动提交模式:
SHOW VARIABLES LIKE ‘%autocommit’; ——autocommit ON 表示是自动提交 off表示关闭自动提交
 设置非自动提交事务 以后的事务是通过java代码控制(java是连接的数据库) 查询不需要事务,增删改必须有事务
SET autocommit=0;—— 0表示关闭自动提交,1表示开启自动提交

SHOW VARIABLES LIKE '%autocommit'; --autocommit    ON 表示是自动提交
--off表示关闭自动提交
SET autocommit=0;-- 0表示关闭自动提交,1表示开启自动提交
COMMIT; -- 提交事务
ROLLBACK;-- 回滚事务
START TRANSACTION; --开启事务
ROLLBACK;-- 事务回滚
COMMIT;-- 事务提交

数据控制语言(DCL)

数据定义语言(DDL)

###因为有了工具,我们站在巨人的肩膀上,使用得更加便捷,故许多DDL的语言都会比其他的用得更少一些
1.创建数据库
sqlname 是数据库名

CREATE DATABASE sqlname ;

2.显示当前所有的数据库

SHOW DATABASES;

3.删除数据库
sqlname 是数据库名

DROP DATABASE sqlname ;

4.使用数据库
sqlname 是数据库名

USE sqlname;

5.显示当前数据库所有的表

SHOW TABLES;

6.创建表

-- CREATE TABLE 表名(
--    列名1    列的数据类型   [约束],
--    列名2    列的数据类型   [约束],
--    ....
--    列名N    列的数据类型   约束
-- )ENGINE=INNODB CHARSET=utf8;
约束:
RIMARY KEY --主键约束,表示当前字段是主键,非空且唯一。
AUTO_INCREMENT--主键自增长,表示自增长,默认从1开始,步长1,默认是从1开始,默认步长为1。简称 pk
id BIGINT PRIMARY KEY AUTO_INCREMENT,-- 主键 非空且唯一。
NOT NULL--非空约束,不允许name在插入数据的时候为null,必须有数据
UNIQUE--唯一约束(UK),在该表中,cellphone该列的内容必须唯一。但是可以为null
NOT NULL UNIQUE --在该表中,cellphone该列的内容必须唯一,且不能为空
FOREIGN KEY--外键约束,简称:fk。A表中的外键列.A表中的外键列的值必须参照于B表中的某一列(B表主键)。,简称:fk。A表中的外键列.A表中的外键列的值必须参照于B表中的某一列(B表主键)。
DEFAULT--设置列的默认值

创建表的标准写法:避免存在之前的表影响创建,建议有先备份

DROP TABLE IF EXISTS `表名`;
CREATE TABLE `表名` (...)

7.删除表

ROP TABLE user;

标准写法:避免表不存在引起异常

DROP TABLE IF EXISTS `表名`;

8.查看表结构

DESC user;
SHOW CREATE TABLE user;

9.删除列
ALTER TABLE 【表名字】 DROP 【列名称】

10.增加列
ALTER TABLE 【表名字】 ADD 【列名称】 INT NOT NULL COMMENT ‘注释说明’

11.修改列的类型信息
ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称(这里可以用和原来列同名即可)】 约束 COMMENT ‘注释说明’

12.重命名列
ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称】 约束 COMMENT ‘注释说明’

13.重命名表
ALTER TABLE 【表名字】 RENAME 【表新名字】

14.删除表中主键
Alter TABLE 【表名字】 drop primary key

15.添加主键
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY (字段)

16.添加索引
ALTER TABLE 表名 add index INDEX_字段 (字段);

17.添加唯一限制条件索引
ALTER TABLE 表名 add unique u_字段(字段);

18.删除索引
alter table 表名 drop index 索引名;

指针控制语言(CCL)

函数:

1.IFNULL(表达式 ,值)函数,如果表达式为null则显示值,否则显示表达式结果值,IFNULL函数是MySQL控制流函数之一

--查询表table_name的字段a,b,并且当a字段数据为null时用暂无记录显示
--当b字段数据为null时用0显示
SELECT IFNULL(a, '暂无记录'), IFNULL(b,0)
FROM table_name;

2.cast函数
CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。
语法如下:
cast(值 as 类型)
cast(‘123’ as SIGNED) 将123转换为int类型,返回值为整型类型
select cast(salePrice as decimal)---->数据类型 ----Java中的数据类型
支持以下类型:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

3.DECIMAL(a,b)
 显示一个小数的函数,a是包括小数位数总共多少位,b表示小数位数
DECIMAL(7,2)表示包括小数位数有7位,小数有俩位

4.DATE_FORMAT()用于以不同的格式显示日期/时间数据。
DATE_FORMAT(date,format)
date 参数是合法的日期。format 规定日期/时间的输出格式。
可以使用的格式有:

格式 描述
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位

数据库备份和还原

--通过Navicat工具
--右键点击数据库,点击转储数据库,点击转储数据和结构,然后选择地址就行
--删库跑路必备技能:
--在cmd命令行窗口进行,若操作系统版本高,则使用管理员模式
--导出:
--mysqldump -u账户 -p密码 数据库名称>脚本文件存储地  用管理员启动cmd
--mysqldump -uroot -proot my0215 > E:/my0215_bak.sql
--导入:
--mysql -u账户 -p密码 数据库名称< 脚本文件存储地址
--mysql -uroot -proot my0215 < E:/my0215_bak.sql

常用字符的执行流程,书写SQL语句和排错的必备:

由上到下先后执行。
FROM -> 决定从哪一个表查询
JOIN -> 决定跟哪一个表关联
ON -> 决定关联表的共同条件
WHERE -> 决定从表中哪一些开始查询(条件过滤,学会善用条件过滤)
GROUP BY -> 决定按照什么分组进行组内查询,一般跟聚集函数联合使用
SELECT -> 决定显示哪一些字段
HAVING -> 在组内条件过滤,一般使用SELECT语句中的聚集函数作为过滤条件
DISTINCT -> 根据select中的字段决定显示哪一些不重复的字段
ORDER BY -> 决定显示的排序规则
LIMIT -> 决定每一页显示多少条件记录

总结:

 这些只是MySQL一些基本操作,还有很多我没写出来,但是这些对于大部分的增删查改已经都可以解决,实在没法解决就去问百度,百度知道一切,如果有不正确的还请大佬们帮忙指出来,勿喷,这其实是我的笔记整理出来的

站在巨人的肩膀上看世界,MySQL初步使用语法相关推荐

  1. 站在巨人的肩膀上看Servlet——原来如此(更适合初学者认识Servlet)

    前言: 有段时间没更新博客了,这段时间因为要准备考试,考完试后又忙了一阵别的事,一直没能静下心来写博客.大学考试真是越来越恶心了,各种心酸,那酸爽,够味.不过还好,马上就要大三了,听大三学长学姐说大三 ...

  2. 【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

    看到在留言中很多朋友提到不太清楚DirectX与游戏引擎的区别的问题,在这里浅墨就专门把自己对游戏引擎的一些理解写成一篇文章,作为我们<Visual C++游戏开发>专栏的游戏引擎导论,也 ...

  3. 知识就是力量,让机器站在巨人的肩膀上

    作者:微软亚洲研究院 闫峻博士 知识是什么?抽象来说,是人类对世界的认知,对宏观及微观世界客观规律的总结.具体来说,大到牛顿定律.量子力学中的科学发现,小到自家孩子的生日.太太做饭常用的酱油颜色,都是 ...

  4. 游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8250057 作者:毛星云(浅墨 ...

  5. 【巨人的肩膀上制造世界】——10——Unity3D实用插件之Vectrosity,轻松便捷的实现2D/3D画线功能

    [巨人的肩膀上制造世界]--10--Unity3D实用插件之Vectrosity,轻松便捷的实现2D/3D画线功能 目录 1.博客介绍 2.内容 (1)编辑器预制线条 (2)编辑器修改线条 (3)线条 ...

  6. 【巨人的肩膀上制造世界】——1——Unity3D实用插件之地形插件Gaia,高质高效搭建你的地形,全中文教程!

    Unity3D快速搭建你的高质量地形,最好用的Unity3D地形制作插件Gaia,全中文教程 目录 1.博文介绍 2.Gaia3分钟制作地形效果展示 3.Gaia导入 4.Gaia编辑栏中文详解 (1 ...

  7. 【巨人的肩膀上制造世界】——2——Unity3D实用插件之QHierarchy,更方便的管理你的层级面板,全中文教程!

    [巨人的肩膀上制造世界]--2--Unity3D实用插件之QHierarchy,更方便的管理你的层级面板,全中文教程! 目录 1.博客介绍 2.QHierarchy介绍 3.QHierarchy操作详 ...

  8. 3小时快速入门数学建模竞赛-建模技巧2:追根溯源,站在巨人的肩膀上

    我们要检索哪些信息?和怎样获得快速.准确的信息?这两个问题. 首先回答第一个问题,我们需要检索哪些信息?我们从我们需要求解的内容入手,请看思维导图和系统框图,我们需要求解35年寿命期内的发电总量.经济 ...

  9. 站在巨人的肩膀上:C#编写WindowsService

    本文将为大家详细介绍如何用C#编写一个系统服务,当然肯定不是教大家从头写,而是在一个搭建好的框架上进行自我创作! 一.项目整体架构 本项目的开发是针对某设备的开启异常情况进行邮件提醒,针对监控到的未开 ...

最新文章

  1. 11行代码AC——习题2-4 子序列的和(subsequence)——解题报告
  2. vue 动态设置背景图片
  3. mui hello html5 安装,HBuilder开发App Step1——环境搭建,HelloMUI 以及真机调试(示例代码)...
  4. slf4j注解log报错_SpringBoot自定义日志注解,用于数据库记录操作日志,你用过吗?...
  5. 【转】关于DCMTK中像素存储以及getoutdata()函数的使用
  6. 【POJ - 3494】Largest Submatrix of All 1’s(加一点思维后化成 单调栈)
  7. 15.5.1【Task实现细节】 生成的代码
  8. 'tensorflow' has no attribute 'sub'
  9. java输入验证码代码,JavaWeb 实现验证码功能(demo)
  10. MySQL 6.子查询
  11. centos下配置LNMP环境(源码安装)
  12. Python Thrift 简单示例
  13. 2022创业基础——李家华等章节测试答案以及期末考试答案
  14. 非极大值抑制算法详解
  15. libaio介绍和使用
  16. autojs图色工具
  17. 使用Unicode字符集出现乱码问题
  18. w7忘记计算机密码,win7系统忘记电脑开机密码的解决方法
  19. 技术管理角度看C++游戏程序员发展
  20. 关于数据埋点的认识以及在流量分析系统中的实际使用

热门文章

  1. TIM定时器与PWM使用
  2. 对PHP 三元运算、empty、isset用法的理解
  3. “区块链”一词不过是唬人的空壳子
  4. 把成语用到登峰造极的作文
  5. Win10安装IIS并配置ASP.NET 4.0
  6. xml添加下着重号样式
  7. 用java语编写求素数程序_java求素数代码
  8. Oracle_字段拼接_逗号_单引号
  9. 很多人调用接口会阻塞吗_经常提前还花呗会提高额度?很多人都想错了,你也是这样吗?...
  10. 【JavaSE】函数or方法?方法的重载讲解