一、基础知和表内操作语法

1.sql语句对大小写不敏感!!!

  • SELECT - 从数据库表中获取数据:select * from (columns/tables/databases);
  • UPDATE - 更新数据库表中的数据:
  • DELETE - 从数据库表中删除数据
  • INSERTinsertinto INTO - 向数据库表中插入数据

2.phpstudy下mysql数据库链接:在mysql文件夹下bin文件夹开启命令行,输入mysql -u root(默认数据库账号) -p root(默认数据库密码)

3.展示数据库:show databases;选择数据库:use database_name;

展示表名:show tables from database_name;     select * from  database_name;

例如:select username from users;/ /从users表内username列选出username的值

4.where子句(限定条件):如需有条件地从表中选取数据,可以缩小范围(可以使用运算符进行匹配,like--搜索某种模式、between--在某个范围内)

5.distinct关键字:对表中重复值不再输出(仅希望列出不同值)

例如:select distinct username from users;//重复出现的username列下的数据将不再列出

6.order by语句:根据指定的列对结果集进行排序,倘若列不存在则将会报错,这也是sql注入爆列数的原理,默认按照升序对记录进行排序,如若要使用降序可用desc关键字在对应列末添加

7.在某张表中插入某一行数据:

完整一行数据:insert into table_name values(column1_value,column2_value,...);

特定列下特定数据:insert into table_name(column1_name,column4_name) values('column_value1','column4_value')

例如:table_name=students,columns_name=["name","sex","age","city"]

students:

name sex age city
lihua boy 17 beijing
zhangsan boy 18 nanchang

insert into students values("hanmei","gril",19,"guangdong");

于是新增行:

hanmei gril 19 guangdong

8.在某张表中更新某行某列数据:

update table_name set target.column_name = 'new_value' where column_name='value';

例如:table_name=students,target.column_name=city,column_name='name'

update students set city='yunnan' where name='zhangsan';

于是更新后:

zhangsan boy 18 yunnan

8.删除某张表中的某一行或者所有行:

某一行:delete from table_name where column_name=value;

所以行:delete from table_name;    delete *from table_name;

例如:table_name=students,column_name=name;

delete from students where name='zhangsan';

于是删除后:

name sex age city
lihua boy 17 beijing

二、进阶教程

了解ddl语句

  • CREATE DATABASE - 创建新数据库:create database <name>;
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE <name> ADD <column_name> DATATYPE - 创建新列
  • ALTER TABLE <name>  DROP COLUMN <column_name> - 删除列
  • ALTER TABLE <name> ALTER COLUMN <column_name> DATATYPE - 更改列属性
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

students表:

name sex age city
lihua boy 17 beijing
zhangsan boy 18 nanchang
hanmei gril 19 yunnan
lisa gril 18 nanjing

1.TOP子句:用于规定要返回数据的数目,可以在后面添加限定条件

按数量返回数据:select top number * from table_name;

按比例返回数据:select top 50 percent * from table_name;

例如:在students表中选取百分之五十的城市在北京的数据:select top 50 percent * from students where city='beijing';

2.like操作符:用于在where子句中搜索特定模式,%可用于定义通配符;

select column_name from table_name where column_name like pattern;

例如:从students表搜索城市为n开头的学生

select * from students where city like 'n%';

查询结果:

搜索城市为g结尾的学生

select *from students where city like '%g';

拓展:通配符(搜索数据时匹配的模式)

通配符 描述
% 代表零个或多个字符(%sa%,选取名字中含有sa字符串的人)
_ 仅替代一个字符(_ihua,选取名字第一个字符后是ihua的人)
[charlist] 字符列中的任何单一字符([abc],选取名字中含有abc其中任意字符的人)

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符([^abc],选取名字不含abc其中任意字符的人)

4.in操作符:可以在where子句中匹配多个值

select column_name from table_name where column_name in (value1,value2,...);

例如:select sex from students where name in ('lihua','hanmei');

between操作符:也在where子句中使用,会取介于两值的数据范围,包含开始数据不包含结束数据[value1,value2),select * from table_name where column_name between 'value1' and 'value2';

例如选取不在17-18岁的学生:select * from students where age not between 17and 18;

5.join关键字

新建一个relation表:create table relation(id int(20),tel char(20),qq char(20));

当需要使用两个或两个以上数据的表时,可以使用join关键字返回数据,数据库的表可以通过主键(每张表中存在的相同的一个列)联系起来,如上所示,students表和relation表通过id列联系起来

一般表示:select table1_name.column1_name,table2_name.column1_name from table1_name,table2_name where table1.<主键名>=table2.<主键名>;

join关键字表示:select table1_name.column1_name,table2_name.column1_name from table1_name join table2_name on table1.<主键名>=table2.<主键名>;

例如:select students.name,students.age,relation.tel from students join relation on students.id=relation.id;

可以在 join关键字前加入left(左匹配)、right(右匹配)、full属性(全匹配),将匹配输出左或者右的全部值,包括空值

例如:select students.name,students.age,relation.tel from students right join relation on students.id=relation.id;

6.union操作符:用于联合执行两个或多个sql语句并输出结果集

7.sql约束(not null):在创建表时规定数据类型后可在句末添加,表明该列若没有数值则将无法插入其他列的数据,也就是说从可选项变成了必选项;

类似的还有foreignkey约束(约束两张表的链接动作,防止非法数据插入外表)、check约束(规定列只允许特定的值)、defult约束(无值则创建默认值)、primarykey约束(设置主键)...


web小白学习笔记

web安全学习笔记--sql语句(sql注入基础上)相关推荐

  1. Spring.NET学习笔记10——方法的注入(基础篇) Level 200

    多数用户都会将容器中的大部分对象布署为singleton模式.当一个singleton对象需要和另一个singleton对象协作,或者一个非singleton对象需要和另一个非singleson对象协 ...

  2. Web后端学习笔记 Flask(1)基础知识

    基础的准备 1. 使用的python版本 python3.6 2. pycharm编辑器 3. 安装python虚拟环境: python中的虚拟环境: python中的虚拟环境相当于一个抽屉,在这个抽 ...

  3. 【白帽子学习笔记14】SQL注入常用语句

    [白帽子学习笔记14]SQL注入常用语句 目前网站中使用的最多的数据库要算是 ACCESS.SQL Server(MSSQL).MySQL 这三个了,所以这里的手工注入,我就以他们三个数据库来分成三 ...

  4. JavaWeb学习笔记(动态SQL)

    JavaWeb学习笔记(动态SQL) 动态SQL中的元素 < if>元素 < choose>.< when>.< otherwise>元素 < w ...

  5. MySQL学习笔记02【SQL基本概念与通用语法、数据库的CRUD操作】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  6. oracle 最大值及其_学习笔记:Oracle优化 SQL查询最大值 最小值时的优化方法案例...

    天萃荷净 select max(id),min(id) from table优化,分享开发DBA需求,在SQL语句查询最大值.最小值数据时的优化方式案例 1.查看数据库版本 SQL> selec ...

  7. MyBatis:学习笔记(4)——动态SQL

    MyBatis:学习笔记(4)--动态SQL 转载于:https://www.cnblogs.com/MrSaver/p/7453949.html

  8. 更新sql语句 sql注入_SQL更新语句– SQL中的更新查询

    更新sql语句 sql注入 SQL Update Statement or Update Query in SQL is used to modify the column data in table ...

  9. 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能

    [数据库学习笔记]Day03 - SQL语言基础及数据库定义功能 〇.本文所用数据库表格: 一.关系运算: 关系运算,数学名词,基本运算有两类:一类是传统的集合运算(并.差.交等),另一类是专门的关系 ...

最新文章

  1. Linux学习第三章
  2. ImportError: dynamic module does not define module export function (PyInit_example)
  3. 1.3 单一数字评估指标-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  4. expdp oracle 并行_关于Expdp/Impdp 并行导入导出详细测试结果和并行参数的正确理解!!...
  5. 填坑-十万个为什么?(13)
  6. 03-Flutter移动电商实战-底部导航栏制作
  7. 在 java 的 bin 目录下,jdk 提供了很多使用的工具,下面学习一些监控和故障处理的工具。...
  8. phpStudy下载安装+配置站点+You don't have permission to access / on this server错误解决
  9. 配置 MySQL 服务器容器
  10. CentOS配置服务开机自启
  11. WiFi无法连接?解决macOS Big Sur / Mojave / Catalina上的Wi-Fi问题
  12. 最新小浣熊5.0漫画CMS精仿土豪漫画系统源码
  13. Python游戏开发平台、脚本系统架构设计
  14. directshow
  15. cuda历史版本下载
  16. python windows api截图_Python调用windows API实现屏幕截图
  17. 2019河南对口升学高考试卷计算机专业课,2019河南对口升学高考试卷计算机专业课-9页word资料...
  18. Knockout.js学习笔记----绑定
  19. Jenkins简介与应用
  20. jrtplib下载地址

热门文章

  1. T900------900MHz跳频电台核心模块(兼容P900,远距离)
  2. 敏捷开发模式 与 TDD 的思考总结
  3. PCI-E x1/x4/x8/x16四种插槽区别是什么
  4. python中xlsxwriter_Python中XlsxWriter模块简介与用法分析
  5. 机器学习最优化算法的演变,FTRL一路走来,从LR - SGD - TG - FOBOS - RDA - FTRL
  6. 交叉编译与静态链接问题
  7. golang 生成登录验证码
  8. 前端使用emoji表情
  9. QPSK 对OQPSK对 pi/4QPSK 的区别
  10. html语音聊天室,h5聊天室模板|仿微信聊天室html5