Web安全——数据库mysql学习

news2024/11/16 7:56:46

数据库mysql基础

  • Web安全分享
  • 一·、数据库的基本操作
    • 1、MYSQL登录与退出
    • 2、MYSQL数据库的一些解释
    • 3、MYSQL注释符有三种:
  • 二、数据库的一些基本操作
    • 1、数据库的增删改查(sql语句)
  • 三、table 表的操作
    • 1、查看表结构
    • 2、查看表的内容
    • 3、建立表
    • 4、约束条件
    • 5、修改表的操作
  • 四、数据的增删改查
    • 1、增
    • 2、删
    • 3、更新
    • 4、查
      • 1、in 查询
      • 2、and查询
      • 3、or查询
      • 4、聚合查询
      • 5、分组查询
      • 6、mysql的子查询
      • 7、联合查询

Web安全分享

1、Web安全——HTML基础
2、Web安全——DIV CSS基础
3、Web安全——JavaScript基础
4、Web安全——PHP基础
5、Web安全——JavaScript基础(加入案例)
6、靶场搭建——搭建pikachu靶场

一·、数据库的基本操作

1、MYSQL登录与退出

D:\phpStudy\MySQL\bin
登陆: 输入 mysql -uroot -p -P3306 -h127.0.0.1
退出的三种方法

mysql > exit;
mysql > quit;
mysql > \q;

语法使用:
数据库的登陆:

Microsoft Windows [版本 10.0.22621.4]
(c) Microsoft Corporation。保留所有权利。

C:\Users\lenovo>mysql -uroot -p123456 -h127.0.0.1
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

这里版本我们可以看到为mysql5.7.26
下面为帮助指令:

mysql> help

For information about MySQL products and services, visit:
   http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
   http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:
   https://shop.mysql.com/

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
notee     (\t) Don't write into outfile.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.

For server side help, type 'help contents'

mysql>

以及某一个命令在mysql下如何使用查询:

mysql> help use
Name: 'USE'
Description:
Syntax:
USE db_name

The USE db_name statement tells MySQL to use the db_name database as
the default (current) database for subsequent statements. The database
remains the default until the end of the session or another USE
statement is issued:

USE db1;
SELECT COUNT(*) FROM mytable;   # selects from db1.mytable
USE db2;
SELECT COUNT(*) FROM mytable;   # selects from db2.mytable

The database name must be specified on a single line. Newlines in
database names are not supported.

URL: http://dev.mysql.com/doc/refman/5.7/en/use.html


mysql>

接下来为三种不同的退出方式:

mysql> exit;
Bye

C:\Users\lenovo>
mysql> quit;
Bye

C:\Users\lenovo>
mysql> \q;
Bye

C:\Users\lenovo>

2、MYSQL数据库的一些解释

注意: 数据库就相当于文件夹,表就相当于文件
在这里插入图片描述
我们可以看见这里面即为我们创建并使用的数据库,同时打开之后都为很多的表单。

3、MYSQL注释符有三种:

1、#...
2、"--  ..."
3、/*...*/

二、数据库的一些基本操作

1、数据库的增删改查(sql语句)

这里db*为数据库名称,可随意:

  • 增: create database db1;
  • 删: drop database db1;
  • 改: alter database db1 charset utf8
  • 查: show databases;#查看所有的数据库

实际操作:
创建数据库:

mysql> create database moondata;
Query OK, 1 row affected (0.00 sec)

查看数据库:

ysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| moondata           |
| mydata             |
| mysql              |
| performance_schema |
| pikachu            |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

mysql> show create database moondata;
+----------+-------------------------------------------------------------------------------------------+
| Database | Create Database                                                                           |
+----------+-------------------------------------------------------------------------------------------+
| moondata | CREATE DATABASE `moondata` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |
+----------+-------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

修改数据库:

mysql> alter database moondata charset utf8;
Query OK, 1 row affected (0.00 sec)

mysql>

删除数据库:

mysql> show  databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| moondata           |
| mydata             |
| mysql              |
| performance_schema |
| pikachu            |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

mysql> drop database moondata;
Query OK, 0 rows affected (0.02 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydata             |
| mysql              |
| performance_schema |
| pikachu            |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

mysql>

其他命令:
查看指定的数据库 show create database db1;

mysql> show create database moondata;
+----------+-------------------------------------------------------------------------------------------+
| Database | Create Database                                                                           |
+----------+-------------------------------------------------------------------------------------------+
| moondata | CREATE DATABASE `moondata` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |
+----------+-------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

设置默认的utf8,在配置文件中:写上
character_set_server = utf8
use db2
select database() #查看你当前在哪个文件夹

重命名数据库 RENAME database olddbname TO newdbname

show status; 显示一些系统特定资源的信息,例如,正在运行的线程数量。

desc tabl_name; 显示表结构,字段类型,主键,是否为空等属性,但不显示外键。

show databases 查看这个mysql里面有多少个库

use mysql

use 选择数据库

show tables 查看当前库里面所有的表

mysql> select password from user where user='root';

Mysql 5.7 select authentication_string,user from mysql.user;

查看当前数据库 里面的表user 用户为root的密码

alter database 数据库名 character set utf8;

三、table 表的操作

1、查看表结构

desc table

DESCRIBE 表名;

2、查看表的内容

select * from table_name

3、建立表

CREATE TABLE 表名 (
属性名 数据类型 [完整约束条件],
属性名 数据类型 [完整约束条件],


属性名 数据类型 [完整约束条件]
);
字段名就是属性名

完整的建立表的语句

create table users(id int(7) AUTO_INCREMENT,
						username varchar(100) not null,
						password varchar(100) not null,
						PRIMARY KEY(id)
						)ENGINE=InnoDB DEFAULT CHARSET=utf8;
	
mysql> create table users(id int(7) UNSIGNED auto_increment,username varchar(30) not null,password varchar(32) not null,email varchar(40),primary key (id))engine=myisam default charset=utf8;
Query OK, 0 rows affected (0.00 sec)

if not exists表示当相同的表名存在时,则不执行此创建语句,避免语句执行错误

create database if not exists [table];

ENGINE=InnoDB DEFAULT CHARSET=utf8;
ENGINE 设置表的引擎 和默认的字符类型
常见的数据库引擎
InnoDB myisam
数据类型
https://www.cnblogs.com/-xlp/p/8617760.html

4、约束条件

PRIMARY KEY 标识该属性为该表的主键,可以唯一的标识对应的元组
FOREIGN KEY 标识该属性为该表的外键,是与之联系某表的主键

NOT NULL 标识该属性不能为空
UNIQUE 标识该属性的值是唯一的
AUTO_INCREMENT 标识该属性的值是自动增加,这是MySQL的SQL语句的特色
DEFAULT 为该属性设置默认值

5、修改表的操作

修改表
格式: ALTER TABLE 旧表名 RENAME 新表名;
修改字段的数据类型:

ALTER TABLE 表名 MODIFY 属性名 数据类型;

修改字段名:

ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;

增加字段名:

ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];

删除字段:

ALTER TABLE 表名 DROP 属性名;

更改表的存储引擎:

格式: ALTER TABLE 表名 ENGINE = 存储引擎名;

四、数据的增删改查

为表中所有字段添加数据
语法: INSERT INTO 表名(字段名1,字段名2,…)VALUES(值1,值2,…);
mysql> insert into users (id,username,password)values(1,'moon','123456');

1、增

语法: INSERT INTO 表名 VALUES(值11,值2,…);
mysql> insert into users values(null,'test','123456');
语法: INSERT INTO 表名(字段1,字段2,…)VALUES(值1,值2,…)
语法: INSERT INTO 表名 SET 字段名1=值1[,字段名2=值2,…]
举例: INSERT INTO student SET id=4,name='zhaoliu',grade=72;
同时添加多条数据
语法:
INSERT INTO 表名[(字段名1,字段名2,…)]VALUES (值1,值2,…),(值1,值2,…),
mysql> insert into users (id,username,password)values(null,'moon','123456'),(null,'alex','123456');

:INSERT INTO 表名[(字段名1,字段名2,…)]VALUES (值1,值2,…),(值1,值2,…),(值1,值2,…)
mysql> insert into users values(null,'moon1','123456'),(null,'alex1','123456');

2、删

DELETE FROM 表名 [WHERE 条件表达式
delete from users where id=1;
删除全部数据
DELETE 语句中没有使用WHERE语句,则会将表中所有记录都删除。
DELETE FROM 表名
删除全部数据的另一种方法——TRUNCATE

3、更新

语法: UPDATE 表名 SET 字段名1=值1,[ ,字段名2=值2,…][ WHERE 条件表达式 ]

update users set  password='aaaa' where id=1;
update users set  password='123456',username='moon' where id=1
update users set  password=456789;

4、查

select * from users;
星号代表所有的字段
查询指定的字段
select username,password from users;

  • 按条件调节查询
  • 按关系来查询

语法: SELECT 字段名1,字段名2,…FROM 表名WHERE 条件表达式

1、in 查询

SELECT * FROM student2 WHERE id IN (1,2,3);
BETWEEN AND 关键字的查询
select * from users where id not between 1 and 10;
DISTINCT 关键字的查询
select distinct username from users
like查询 一般都会给跟着 %
select * from users where username like "%m%" ;
下划线 _ 匹配一个字符
select* from users where username like "moo_"

2、and查询

满足多个条件
select * from users where id=1 and username='moon';

3、or查询

满足任意一个条件
select * from users where id=1 or username='moon';
ORAND 一起使用的情况
ORAND 一起使用的时候,AND 的优先级高于 OR,因此二者一起使用时,会先运算 AND 两边的表达式,再运算 OR 两边的表达式。
mysql> select * from users where id >5 and password='123456c' or username='moon1';

4、聚合查询

count 返回行数

select count(*) from users;
select count(id) from users;

COUNT() 返回某列的行数
SUM() 返回某列值的和
AVG() 返回某列的平均值
MAX() 返回某列的最大值
MIN() 返回某列的最小值

5、分组查询

如果报错请在 my.ini添加
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

GROUP BY

mysql> SELECT * FROM users GROUP BY password;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
|  3 | moon1    | 123456   |
|  1 | moon     | 456789   |
+----+----------+----------+
2 rows in set (0.01 sec)

mysql> SELECT * FROM users GROUP BY username;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
|  2 | alex1    | 456789   |
|  1 | moon     | 456789   |
|  3 | moon1    | 123456   |
+----+----------+----------+
3 rows in set (0.01 sec)

使用 LIMIT 限制查询结果的数量

select * from users limit 2,10;
select * from users as u where u.id=1;

为表和字段取别名
select username as myname from users;

6、mysql的子查询

  • where型子查询
    (把内层查询结果当作外层查询的比较条件)
select * from users where id in (select id from users where id>10);
  • from型子查询
    (把内层的查询结果供外层再次查询)
select * from (select username,age from users) as agev_a where age>20	
select * from (select * from users where id>=10) as age_10;	

(select * from users where id>=10)查询出来的是一个集合 别名为age_10
select * from age_10

  • exists型子查询
    (把外层查询结果拿到内层,看内层的查询是否成立)
select * from users where EXISTS (select * from users where id>1)

7、联合查询

(两个表的查询)
注释: 默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL
ALLUNION 一起使用时(即 UNION ALL),不消除重复行
UNION ALL 查询全部 而且不会消除重复的行
union

SQL UNION ALL 语法
union的用法及注意事项
两次查询的列数必须一致
select * from users union select *,1 from news;

CREATE TABLE `news` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) not NULL,
  `content` varchar(255) not null,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; 
insert into news (title,content)values('a1','a1');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/728874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小红书发布图文视频笔记软件

小红书发布图文视频笔记软件,🆘这个工具,不愧是做小红书的神!附教程#新媒体 #微信创作者助手 #小红书 微信时刻 软件有月卡、季卡、半年卡、年卡 【引流脚本软件开发定制,欢迎你】 服务时间:(8&#xff1a…

公司新来了个测试,一副毛头小子的样儿,哪想到是新一代卷王。。。

内卷,是现在热度非常高的一个词汇,随着热度不断攀升,隐隐到了“万物皆可卷”的程度。 在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是…

vue基础-某个项目ESLint不生效问题

文章目录 前言一、解决方法二、在配置文件中添加一下配置三、本人电脑的ESLint配置总结 前言 vue基础,最近接手同事的项目,发现ESLint不生效了,找了很久也没有发现问题,因为其他的项目是可以用的。 一、解决方法 1、在vscode中打…

KafKa 3.x(二、Broker,消费者)

4. Kafka Broker 4.1 kafka Broker工作流程 4.1.1 Zoopkeeper存储的Kafka信息 启动Zookeeper客户端通过ls命令查看kafka相关信息 在Zookeeper的服务端存储的Kafka相关信息 /kafka/brokers/ids [0,1,2] 记录那些服务器/kafka/brokers/topics/first/partitions/0/state {“l…

关于超卖程序问题分析-java

关于超卖程序问题分析 1.并发情况下,GET缓存 判断>0,成立,均执行扣减库存,导致超卖 2.加锁 以库存key,加锁,setNx,finally解锁 deleteKey 存在问题 1.误解锁(是不是也是因为…

Android 11 SystemUI 启动流程

SystemUI 有哪内容 从表面上看, 我们看到的状态栏、通知栏、下拉菜单、导航栏、锁屏、最近任务、低电提示等系统页面都是 SystemUI 的。SystemUI,在源码目录中位于: framework/base/packages 目录下, 可见 SystemUI 和 framework…

vue3脚本绑定CodeMirror的使用

代码&#xff1a; <template><CodeMirrorref"codeMirror":value"codeVal":languageSingle"languageSingle":readOnly"!isEdit"submitCode"submitCode"></CodeMirror> </template><script setup…

文华财经期货APP随身行和同花顺期货可以模拟交易的期货软件,那个更好用?

期货app是一种可以在手机上进行期货交易和行情分析的软件&#xff0c;它可以让投资者随时随地掌握期货市场的动态&#xff0c;进行投资决策。随着科技的发展&#xff0c;越来越多的期货投资者选择通过手机端app来进行期货交易&#xff0c;享受随时随地、方便快捷的服务。市面上…

Js获取浏览器地址栏参数

获取浏览器地址参数 //获取浏览器地址栏参数function getQueryString(name) {var reg new RegExp("(^|&)" name "([^&]*)(&|$)");var result window.location.search.substr(1).match(reg);if (result ! null) {return unescape(result[2…

VMware 17虚拟Ubuntu 22.04设置共享目录

之前使用VM 17之前的版本虚拟CentOS&#xff0c;设置共享目录非常方便&#xff0c;在CentOS中安装VMware Tools即可。随着CentOS变成上游版本后&#xff0c;转向使用Ubuntu&#xff0c;VM也升级到了17&#xff0c;Ubuntu也升级到了最新的22.04&#xff0c;但是发现共享目录不能…

阿里大牛新产Java面试速成指南,主打就是躺着拿Ofeer

很多粉丝后台留言&#xff0c;Java程序员面临的竞争太激烈了…… 我自己也有实感&#xff0c;多年身处一线互联网公司&#xff0c;虽没有直面过求职跳槽的残酷&#xff0c;但经常担任技术面试考官&#xff0c;对程序员招聘市场的现状很清楚。导致现在激烈竞争的原因不外乎三方面…

sqlite-manage数据库可视化管理uniqpp

一、sqlite-manage介绍 sqlite-manage 是 SQLite 数据库可视化管理插件&#xff0c;更方前期查看和操作SQLite数据库&#xff0c;给APP开发者提供方便&#xff0c;避免重复造轮子。 内置增删改查工具类&#xff0c;可按需全局引用或单独引用。 二、使用sqlite要打开模块选项 三…

java 计算网段范围 分析网段包含关系

目录 一、网段范围 二、思路说明 三、代码 1、将一个ip转为数字 2、转换子网掩码&#xff08;255.255.255.0 转为 24&#xff09; 3、根据 ip 与 掩码 计算最大值和最小值 4、测试 5、完整代码 四、难点讲解 1、转换子网掩码&#xff0c; 例&#xff1a;255.255.25…

【习题之Python篇】习题24——回文

问题描述 2020年春节期间&#xff0c;有一个特殊的日期引起了大家的注意&#xff1a;2020年2月2日。因为如果将这个日期按 yyyymmdd 的格式写成一个8位数是 &#xff0c;恰好是一个回文数。我们称这样的日期是回文日期。 有人表示 是“千年一遇”的特殊日子。对此小明很不认同…

JavaWeb 速通CSS

目录 一、CSS入门 1.基本介绍 : 2.CSS的作用 : 3.CSS的语法 : 二、CSS样式 1.字体颜色&#xff1a; 1 说明 2 演示 2.边框 : 1 说明 2 演示 3.背景颜色 : 1 说明 2 演示 4.字体样式 : 1 说明 2 演示 5.div块居中 : 1 说明 2 演示 6.div文本居中 : 1 说明 2 演示 7.超…

【软件测试】Git详细-获取Git仓库,全网最全一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 官方提供了两种获…

GCC is no longer supported解决方法Android Studio

先说解决办法&#xff1a; 找到 -DANDROID_TOOLCHAINgcc进行删除。 原因是NDK版本过高了&#xff0c;r13b开始&#xff0c;llvm / Clang成为默认工具链&#xff0c;r18b开始删除了gcc。 删掉-DANDROID_TOOLCHAINgcc后&#xff0c;构建系统会默认使用clang。

最大流?费用流?结合二分图?例题

最大流 给出起点&#xff0c;终点&#xff0c;与边&#xff0c;边有最大流量限制&#xff0c;问从起点在不超过边的流量限制的情况下最大能从起点流多少流量到终点 反悔思想&#xff1a;如果我们每次找到一条路径就把这条路径上流量最小的边删去直到没有路径连接起点和终点&am…

飞行动力学 - 第5节-part3-爬升性能随高度的变化趋势 之 基础点摘要

飞行动力学 - 第5节-part3-爬升性能随高度的变化趋势 之 基础点摘要 1. 动力学方程2. 爬升角、爬升率趋势3. 参考资料 1. 动力学方程 回顾下&#xff0c;根据牛顿第一运动定律给出的动力学方程&#xff1a; 2. 爬升角、爬升率趋势 从推导公式的角度&#xff0c;上述趋势需要考…

按下数实融合的加速键,新华三推动基础设施变革

去年底&#xff0c;生成式AI&#xff08;AIGC&#xff09;开始席卷全球&#xff0c;吸引社会各界的广泛关注。 正所谓AI黄金时代的到来&#xff0c;将重新定义各行各业。AIGC热浪来袭&#xff0c;标志着在数实融合的大趋势下&#xff0c;人工智能大范围应用的奇点已经来临&…