51、数据库的概念及sql语句

news2024/12/23 6:57:12

1、数据库

1.1、数据库管理:

  • sql语句 数据库用来增删改查的语句。重要*

  • 备份 数据库的数据进行备份。

  • 主从复制,读写分离 高可用。重要*,原理–面试。

  • 数据库的概念、语法和规范

1.2、数据库的定义

数据库:组织,存储,管理数据的仓库。

数据库的关系系统(DBMS):实现对数据有效组织,管理和存取的系统软件。

  • mysql
  • oracle–##大数据系统一般使用
  • sql-server
  • MariaDB也是mysql mysqld
  • postgreSQL 大象数据库

1.3、数据库的类型:关系型数据库和非关系型数据库。

1.3.1、关系型数据库

mysql

oracle

postgreSQL

关系型数据存储的结构:是一张二维的表格,表里面有行和列。

列是对象,字段。

行:对象的信息,字段的信息。

行+列组成一张表。

只有关系型数据库才有表。

1.3.2、非关系型数据库:

缓存型数据库:redis

索引型数据库:ES

文档型数据库:MongoDB

键值对形式存储的结构:

key value

test1=3

1.4、关系型数据库和非关系型数据库的优缺点:

  • 关系型的优点:表的结构清晰,逻辑容易整理,记录的数据比较完整。
  • 关系型的缺点:读写数据比较慢,并发量差,数据迁移比较麻烦。每个表都是关联的。
  • 非关系型数据库优点:高并发读写,对海量数据依旧可以保持高效率的存储和访问,架构可扩展。
  • 非关系型数据库缺点:键值对形式存储,数据逻辑比较复杂,数据是保存在缓存(内存)当中(redis),如果意外重启,所有数据都会丢失。

1.5、mysq的数据类型:

char:固定长度的字符串类型,用于存储固定长度的字符串。

varchar:可变长度的字符串类型,存储的是可变长度的字符串。

char定义好长度之后,不论写了值是多少,都会占用固定长度的字节大小。保存在磁盘上都是4字节。

varchar在保存字符串时,多少就保存多少,在保存的字符串结尾默认有一个隐藏的结束符,会多占一个字节。

varcharchar要节约磁盘空间。

读写速度:char的读写速度性能要高于varcharchar时连续的磁盘空间,保存的内容时连续的。

varchar在增删改查之后,会产生一个磁盘空间的碎片文件,影响读写性能。

int 存储的数据类型为整数

float:浮点数,小数点 float(m,d):m表示总位数,d表示小数位数。

double:双精度浮点数 double(m,d):m表示总位数,d表示小数位数。

date:用于存储日期,YYYY-MM-DD

datetime :用来存储日志和时间,格式YYYY-MM-DD HH:MM:SS

timestampdatetime类似,但是他可以自动记录当前时间。

smallint:存储小整数。

bigint:存储大整数

decimal(5,2):存储浮点,存储精度的浮点数,5表示总位数,2,表示小数位。

2、数据库的管理:

增删改查----sql语句

2.1、sql中的名词:

  • 数据库:databases
  • 表:table
  • 行:row
  • 列:column
  • 索引:index
  • 视图:view
  • 用户:user
  • 权限:privilege
  • 存储过程:procedure
  • 存储函数:funcrion
  • 调度器:exent

2.2、sql的语言规范:

在数据系统中,sql语言不区分大小写,但是建议大写。

sql语句可以分单行和多行,但是必须要以";"结尾。

2.3、命令规范:

库名、表名、列的名字,必须以字母开头,后面可以数字。后面也可以跟上特殊符号。

不要使用mysql的保留字,table select show databases

数据库名,表名,用户名严格区分大小写。

2.3.1、sql语言的分离:

1、DDL 数据库定义语言:用来创建数据库的对象语言,库,表和索引等等。

create创建 drop丢弃删除

2、DML:数据库操作语言,可以对表里面的数据进行管理

select筛选 updateinsertdelete

3、DQL 数据库查询语言。

select筛选

4、DCL 数据控制语言,控制和管理数据用户的角色和权限。

grant:GRANT命令用于授予用户对数据库对象的特定访问权限。数据库管理员可以使用GRANT命令来精确地控制用户对数据库对象(如表、视图、存储过程等)的访问和操作权限。

revoke:REVOKE命令用于回收已经授予的权限。当一个用户或角色不再需要访问特定的数据库对象,或者他们的访问权限需要被限制时,数据库管理员可以使用REVOKE命令来撤销他们的权限。

5、tcl 事务控制语句,用来管理的数据库的事务,脚本开发,存储过程等等。

commit rollback savepoint

DDL:一条数据库的语句是连贯的,已分号为结尾表示一条完整的sq1,但是太长了,不方便阅读和理解。我们可以对一条语句进行分行的写法。

关键词不能跨行

2.4、创建库的语句:

CREATE DATABASE 数据库名;

点击运行

F5##刷新

xshell命令行:

use 库名;

show tables;

2.5、创建表的语句:

select * FROM student;##查询表所有列的内容

desc student;##查看表结构

CREATE table 表名 (
ID INT (4) NOT NULL,
#定义表的列的属性,数据类型和是否为空;
NAME CHAR(10) NOT NULL,
score DECIMAL(5,2)
);

select * FROM student;##查询表所有列的内容

use xy102;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------+
| Tables_in_xy102 |
+-----------------+
| student         |
+-----------------+
1 row in set (0.00 sec)

mysql> desc student;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| ID    | int          | NO   |     | NULL    |       |
| NAME  | char(10)     | NO   |     | NULL    |       |
| score | decimal(5,2) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
-----+---------+-------+
 Key | Default | Extra |
-----+---------+-------+
     | NULL    |       |
     | NULL    |       |
     | NULL    |       |
-----+---------+-------+

key:表示是否是主键或者外键

default:如果没有数据的默认展示结果

extra:提供列的附加信息。自增长等等。

desc student;##查看表结构

desc student\G;

mysql> desc student\G;
*************************** 1. row ***************************
  Field: ID
   Type: int
   Null: NO
    Key: 
Default: NULL
  Extra: 
*************************** 2. row ***************************
  Field: NAME
   Type: char(10)
   Null: NO
    Key: 
Default: NULL
  Extra: 
*************************** 3. row ***************************
  Field: score
   Type: decimal(5,2)
   Null: YES
    Key: 
Default: NULL
  Extra: 
3 rows in set (0.01 sec)

2.6、数据库命令操作

2.6.1、删除数据表

DROP table 表名;删除表

CREATE table student (
ID INT (4) NOT NULL,
#定义表的列的属性,数据类型和是否为空;
NAME CHAR(10) NOT NULL,
score DECIMAL(5,2)
);

DROP table student;删除表

2.6.2、删除数据库

DROP database 数据库名;删除库

CREATE table student (
ID INT (4) NOT NULL,
#定义表的列的属性,数据类型和是否为空;
NAME CHAR(10) NOT NULL,
score DECIMAL(5,2)
);

DROP database student;删除库

2.6.3、数据表中插入数据

DML和DQL 管理语句和查询语句

DML:insert插入数据

insert into 表名(字段1,字段2,字段3) values(1,2,3);
insert into 表名(字段1,字段2,字段3) values(1,2,3);
insert into student(id,name,score)values(1,'成千',87.6);
insert into student values(2,'zhai',88.8);
insert into student values(3,'zhai',null);
select * from student;

在这里插入图片描述

insert into student(id,username,score,address) values(10,'成千',null,null);##只有null为yes,可以输入null。但是不能空。
insert INTO student VALUES(11,' ',98,NULL);

在这里插入图片描述

null和空值之间的区别;

null就是啥也没有,就是为空。

空值也是值,只是值为空

select * from student where name is null;

select * from student where score is NULL;

2.6.4、修改和更新:

update更新

update 表名 set 列名=值 where 条件;

update student set score=90 where id = 3;--------##把id=3的行的score的值更新为90

select * from student;

delete删除表中行的数据

delete from 表名 where 条件;

delete from student where id=3;-----##删除student表中的id=3的那一行

select * from student;

DQL语句,查询语句:-----查询列

select score,name from student;--------##表示筛选列名为score,name列展示。

select * from student;--------##*表示所有列。。

查看指定行:

SELECT * FROM student LIMIT 2,2;----##查看3-4行,不包含第二行

SELECT * FROM student LIMIT 0,3;##查看1-3行,相当于从0开始后,筛选3行,就是1-3行。

去重查询:

SELECT DISTINCT id FROM student;----##对id相同的内容进行去重
insert into student values(7,'ji',85);
SELECT DISTINCT NAME from student;----##对username相同的内容进行去重

WHERE 语句 条件的筛选:

AND 且
or 或

select 筛选内容 from student where 条件1 or/and 条件2;

select * from student;
select name from student where id = 7 or score =91;----##筛选名称,条件是id=7或者score=91;

AND 且 
or 或 

模糊查询:like

以zh开头;

SELECT * FROM student WHERE name like 'zh%';---##筛选名字以zh开头的所有列

以ai结尾;

SELECT * FROM student WHERE name like '%ai';---##筛选名字以ai结尾的所有列

包含ji即可

SELECT * FROM student WHERE name like '%ji%';---##筛选名字包含ji的所有列
SELECT * FROM student WHERE name like '%i%';---##筛选名字包含i的所有列

ALTER 修改表名和修改表结构

alter table student rename stu01;表名student改为stu01

ALTER 修改表名和修改表结构

alter table stu01 rename student;

给表添加一列:

ALTER table student add address varchar(50) default '地址不详';
DESC student;##添加address列,可变长度,默认'地址不详'

修改字段的数据类型:

ALTER TABLE student MODIFY COLUMN address char(10);
DESC student;

删除列:

ALTER table student DROP address;

#修改列的名称

alter table student change name username char(10);
DESC student;

dent改为stu01


### ALTER 修改表名和修改表结构

alter table stu01 rename student;


### 给表添加一列:

ALTER table student add address varchar(50) default ‘地址不详’;
DESC student;##添加address列,可变长度,默认’地址不详’


### 修改字段的数据类型:

ALTER TABLE student MODIFY COLUMN address char(10);
DESC student;


### 删除列:

ALTER table student DROP address;


### #修改列的名称

alter table student change name username char(10);
DESC student;


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

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

相关文章

ACL实验

目录 一、实验拓扑​编辑 二. 实验要求(在图中) 三、实验思路 配IP 全网可达 创建模拟机pc1 创建telent r1 r2 由题目可得 截图 pcr1​编辑 pcr2​编辑 四、实验总结(写实验完成后的总结心得) 一、实验拓扑 二. 实验…

硅纪元AI应用推荐 | 精准识别用户意图,夸克真AI搜索引擎

“硅纪元AI应用推荐”栏目,为您精选最新、最实用的人工智能应用,无论您是AI发烧友还是新手,都能在这里找到提升生活和工作的利器。与我们一起探索AI的无限可能,开启智慧新时代! 在数字化时代,搜索引擎成为我…

本地多模态看图说话-llava

其中图片为bast64转码,方便json序列化。 其中模型llava为本地ollama运行的模型,如:ollama run llava 还有其它的模型如:llava-phi3,通过phi3微调过的版本。 实际测试下来,发现本地多模型的性能不佳&…

EasyPoi一对多excel表格导出

效果如下图&#xff1a; 1、引入pom文件 <!--easypoi 一对多导入导出 --> <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.2.0</version> </dependency> <dependenc…

AIGC降痕实战:论文降AI率的深度解析与应用

随着AI技术的飞速发展&#xff0c;AI论文工具正逐渐成为学术界的新宠。它们以高效、便捷的优势&#xff0c;吸引了众多学者的目光。然而&#xff0c;随之而来的学术诚信与原创性问题&#xff0c;也成为人们关注的焦点。 如何在享受AI带来的便利的同时&#xff0c;确保论文的原…

pear-admin-fast项目修改为集成PostgreSQL启动

全局搜索代码中的sysdate()&#xff0c;修改为now() 【前者是mysql特有的&#xff0c;后者是postgre特有的】修改application-dev.yml中的数据库url使用DBeaver把mysql中的数据库表导出csv&#xff0c;再从postgre中导入csv脚本转换后出现了bpchar(xx)类型&#xff0c;那么一定…

《数字通信世界》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《数字通信世界》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的第二批认定学术期刊。 问&#xff1a;《数字通信世界》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;工业和信息化部 主办单位&#x…

ubuntu22.04安装SecureCRT8.7.3,完成顺利使用

材料准备 scrt-sfx安装包 &#xff0c; securecrt_linux_crack.pl 补丁脚本&#xff0c;和两个依赖库 其中securecrt_linux_crack.pl是找的专门适合 8.7.3版本的&#xff0c;网上很多版本的crack.pl只能打补丁以前的老版本。 而更老版本的SecureCRT对ubuntu22支持更不好&#…

DBeaver导入脚本和导出数据

DBeaver导入脚本和导出数据 前言&#xff1a; 通常产品会要求&#xff0c;把xx表导出Excel&#xff0c;navicat一般公司不让用。讲解使用DBeaver 导入脚本 我们将sql脚本导入DBeaver 1&#xff0c;选择数据库&#xff0c;找到执行脚本 2&#xff0c;选用sql脚本&#xff0…

mavsdk客户端(java)通过mavsdk_server与PX4进行通信

1.启动PX4容器: 2.启动14550与14540监听 3.启动QGC 4.启动mavsdk_server通信中间件 5.启动mavsdk客户端(java) 注:官方示例默认无法连接,修改如下: import io.mavsdk.telemetry.Telemetry;增加设备健康检查才能执行解锁指令Telemetry telemetry = new Telemetry();teleme…

【读书笔】口才三绝

【读书笔记】口才三绝 一、引言二、主要内容概述赞美之绝幽默之绝拒绝之绝 三、个人感悟四、结语我是杰叔叔&#xff0c;一名沪漂的码农&#xff0c;下期再会&#xff01; 一、引言 《口才三绝》是一本专注于提升个人口才与沟通技巧的书籍&#xff0c;它通过丰富的案例和实用的…

macOS Sequoia 15(Macos15系统)v15.0 Beta 3发布 macOS Sequoia 15 功能预览

macOS Sequoia 15 功能预览 犀利一如 Mac macOS Sequoia 15(Macos15系统)v15.0 Beta 3测试版本下载安装 连续互通 你的 Mac 上&#xff0c;iPhone 用起来。 有了 iPhone 镜像功能&#xff0c;在 Mac 上就能看到 iPhone 屏幕画面&#xff0c;还能直接进行操控&#xff0c;不拿…

MySQL存储引擎有哪些?有什么区别?

MySQL存储引擎有哪些&#xff1f;有什么区别 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式 。存储引擎是基于表的&#xff0c;而不是基于库的&#xff0c;所以存储引擎也可被称为表类型。 在mysql中提供了很多的存储引擎&#xff0c;比较常见有InnoDB、My…

FPGA上板项目(二)——PLL测试

目录 实验内容实验原理实验步骤实验结果 实验内容 将差分时钟信号转化为 192MHz 时钟信号作为输出。 实验原理 PLL&#xff0c;即锁相环&#xff0c;一种反馈控制电路&#xff0c;具有时钟倍频、分频、相位偏移和可编程占空比的功能。 实验步骤 添加 clocking wizard IP核&…

Flutter TextFiled频繁采集“剪切板信息”

在使用Flutter开发者&#xff0c;输入框是必不可少的功能&#xff0c;最近产品出了需要&#xff0c;要求输入框记住用户登录过的手机号&#xff0c;并在输入框输入时提示出来&#xff0c;这是个很基础的功能&#xff0c;但是在通过测试验收发布到应用市场时&#xff0c;被Vivo拒…

深圳晶彩智能JC3636W518C开箱实现电脑副屏功能

深圳晶彩智能发布了JC3636W518C 这是一款中国制造的&#xff0c;铝合金外壳&#xff0c;价格非常震撼的开发板。原创是billbill的up播主萨纳兰的黄昏设计的ESP32太极小派&#xff0c;由深圳晶彩智能批量生产。 该款 LCD 模块采用 ESP32-S3R8 芯片作为主控,该主控是双核 MCU&…

SpringBoot中常用的注解及其用法

1. 常用类注解 RestController和Controller是Spring中用于定义控制器的两个类注解. 1.1 RestController RestController是一个组合类注解,是Controller和ResponseBody两个注解的组合,在使 用 RestController 注解标记的类中&#xff0c;每个方法的返回值都会以 JSON 或 XML…

《昇思25天学习打卡营第07天|qingyun201003》

日期 心得 越往后&#xff0c;越看不懂&#xff0c;只能说是有了解到如何去训练模型代码&#xff0c;对于模型代码该如何去保存&#xff0c;如何通过网络模型去训练。只能一步步来&#xff0c;目前来说是推进度&#xff0c;等后面全部有了认知&#xff0c;再回来重新学习 昇思…

Re:从零开始的C++世界——类和对象(中)

文章目录 前言1. 类的默认成员函数2. 构造函数&#x1f34e;概念&#x1f34e;特点&#x1f34c;特点一&#x1f34c;特点二&#x1f34c;特点三&#x1f34c;特点四&#x1f34c;特点五&#x1f34c;特点六&#x1f34c;特性七 &#x1f34e;总结 3.析构函数&#x1f34e;概念…

Foxmail新版本迁移邮箱的数据文件教程

Foxmail作为轻量化办公中使用最多的邮件沟通应用&#xff0c;而当其邮件积累到一定数量后&#xff0c;会几乎占满所在的硬盘空间&#xff0c;小编接下来为大家介绍如何将邮件数据文件迁移到其他硬盘&#xff0c;且迁移后保持foxmail的旧邮件数据存在&#xff0c;方便搜索和转发…