网络安全之数据库基础篇(基础入门)

目录

一,操作数据库

1,查询所有数据库

2,创建数据库

3,查看数据库是否被创建

4,查看数据库的字符集

5,修改数据库的字符集

6,删除数据库

7,使用数据库

8,查看当前使用的数据库

二,操作数据表

1,查看当前库中有那些表

2,查看表的结构

3,查看数据库中表的字符集

4,修改表的字符集

5,修改表,列的数据类型

6,修改列名

7,删除表中的一列

8,创建数据表

9,修改表名

10,为表添加一列

11,为表格新增数据

12,修改表中的数据

13,删除表中的数据

14,查询表中的数据

15,条件查询

16,聚合函数查询:

17,排序查询:

18,分组查询

19,分页查询

20,主键约束

21,主键自增约束

22,唯一约束

23,非空约束

24,外键约束

25,外键级联

26,表关系一对一

27,表关系一对多

28,表关系多对多

29,内连接查询

30,外连接查询

31,多表子查询


一,操作数据库

1,查询所有数据库

【1】show databases;

【2】select table_schema from information_schema.tables group by table_schema;

2,创建数据库

【1】create database db1;

【2】create database if not exists db1;//判断是否存在db1数据库,不存在就创建它

【3】create database db1 character set utf8;//创建db1数据库并设置它的字符集为utf8

3,查看数据库是否被创建

【1】show create database db1;

4,查看数据库的字符集

【1】show create database db1;

5,修改数据库的字符集

【1】alter database db1 character set utf8;

6,删除数据库

【1】drop database db1;

【2】drop database if exists db1; //如果存在db1数据库就删除它

7,使用数据库

use db4;

8,查看当前使用的数据库

select database();

二,操作数据表

1,查看当前库中有那些表

show tables;

2,查看表的结构

desc user;

3,查看数据库中表的字符集

show table status from db1 like 'user';

4,修改表的字符集

alter table user character set utf8;

5,修改表,列的数据类型

格式:

alter table 表名 modify 列名 修改为的类型

例如:

alter table user modify score float;

6,修改列名

格式:

alter table 表名 chname 要修改的列名 修改为的列名 数据类型;

例如:

alter table user chname id num int;

7,删除表中的一列

格式:

alter table 表名 drop 列名;

例如:

alter table user drop name;

8,创建数据表

格式:

create table 表名(

列名 数据类型 约束,

列名 数据类型 约束,

....

列名 数据类型 约束

);

例如:

create table user(

id int primaty key, //id列为int类型和主键约束(唯一)

name varchar(20), //name列字符类型

age int,

gender varchar(20)

);

9,修改表名

格式:

alter table 旧表名 rename to 新表名;

例如:

alter table user rename to student //将user表名字改为student

10,为表添加一列

格式:

alter table 表名 add 要添加的列名 数据类型;

例如:

alter table user add score int;

11,为表格新增数据

格式1(全部添加):

insert into 表名 values(值1,值2,....);

例如:

insert into user values(1"goud",19,"male");

要注意的是列名要与values中的值一一对应

格式2(指定列添加数据):

insert into 表名(列名1,列名2....) values(值1,值2);

例如:

insert into user(age,gender) values(19,"male");

格式3(批量添加数据):

insert into 表名 values(值1,值2,...),(值1,值2,...);

例如:

insert into user values(1,"goud",19,"male"),(2,"lis",18,"famale");

12,修改表中的数据

格式:

update 表名 set 修改为的值1,修改为的值2,... where 条件;

例如:

update user set age=99 where name='lis';

update user set id=5,age=100 where name="goud";

13,删除表中的数据

格式:

delete from 表名 where 条件;

例如删除名字是lis这一行:

delete from user where name='lis';

14,查询表中的数据

格式1(查询所有列):

select * from 表名;

例如:

select * from user;

格式2(查询指定列):

select 列名1,列名2,... from 表名;

例如:

select id,name from user;

格式3(去重查询):

select distinct 列名1,列名2,... from 表名;

例如:

select distinct name from user;

格式4(筛选的同时计算列的值):

select name,score+10 from user;

表中的内容并不会加10,只是显示出来的值加了10

格式5(如果内容是null):

select name,ifnull(score,0)+10 from user;

如果score的内容是null就利用ifnull 将其转换为0再进行运算

15,条件查询

格式:

select 列名 from 表名 where 条件;

例如(查询name是lisi的全部数据):

select * from user where name='lisi';

格式2(and):

select 列名 from 表名 where 条件1 and 条件2;

例如(查询age是30到40之间的name):

select name from user where age>30 and age<40;

格式3(or):

select 列名 from 表名 where 条件1 or 条件2;

例如(查询age大于30或age小于10的name):

select name from user where age>30 or age<10;

格式4(in):

select 列名 form 表名 where 列名 in(要满足的数据);

例如(查询age是in中数据的name):

select name from user where age in(10,20,30);

格式5(模糊查询):

‘-’:代表一个任意字符

select * from user where name like '小_';

格式6(模糊查询):

‘%’:代表任意字符

select * from user where name like '%红%' //查询出name有红的所有数据

16,聚合函数查询:

格式:

select 函数名(列名) from user [where 条件];

例如:

select count(*) from user; #user表中有多少列

select max(score) from user; #求user表中score的最大值

select min(score) from user; #求user表中score的最小值

select sum(score) from user; #求user表中score的总数

select avg(score) from user; #求user表中score的平均值

select sum(id) from user where score=100; #求user表中score等于100的id总数

17,排序查询:

格式:

select 列名 from 表名 [where 条件] order by 列名1 排序方式1,列名2 排序方式2;

例如(asc降序排序):

select * from user order by score asc; #user表中的score降序排序

例如(desc升序排序):

select * from user where age<20 order by score desc; #user表中的score升序排序

例如(desc和asc联合使用):

select * from user order by score asc,id desc; #user表中的score降序排如果相同就按id升序排序

18,分组查询

格式:

select 列名

from 表名 [where 条件]

group by 要分组的列名

[having 过滤出来的条件]

[order by 排序列名 排序方式];

1,例如:

select class,sum(score)

from user

group by class; //按班级分组,算出每组总分

2,例如:

select class,sum(score)

from user

where score>80

group by class; //通过班级分组,筛选出成绩大于80的人的总分。

3,例如

select class,sum(score) total

from user

where score>80

group by class

having total>800

//对计算成绩大于80的人的总分并按班级分组筛选大于800的class(total是别名)

4,例如

select class,sum(score) total

from user

where score>80

group by class

having total>800

order by total desc; #降序排序

//对计算成绩大于80的人的总分并按班级分组筛选出大于800的class(total是别名)

19,分页查询

格式:

select 列名 from 表名

[where 条件]

[group by 要分组的列名]

[having 要满足的条件]

[order by 要排序的列名 升或减序]

limit 当前的页数,显示的条数(当前的页数=(页数-1)*显示的条数)

例如:

select * from user limit 0,3; #第一页

select * from user limit 3,3; #第二页

20,主键约束

创建一个用户表(编号,姓名,年龄)编号设为主键

create table user(

id int primary key,

name varchar(30),

age int

);

alter table user drop primary key; //建表后删除主键

alter table user modify id int primary key; //建表后添加主键

21,主键自增约束

创建一个用户表(编号,姓名,年龄)编号设为主键自增

create table user(

id int primary key auto_increment,

name varchar(30),

age int

);

alter table user modify id int; //建表后删除主键自增约束

alter table user modify id int auto_increment; //建表后添加主键自增约束

22,唯一约束

创建一个用户表(编号,姓名,年龄)编号设为唯一

create table user(

id int unique,

name varchar(30),

age int

);

alter table user drop index id; //建表后删除唯一约束

alter table user modify id int unique; //建表后添加唯一约束

23,非空约束

创建一个用户表(编号,姓名,年龄)编号设为主键,并设name为非空

create table user(

id int primary key

name varchar(30) not null,

age int

);

alter table user modify nmae varchar(30); //建表后删除非空约束

alter table user modify name varchar(30) not null; //建表后添加非空约束

24,外键约束

格式:

constraint 外键名 foreign key (本表外键列名)references 主表名(主表主键名)

创建一个用户表(编号,姓名,年龄)编号设为主键

create table user(

id int primary key auto_increment,

name varchar(30) not null,

age int

);

创建一个订单表(id,编号,外键列)id设为主键,

create table orderlist(

id int primary key not auto_increment,

number varchar(30) not null,

uid int,

constraint out_k foreign key (uid) references user(id)

);

alter table orderlist drop foreign key out_k; //建表后删除外键约束

alter table orderlist add constraint out_k foreign key (uid) references user(id); //建表后添加外键约束

25,外键级联

格式1(添加级联更新):

alter table 表名 add constraint 外键名 foreign key (本表外键列名) references 主表名(主键列名)

on update cascade;

格式2(添加级联删除):

alter table 表名 add constraint 外键名 foreign key (本表外键列名) references 主表名 (主键列名)

on delete cascade;

格式3(同时添加级联更新和级联删除):

alter table 表名 add constraint 外键名 foreign key (本表外键列名) references 主表名 (主键列名)

on update cascade on delete cascade;

例如:

alter table orderlist add constraint out_k foreign key (uid) references user(id)

on update cascade on delete cascade;

26,表关系一对一

用户表

create table user( id int primary key auto_increment, NAME varchar(30), age int );

订单表

create table orderlist( id int primary key auto_increment, product varchar(20), uid int, constraint out_key foreign key (uid) references user(id) );

27,表关系一对多

用户表--订单表--价格表

用户表

create table user( id int primary key auto_increment, NAME varchar(30), age int );

订单表

create table orderlist( id int primary key auto_increment, product varchar(20), uid int, constraint out_key foreign key (uid) references user(id) );

价格表

create table price( id int primary key auto_increment, money varchar(20), pid int, constraint out_price foreign key (pid) references orderlist(id) );

28,表关系多对多

创建三个表一student,course,center

student表:

create table student(
id int primary key auto_increment,
NAME varchar(20),
class varchar(20)
);

course表:

create table course(
id int primary key auto_increment,
book varchar(20)
)

center表:

create table center(
id int primary key auto_increment,
studentid int,
courseid int,
constraint out_kk1 foreign key (studentid) references student(id),
constraint out_kk2 foreign key (courseid) references course(id)
);

student表中插入数据:

insert into student values(1,'zhansan','100'),(2,'lis','150'),(3,'wanwu','200')

course表中的数据:

insert into course values(1,'math'),(2,'chinese'),(3,'physics')

center表中插入数据:

insert into center(studentid,courseid) values(1,1),(1,2),(2,1),(3,2)

查看lis选了什么书
SELECT c.book  
FROM student s  
JOIN center ct ON s.id = ct.studentid  
JOIN course c ON ct.courseid = c.id  
WHERE s.NAME = 'lis';

29,内连接查询

这里就用上面哪个表了哈,查看学生信息对应的课程信息

select * from student inner join course on student.id=course.id

30,外连接查询

【1】左外连接(left outer join):返回左表的全部记录和右表满足条件的记录

例如查询学生所对应的课程:
SELECT
student.*,
course.book
FROM
student 
LEFT OUTER JOIN
course 
ON
course.id=student.id;

【2】右外连接(right outer join):返回右表的全部记录和左表满足条件的记录(这里不做演示了,一样的格式)

【3】全外连接(right outer join):返回两表的全部记录,没有匹配的项用null补齐

31,多表子查询

用户表

create table user( id int primary key auto_increment, NAME varchar(30), age int );

订单表

create table orderlist( id int primary key auto_increment, product varchar(20), uid int, constraint out_key foreign key (uid) references user(id) );

查看张三和李四的订单信息

select  * from orderlist where uid in (1,2)

select id from user where name in ('张三','李四');

select * from orderlist where uid in(select id from user where name in ('张 三','李四'))

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

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

相关文章

【Linux系统编程】

Linux系统编程 一.文件编程1.常用API1.1 打开&#xff1a;open1.2 读写&#xff1a;write/read1.3 光标定位: lseek1.4 创建&#xff1a;creat1.4 关闭&#xff1a;close 2.文件的打开及创建3.文件的写入4.文件的读取5.文件描述符5.代码实现cp指令6.编程实现修改文件配置7.写一…

计算机视觉与深度学习 | 基于特征的图像配准技术(全景图像拼接)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 基于特征的图像配准技术(全景图像拼接) 图像加载特征提取与图像配准初…

学习JavaEE的日子 Day40 反射案例

Day40 1.反射案例 之 万能数组扩容 public class Test01 {public static void main(String[] args) {String[] ss {"小希","小空","小丽","小光","小爱"};String[] newSS MyArrays.copyOf(ss, 8);System.out.println(My…

实现Node.js安装与配置。

一 、Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;用于构建高性能、可扩展的网络应用程序。它发布于2009年5月&#xff0c;由Ryan Dahl开发&#xff0c;允许使用JavaScript进行服务器端编程&#xff0c;使开发者能够在前后端都使用同一种编程…

Unity 新版输入系统(Input System)

前言 官方教程 注意 新的输入系统需要 Unity 2019.4 和 .NET 4 运行时。它不适用于 .NET 3.5 的项目。 教程版本&#xff1a;Unity 2021.3.26 1. 安装 1.1 打开 Package Manager 导航栏 -> Window -> Package Manager 1.2 安装 Input System 选择 Unity Registry 在列…

RabbitMQ, DelayQueue, Redis的介绍以及IDEA的实现

RabbitMQ RabbitMQ是一个开源的消息队列中间件&#xff0c;它实现了高效、可靠的消息传递机制。它支持多种消息传递模式&#xff0c;如发布/订阅、点对点、请求/回应等。RabbitMQ以其可靠性、灵活性和易用性受到广泛的关注和应用。 RabbitMQ基于AMQP&#xff08;Advanced Mess…

字符串刷题(day1)题解

文章目录 字符串刷题一、Erase First or Second Letter二、Swap and Reverse三、Largest Subsequence四、XOR Palindromes五、Strong Password六、Row Major七、Game with Reversing八、Tear It Apart 字符串刷题 vjudge题单 一、Erase First or Second Letter [Erase First…

孙中亮:北斗三十周年,看北斗芯片高质量发展历程和方向

1994年1月10日&#xff0c;北斗一号建设正式启动&#xff0c;党中央决策建设独立自主的北斗卫星导航系统。2020年7月31日&#xff0c;北斗三号全球卫星导航系统正式开通&#xff0c;标志着北斗系统进入全球化发展新阶段。随着2024年的到来&#xff0c;北斗系统建设已走过栉风沐…

汇智知了堂走进宜宾学院,共话国产化信创未来!

在春意盎然的四月&#xff0c;汇智知了堂以其深厚的品牌底蕴和卓越的教育品质&#xff0c;再次展现了其在教育领域的领先地位。4月18日&#xff0c;汇智知了堂走进宜宾学院&#xff0c;为广大学子带来了一场关于国产化信创时代的技术变革与专业学习建议的讲座。 汇智知了堂作…

前端 -- if-else嵌套地狱

要解决 if-else 嵌套地狱问题&#xff0c;可以考虑以下几种方法&#xff1a; 1. 使用早返回&#xff08;Early Return&#xff09;&#xff1a; 尽早返回函数&#xff0c;避免深层嵌套。 将条件判断简化为多个独立的 if 语句&#xff0c;每个 if 语句处理一种情况。 2. 使用…

2024深圳杯(东三省)数学建模挑战赛D题:音板的振动模态分析与参数识别思路代码成品论文分析

​ 更新完整代码和成品完整论文 《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓ https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 问题重述 深圳杯&#xff08;东三省&#xff09;数学建模挑战赛2024D题&#xff1a;音板的振动模态分析与…

YoloV9改进策略:注意力改进、Neck层改进_自研全新的Mamba注意力_即插即用,简单易懂_附结构图_检测、分割、关键点均适用(独家原创,全世界首发)

摘要 无Mamba不狂欢,本文打造基于Mamba的注意力机制。全世界首发基于Mamba的注意力啊!对Mamba感兴趣的朋友一定不要错过啊! 基于Mamba的高效注意力代码和结构图 import torch import torch.nn as nn # 导入自定义的Mamba模块 from mamba_ssm import Mamba class Eff…

vue做导入导出excel文档

系统中经常会遇到要实现批量导入/导出数据的功能&#xff0c;导入就需要先下载一个模板&#xff0c;然后在模板文件中填写内容&#xff0c;最后导入模板&#xff0c;导出就可能是下载一个excel文件。 1、导出 新建一个export.js文件如下&#xff1a; import {MessageBox,Mes…

赋能数据检索:构建用于www.sohu.com的新闻下载器

引言 在信息爆炸的时代&#xff0c;随着新闻数据的数量不断增长&#xff0c;获取和分析这些数据变得尤为关键。本文将介绍如何构建一个高效的新闻下载器&#xff0c;专门用于从搜狐网&#xff08;www.sohu.com&#xff09;检索和下载新闻内容。 背景介绍 搜狐网作为中国领先…

区块链和IPFS安全测试工具;ECC+AES混合加密机制:秘钥管理

目录 区块链和IPFS安全测试工具 区块链测试工具:Caliper,BlockEmulator IPFS测试工具:Testgrou

vite与webpack有什么不同?为什么vite比webpack快?

1. 定位 webpack、rollup、esbuild 都是打包工具&#xff0c;对代码进行压缩、合并、转换、分割、打包等操作&#xff0c;都需要打包工具去完成 vue-cli、umi 是基于 webpack 的上层封装&#xff0c;通过简单配置能快速搭建起一个项目&#xff08;用 webpack 去搭建项目需要配…

iOS(Object C) 快速排序

快速排序使用分治法,把一个数组分为两个子数组 本质上来看&#xff0c;快速排序应该算是在冒泡排序基础上的递归分治法。 快速排序的思想: 1.找到一个基准元素(通常是数组里的第一元素) 2.从右边开始遍历,找到一个比基准数小的值(minValue),将minValue放到基准值的初始位置,…

40. 【Android教程】AsyncTask:异步任务

在前面的章节有提到过&#xff0c;Android 系统默认会在主线程&#xff08;UI 线程&#xff09;执行任务&#xff0c;但是如果有耗时程序就会阻塞 UI 线程&#xff0c;导致页面卡顿。这时候我们通常会将耗时任务放在独立的线程&#xff0c;然后通过 Handler 等线程间通信机制完…

外贸干货|客户迟迟不付款,怎么催?

(一) Gentle reminder 温馨提醒 "Hello Mary, l hope this message finds you well. l wanted to kindly remind you about the payment for our agreed-upon order. We appreciate your business and would like to proceed with the next steps as soon as possible.…

DS32K查看内置寄存器数值

需要在debug的时候进行查看&#xff0c;先暂停&#xff0c;再打开EmbSys Registers窗口。 需要先将导出的内容选中并双击&#xff0c;不然复制出来会变成问号。右上角有个复制按钮&#xff0c;复制到剪贴板就行。譬如我这里选择了MCR寄存器&#xff0c;复制出来的就是这个寄存器…