数据库

笔记内容

SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

1. 数据查询语言DQL

数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE

子句组成的查询块:

SELECT <字段名表>

FROM <表或视图名>

WHERE <查询条件>

2 .数据操纵语言DML

数据操纵语言DML主要有三种形式:

  1. 插入:INSERT
  2. 更新:UPDATE
  3. 删除:DELETE

3. 数据定义语言DDL

数据定义语言DDL用来创建数据库中的各种对象-----表、视图、

索引、同义词、聚簇等如:

CREATE TABLE/VIEW/INDEX/SYN/CLUSTER

| | | | |

表 视图 索引 同义词 簇

DDL操作是隐性提交的!不能rollback

4. 数据控制语言DCL

数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制

数据库操纵事务发生的时间及效果,对数据库实行监视等。

mysql常用命令:

数据库相关语句

  1. 进入mysql中的命令

    mysql -u root -p,密码最好设为123456

  2. 展现当前所有数据库:

    show databases;

  3. 创建数据库:

    create database mydb1;(数据库名字,最好设为中文)sql语句不区分大小写,但是自己写的时候可以用大小写区分,关键词都使用大写

    create database if not exists mydb2;(if not exists 表示在没有的情况下创建,有则不会发生改变,也不会报错)

  4. 创建数据库,规定编码表:

    create database mybd2 character set UTF8; (在mysql中UTF-8应该写为 UTF8)

  5. 创建数据库,校队规则,Collation是在一个字符集中进行如何排序的规则

    create datebase mybd3 character set UTF8 collate UTF8_general_ci 不区分大小写

    create datebase mybd4 character set UTF8 collate UTF8_bin;区分大小写

  6. 安 顺序 和 逆序查看表中数据:

    select *from test1 order by name asc; 升序

    select *from test1 order by nasme desc;降序

  7. 查看数据库,显示数据库创建语句:

    show databases; 查看所有的数据库

    show create database db_name; 显示数据库创建语句

  8. 删除数据库

    drop database mybd1;

  9. 修改数据库的编码表

    alter database mydb1 character set utf8;

  10. 备份,恢复数据库

    备份:在cmd中 mysqldump -u 用户名 -p 数据库名>文件名.sql

    恢复:方式一:在mysql中 source 文件名.sql

    ​ 方式二:在cmd 中 mysql -u 用户名 p 数据库名 <文件名.sql

表的相关语句

  1. 在操作表之前一定要先选择数据库

    use 数据库名;

  2. 显示表:

    show tables; 显示全部的表

    desc 表名; 简单描述表结构

    describe 表名;简单描述表结构

    sho create table :查看生成表的 DDL 语句

  3. 创建表:

    create table 表名( 字段名 字符类型,字段名 字符类型,);

    和java 相反,数据类型写在名字后

    create table student(id varchar(20, age int);

    注意表的名字如果和关键字一样,要用``隔开(在1的旁边,不是单引号)

    create order(id int); 在之后的表操作中也一直要加上```

  4. 修改表

    • 增加新列

      alter table 表名 add 字段名 字符类型(限定大小),add 字段名 字符类型(限定大小)

      alter table student add id int,add name varchar(100);
    • 修改类的字段类型

      alter table 表名 modify 字段名 字符类型(限定大小);

      alter table student id varchar(100);
    • 删除某列

      alter table 表名 drop 字段;

      alter table student drop id;
    • 修改表名

      altet table 表名 to 新表名

      alter table stuff to user;
    • 修改表的字符集

      alter table 表名 character set 字符集;

      alter table student character set utf8;
    • 修改表某列的名称

      修改表的方式有两种

      Change既可以修改列的名称,也可以修改列的字段类型

      Modify只可以修改列的字段类型。

      举例:

      alter table student change name username varchar(50);

      alter table student modify name varchar(50);
    • 修改表的默认值

      举例:修改了studnet中的name的默认值为0

      alter table studnet modify name varchar(50) default 0;
    • 删除表

      drop table 表名;

表内数据的操作

  1. 新增数据(Insert语句)

    字符串和日期型数据应包含在单引号中。

    表名后没有带列名的需要把所有数据都填充,而且数据类型要和表结构一直,或者可以指定相应列名,单独赋值

    a. 表名后没有带列名的,把数据全部填充

    insert into 表名 values(数据);//有s啊!!s!!

    举例 :在student表中新增一个学生数据,学生有 id 姓名,年纪,三个属性, 数据类型分别为 int varchar(100) int

    insert into student values(123,'赵元',18);

    b. 指定了相应的类名,单独赋值,未填充的数据来自default

    insert into 表名(列明1,列名2) values(数据1,数据2);

    insert into student (id,name) values(123,'赵元');

    插入空值 insert into table values(null),没啥意思

    注意:插入单行的时候使用VALUES,在插入多行的时候使用VALUE 这样比较快一点

  2. 修改数据(Update语句)

    • UPDATE语法可以用新值更新原有表行中的各列。
    • SET子句指示要修改哪些列和要给予哪些值。
    • WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。

      a. 未限定范围,指定列的指都被改变

      update 表名 set 列名=数据;

      update student set age=18;

      b. 用where限定范围

      update 表名 set 列名=数据 where 限定范围。(where后跟的是一个逻辑表达式,即表达式的结果是布尔类型。)
  3. 删除数据(Delete语句)

    delete from table_name     

    [WHERE where_definition]

  • 如果不使用where子句,将删除表中所有数据。
  • Delete语句不能删除某一列的值(可使用update)删除的单位是行(行)
  • 使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。
  • 同insert和update一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题。

    a. 删除某一行的值 delete from student where id =1; 将student中id为1 的这一行数据都删掉了

    b. 删除一个表内所有数据 delete from student ;

==删除表中数据也可使用TRUNCATE TABLE 语句,它和delete有所不同 ==

delete 和drop的区别:

delete from 表名:删除一个表内的元素

drop table 表明:删除一个表

数据查询语言--简单查询(DQL)

DQL:Data Query Language

作用:查询表中的数据。

关键字:

SELECT

  1. 测试计算

    虽然 SELECT 语句通常用于从表中检索数据,但我们也可以用它计算表达式和函数的值。如:

    没啥意义

    SELECT 32; -- 计算表达式32的值

    SELECT NOW(); -- 查看当前的时间

    SELECT TRIM(' ab cd ‘); -- 修剪字符串' ab cd '左右两边的空白

    SELECT CONCAT('ab','cd’); -- 拼接字符串'ab'和'cd'
  2. 查询单列

    SELECT column_name FROM table_name;

    举例:查询表 students 中学生的姓名。select name from student;
  3. 查询多列

    SELECT col_name1, col_name2, … , col_namen

    FROM table_name;

    举例:我们查询 t_students 中学生的姓名和各科成绩。select chinese,math from student;
  4. 查询所有列

    select *from table_name;

    举例:查询 t_students 表中的所有数据。select *from student;
  • 注意:除非确实需要表中的所有数据,否则最好不要使用 * 通配符。因为,查询不必要的数据会降低查询和应用程序的效率。
  • 提示:当我们不知道列的名称时,可以使用 * 通配符获取它们的数据。
  1. 使用 WHERE 子句过滤记录.

    • SELECT * | {column_names}
    • FROM table_name
    • WHERE <filter_condition>; //filter_condition 是一个逻辑表达式,即表达式的结果是布尔类型。、
  2. 去重 :DISTINCT 过滤相同的记录

    SELECT DISTINCT {column_names}

    FROM table_name;

    注意:DISTINCT 操作的基本单位是行(记录),只有当两行数据一模一样的情况下,才会删除另一行。

    如:查询 t_students 表中的不同班级数据。

    select distinct id from student where calss;

  3. 限制结果:SELECT 语句返回所有匹配的记录,指向显示一定数量的行数的时候需要用到

    • 方式1: LIMIT offset, nums; -- LIMIT 3, 4; //偏移量是3,显示4行数据
  • 方式2: LIMIT nums OFFSET offset; //显示num行数据,偏移量是 offset

    注意:offset是指偏移量,当我们从第1行查起,偏移量自然为0。此时,可以写成 LIMIT nums;

    **扩展:**我们可以使用 LIMIT 关键字实现分页查询。 LIMIT (page_num – 1) * page_size, page_size;
  1. 对查询结果进行排序:我们可以使用 ORDER BY 子句对查询结果进行排序。

    多列排序的时候,在最前面的优先级最强(首先按照第一列的要求进行排序,第一列排序完之后再细微调整第二列,也就是优先级由高到低的过程。)

    如: 根据语文成绩 顺序排列,数学成绩 逆序,英语成绩 顺序

    select *from student order by chinese asc, math desc,english asc;

  2. 分组查询

    [GROUP BY {column_names}] [HAVING <filter_condition>]

    使用 HAVING 过滤分组

    举例:查询各班人数

    select count(id) as number from student

    举例: 查询人数大于2的班级

注意:group concat()

当使用group by a列语句之后,在单独检索除了a列以	外的其他字段都没有什么意义,这个时候相同分类的数据	已经合并了, 所以,如果想再取出全部的数据,则必须	使用group concat()函数

注意:在 MySQL 中,0 表示 false,非 0 表示 true,故:SELECT * FROM t_students WHERE 1; 也是合法的。

SELECT语句的执行顺序

(5) SELECT column_name, ...
(1) FROM table_name, ...
(2) [WHERE ...]
(3) [GROUP BY ...]
(4) [HAVING ...]
(6) [ORDER BY ...];
注意:从上到下是写sql语句时正确的语法结构,()括号里面的数字代表该条sql语句在服务器内部解析的先后顺序。

数据类型:

注意:这里以MySQL为例,不同的DBMS的都支持数值类型,字符串类型以及日期类型,但他们的实现可能不一样。

整数

数据类型 占用字节 说明
TINYINT 1 很小的整数
SMALLINT 2 小的整数
MEDIUMINT 3 中等大小的整数
INT 4 普通大小的整数
BIGINT 8 大整数

浮点数类型和定点数类型

类型名称 占用字 说明
FLOAT(M,D) 4 单精度浮点数
DOUBLE(M,D) 8 双精度浮点数
DECIMAL(M,D) M+2 定点数
其中 M 称为精度,表示总共的位数;
D 称为标度,表示小数的位数。
DECIMAL 类型不同于 FLOAT & DOUBLE,DECIMAL 实际是以字符串存放 的,它的存储空间并不固定,而是由精度 M 决定的

时间的数据类型

类型名称 日期格式 占用字节
YEAR YYYY (2018) 1
TIME HH:MM:SS (10:20:00) 3
DATE YYYY-MM-DD (2018-7-23) 3
DATETIME YYYY-MM-DD HH:MM:SS 8
TIMESTAMP YYYY-MM-DD HH:MM:SS 4
ATETIME 和 TIMESTAMP 虽然显示的格式是一样的,但是它们有很大的区别:
DATETIME 的系统默认值是 NULL, 而 TIMESTAMP 的系统默认值是 当前时间 NOW();
DATETIME 存储的时间与时区无关,而 TIMESTAMP 与时区有关。

字符串类型

类型名称 占用字节 说明
CHAR(M) M, 1 <= M <= 255 固定长度字符串
VARCHAR(M) L+1, L <=M, 1 <=M <=255 变长字符串
TINYTEXT L+1, L < 2^8 非常小的文本字符串
TEXT L+2, L < 2^16 小的文本字符串
MEDIUMTEXT L+3, L < 2^24 中等大小的文本字符串
LONGTEXT L+4, L < 2^32 大的文本字符串
ENUM 1 或者 2个字节,取决于枚举的数目,最大 65535个 枚举类型
SET 1,2,3,4或8个字节 集合类型
ENUM 类型总有一个默认值,当ENUM 列声明为NULL,则默认值为NULL。如果 ENUM 列被声明为 NOT NULL,则其默认值为列表的第一个元素。

二进制类型

不怎么用

字符串类型存储的是非二进制字符串(字符字符串),

二进制类型存储的是二进制字符串(字节字符串)

常见运算符介绍:

基本和java 一样,与java 不同的有一下几个:

		IS NULL	是否为NULL
<=> 安全的等于
IN 是否在列表内
LIKE 通配符匹配

IiKE 通配符规则:

not like

not like

‘%’ 匹配任何数目的字符,甚至包括零字符

‘_’ 只能匹配一个字符

例如: 查询student中姓名第一个字为‘赵’的学生

select *from tsudnet where name like ‘赵%’

别名

注意:在很多DBMS中,AS关键字是可选的,不过最好使用它,这被视为一条最佳实践。

提示:AS 关键字不仅能给列起别名,还可以给表起别名。在多表查询中,我们会这样使用它。

我们可以给 Chinese + math + english 起一个更简单直接一点的名字。

SELECT name, chinese + math + english AS total FROM t_students;

聚合函数

  • COUNT()

    COUNT(*) 计算表中的总行数;

      Select count(*)|count(列名) from tablename
    [WHERE where_definition]
    COUNT(column_name) 计算指定列下的总行数,计算时将忽略值为NULL的行。
  • SUM():返回指定列的所有值之和

    elect sum(列名){,sum(列名)…} from tablename

    [WHERE where_definition]

    计算时将忽略值为NULL的行;

  • AVG():返回指定列的平均值

    计算时将忽略值为NULL的行;

    Select sum(列名){,sum(列名)…} from tablename

    [WHERE where_definition]

  • MAX():返回指定列的最大值

    计算时将忽略值为NULL的行;

    Select max(列名) from tablename

    [WHERE where_definition]

  • MIN():返回指定列的最小值

    计算时将忽略值为NULL的行;

    Select max(列名) from tablename

    [WHERE where_definition]

分组

使用 GROUP BY 关键字对数据进行分组。

[GROUP BY {column_names}] [HAVING<filter_condition>]

使用 HAVING 过滤分组

注意:使用分组后,数据会根据所指定的字段分组,但是不能把每个组内的数据完全显示

这时需要使用group_concat()函数,使全部的数据显示出来。

例如:

聚合函数和group by分组一起使用的时候,聚合函数会对每个一个组进行单独计算

举例:查询每个班的学生人数

select count(id) ,class as count from student group by class;

查询每个班人数大于2 的班级和人数:

select count(id) as number,class as count from student group by class having number>2;

Having 和where???

  • where语句在分组之前,执行完where语句再去对数据进行分组

  • having语句在分组之后,执行完分组之后,再对分组数据进行一个过滤筛选。

    例如:仅选出各科成绩都在90之上的学生,之后,对学生进行分组

数据完整性

数据完整性是为了保证插入到数据库中的数据是正确的,它防止了用户可能的输入错误。

数据完整性主要分为以下三类:

  • 实体完整性 (唯一性)

    规定表的一行(即每一条记录)在表中是唯一的实体。实体完整性通过表的主键来实现。
  • 域完整性:

    指数据库表的列(即字段)必须符合某种特定的数据类型或约束。比如NOT NULL。
  • 参照完整性:

    保证一个表的外键和另一个表的主键对应。

定义表的约束

定义主键约束

  • 定义主键约束

    primary key:不允许为空,不允许重复

    (可以区分两条记录的唯一性)
新建主键:
方式一:新建表的时候创建
create table student (id int PRIMARY KEY);
primary key就是设置主键的关键字
方式二: 修改表创建主键
alter table studnet MODIFY id int PRIMARY KEY;
alter table studnet ADD id int PRIMARY KEY;
MODIFY 字段 类型 PRIMARY KEY,设置为主键
ADD 字段 类型 PRIMARY KEY 新增字段为主键
  • 删除主键:

    alter table tablename drop primary key ;

  • 定义主键自动增长

    auto_increment

       方式一:新建表的时候创建自增长
    create table student(id int PRIMARY KEY AUTO_INCREMENT); 方式二: 修改表这设置主键自增长
    alter table student MODIFY id int PRIMARY KEY AUTO_INCREMENT;
  • 定义唯一约束

    unique

  • 定义非空约束

    not null

  • 定义外键约束

    constraint constraint_FK_name foreign key(ordersid) references orders(id),

注意:实体完整性的自动维护

实体完整性中的自动维护,当删除自动维护添加的主键的时候,之后再添加元素,id也从所删的主键之后添加,不会连续,自己添加主键后,自动维护添加的主键是从最大的id开始自增。

定义唯一性约束 Unique

用在 例如用户注册的时候选择手机号或者邮箱

唯一性约束,可以插入多个null数据,但是其他的数据只能是唯一的

  • 定义唯一性约束

    alter table student ADD email varchar(20) UNIQUE;

    alter table student MODIFY id VARCHAR(20) UNIQUE;
  • 删除唯一性约束:

    alter table student DROP INDEX email;

Not NULL

两种方式:

  • 第一种在新建表的时候,添加not null约束。

    create table student(id int not null);
  • 第二种在新建完表之后,手动添加。

    alter table student id int not null;

外键约束

比如有两张表,一张学生选课表,另外一张课程表,学生选择的课程必须是课程表中出现的课程,这个时候可以用外键来约束。如果不是课程表内的课程,则无法插入。

新建外键:

  • 方式一:在创建表的时候添加外键

    create table student(id int primary key auto_increment

    name varchar(20),

    cid int,

    CONSTARAINT student_course_FK foreign key (cid) REFERENCES course(id));

    create table course(

    id int PRIMARY KEY AUTO_INCREMENT,

    cname varchar(20));
  • 方式二:修改表添加外键

    alter table student add CONSTRAINT student_course_FK foreign key(cid) references course(id);

    删除外键:

    alter table student drop foreign key student_course_FK;

外键的优劣:

关于外键的优劣,有两种观点,一种认为外键可以起到很好的约束作用,值得使用

另外一种观点,认为外键虽然可以起到约束,但是同时它给数据库系统带来的整体开销远远大于获得的益处。

多表设计:

一对多:在多的一方添加外键约束,有效地减少数据冗余,也就是减少数据重复

多对多:生成第三个表,存储她们的关系

一对一:可以将另外一张表的字段直接写入表中,很不常用

多表查询

  • 连续查询
  • 子查询
  • 联合查询
  • 报表查询

连续查询:

  • 交叉连接(cross join):不带on子句,返回连接表中所有数据行的笛卡儿积。
  • 内连接(inner join):返回连接表中符合连接条件及查询条件的数据行。
  • 外连接:分为左外连接(left out join)、右外连接(right outer join)。与内连接不同的是,外连接不仅返回连接表中符合连接条件及查询条件的数据行,也返回左表(左外连接时)或右表(右外连接时)中仅符合查询条件但不符合连接条件的数据行。

    Select *from TABLE1 join_type TABLE2 [on (join_condition)]

    [where (query_condition)]
交叉连接

返回所有结果的笛卡尔积。交叉连接基本没有使用的场景,但是交叉连接的结果作为其他连接查询的基础。

两种方式:(交叉连接查询table1 和table 2)

  • 方式一:select * from table1,table2;
  • 方式二:select * from table1 CROSS JOIN table2;

内连接

返回连接表中符合连接条件及查询条件的数据行。

  • 显式内连接:使用inner join关键字,在on子句中设定连接条件

    SELECT * FROM customer c INNER JOIN orders o ON c.id=o.customer_id;

    相当于:不需要再使用as 设置别名,别名可以直接跟在后面

    SELECT * FROM customer as c INNER JOIN orders as o

    ON c.id=o.customer_id;
  • 隐式内连接:不包含inner join关键字和on关键字,在where子句中设定连接条件

    SELECT * FROM customer c,orders o WHERE c.id=o.customer_id;

外连接查询:

左连接查询和右连接查询没有太大区别

左连接查询:
  • 使用left outer join关键字,在on子句中设定连接条件

    SELECT * FROM customer c LEFT OUTER JOIN orders o ON c.id=o.customer_id;

    不仅包含符合c.id=o.customer_id连接条件的数据行,还包含左表中的其他数据行
  • 带查询条件的左外连接查询,在where子句中设定查询条件

    SELECT * FROM customer c LEFT OUTER JOIN orders o ON c.id=o.customer_id WHERE o.price>250;
右连接查询:
  • 使用right outer join关键字,在on子句中设定连接条件

    SELECT * FROM customer c RIGHT OUTER JOIN orders o ON c.id=o.customer_id;

    不仅包含符合c.id=o.customer_id连接条件的数据行,还包含orders右表中的其他数据行
  • 带查询条件的右外连接查询,在where子句中设定查询条件

    SELECT * FROM customer c RIGHT OUTER JOIN orders o ON c.id=o.customer_id WHERE o.price>250;

子查询

  • 子查询也叫嵌套查询,是指在where子句或from子句中又嵌入select查询语句(一般写在where字句)
  • 练习:

    查询“郭靖”的所有订单信息

    SELECT * FROM orders WHERE customer_id=(SELECT id FROM customer WHERE name LIKE ‘%郭靖%');

    select * from customer c inner join orders o on c.id = o.customer_id and c.name like '%郭靖%';

联合查询 UNION

  • 联合查询能够合并两条查询语句的查询结果,去掉其中的重复数据行,然后返并没有重复数据行的查询结果。联合查询使用union关键字

    SELECT * FROM orders WHERE price>100 UNION SELECT * FROM orders WHERE customer_id=1;

报表查询

  • 报表查询对数据行进行分组统计,其语法格式为:

    select … from … [where…] [ group by … [having… ]] [ order by … ]

    -其中group by 子句指定按照哪些字段分组,having子句设定分组查询条件。

MySQL快速入门及常用命令的更多相关文章

  1. Git快速入门和常用命令

    一.快速入门 本地初始化一个项目 首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中. git config --global us ...

  2. git 快速入门及常用命令

    身为技术人员,都知道Git是干嘛的.从服务端角度它是代码仓库,可以多人协作.版本控制.高效处理大型或小型项目所有内容:从客户端讲,它能够方便管理本地分支.且与服务端代码的同步,从拉取.合并.提交等等管 ...

  3. Docker(2):快速入门及常用命令

    什么是Docker? Docker 是世界领先的软件容器平台.开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题.运维人员利用 Docker 可以在隔离容器中并行运行和管理 ...

  4. ETCD快速入门-03 常用命令

    3. ETCD 常用命令     etcdctl是一个命令行的客户端,它提供了一些命令,可以方便我们在对服务进行测试或者手动修改数据库内容.etcdctl与kubectl和systemctl的命令原理 ...

  5. MySQL基础入门之常用命令介绍

    mysql命令介绍 mysql 是数据库管理命令 通过mysql --help来查看相关参数及使用说明 mysql --help                #mysql数据库管理命令 Usage: ...

  6. MySQL基础入门之常用命令使用

    如何启动MySql服务 /etc/init.d/mysqld start service mysqld start Centos .x 系统 sysctl start mysqld 检测端口是否运行 ...

  7. MySQL 快速入门教程

    转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...

  8. MySql基础笔记(一)Mysql快速入门

    Mysql快速入门 一)基本概念 1)表 行被称为记录,是组织数据的单位.列被称为字段,每一列表示记录的一个属性. 2)主键 主键用于唯一的标识表中的每一条记录.可以定义表中的一列或者多列为主键, 但 ...

  9. MySQL 快速入门(一)

    目录 MySQL快速入门 简介 存储数据的演变过程 数据库分类 概念介绍 MySQL安装 MySQL命令初始 环境变量配置 MySQL环境变量配置 修改配置文件 设置新密码 忘记密码的情况 基本sql ...

随机推荐

  1. react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面

    一.前言 9月,又到开学的季节.为每个一直默默努力的自己点赞!最近都沉浸在react native原生app开发中,之前也有使用vue/react/angular等技术开发过聊天室项目,另外还使用RN ...

  2. 推荐一款适合Dynamics 365/Dynamics CRM 2016 使用的弹出窗插件AlertJs

    Github地址: https://github.com/PaulNieuwelaar/alertjs 目前有两个版本,3.0版本(30天免费试用)以及2.1版本(完全免费) ------------ ...

  3. 实验吧简单的SQL注入1,简单的SQL注入

    接上面一篇博客. 实验吧简单的sql注入1 题目连接   http://ctf5.shiyanbar.com/423/web/ 同样,直接输入 1加个但引号,结果下面有返回错误,            ...

  4. [PHP] 内部接口简单加密验证方式

    1. 当有内部系统之间进行调用的时候,也需要简单的进行一下调用方的验证,一种简单的内部接口加密验证方式.此加密方式需要三个参数,分别是api地址,pin码,entry标识,其中pin和entry是接口 ...

  5. Webshell篇

    常用方法简介: 一.0day拿webshell 参考工具:织梦漏洞利用小工具 二.通过注入漏洞拿Webshell 前提条件:具有足够权限,对写入木马的文件夹要有写入权限,知道网站绝对路径. 对于mss ...

  6. selenium截取元素

    http://www.mamicode.com/info-detail-2161474.html 常见问题 https://blog.csdn.net/u010616442/article/detai ...

  7. C++学习三 模板类出错总结(Missing template arguments before 'L')

    一.模板类的说明 模板类有一个好处是可以放宽你输入的数据类型. 比如有这样的一个函数: int add(int x, int y) { return x+y; } 这个函数对于int类型的x,y才适合 ...

  8. Jenkins根据svn版本号进行构建

    在svn版本url后面加上“@svn版本号”,如@2105 原文:https://blog.csdn.net/jlminghui/article/details/40426849

  9. P1验证性内容

    #include<stdio.h> int main() { printf("201983270555"); return 0; } #include<stdio ...

  10. [算法模版]Tarjan爷爷的几种图论算法

    [算法模版]Tarjan爷爷的几种图论算法 前言 Tarjan爷爷发明了很多图论算法,这些图论算法有很多相似之处(其中一个就是我都不会).这里会对这三种算法进行简单介绍. 定义 强连通(strongl ...