Mysql数据库基本概念和Sql语言

news2024/11/22 11:05:13

一、数据库基本概念

1.1 数据库概述

数:数字信息
据:属性
数据:对一系列对象的具体属性的描述的集合
数据库:数据库就是用来组织(各个数据之间是有关联的,按照规则组织起来的)、存储和管理(对数据的增、删、改、查)的仓库

数据库是企业的重要信息资产,在使用数据库进行增删改查时,要注意删和改需要谨慎

1.2 数据库管理系统(DBMS)

  • 实现对数据的有效组织,管理和存取的系统软件
  • 用户是通过DBMS(各种数据库软件)来对数据库进行操作
  • 数据库是一个系统,是一个人机系统,由硬件、os(操作系统)、数据库、DBMS和数据库用户共同组成

1.3 数据库的分类

关系型数据库

mysql(中小类型的数据并发请求)、oracle(大数据量)、sql-server、mariaDB、postgresql等

存储数据的结构是一个二维表格
表:以行+列的形式组成
行:记录,用来描述一个对象的信息
列:字段,用来描述对象的一个属性

  • 关系型数据库中,表里面的数据是关联的,表和表之间的数据也是关联起来
  • 多表关联,最多可以关联三张表

非关系型数据库

redis(缓存型数据库)、es(索引型数据库)、MongDB(文档型数据库)等

存储数据不以关系模型为依据,用键值对来保存数据

  • 关系型数据查询速度更慢一些
  • 非关系型数据库可以支持高并发读写,对海量数据依旧保持着高效率的存储和访问

1.4 Mysql数据库的存储引擎

5.5之间:MyISAM是默认的、不支持事务和外键的存储引擎。

5.6之后:默认的存储引擎为InnoDB成为默认并且可以支持事务、外键、行级锁定的存储引擎

支持高并发性能的应用

事务

事务:在数据库当中,一个或多个操作组成的数据操作的序列

这些操作要么全部成功,失败一个就全部不执行,需要确保数据一致性和完整性

事务的特点

  • 原子性:数据库最小工作单元,要么全部执行成功,要么全部不执行,只要有一个操作时间,整个执行的序列都会被回滚。完成的操作也会被撤销
  • 一致性:事务执行前后,数据库的完整性约束不能被破坏,只有在满足所有的约束条件情况下,事务才能被提交
  • 隔离性:事务的执行是相互隔离,一个事务的执行不能受到其他执行事务的干扰。并发事务之间互相隔离。防止数据不一致的情况发生。
  • 持久性:事务一旦提交,他所作的所有修改会被永久的保存在数据库中。即使系统崩溃,提交的数据也不丢失。确保数据库始终处于一致性的状态,确保数据的完整和一致

1.5 Mysql的名词

  • 1、数据库:database
  • 2、表:table 行:row 列:column
  • 3、索引:index
  • 4、视图:view
  • 5、存储过程:procedure
  • 6、触发器:trigger
  • 7、用户:user
  • 8、权限:privilege

1.6 Mysql的语句规范

  • 在数据库系统中,sql不区分大小写,但是建议大写。语句不区分,但是表名是严格区分大小写
  • sql语句可以单行也可以多行书写,但是默认都以;结尾
  • 换行时关键词不能跨行或者简写
  • 子语句通常位于独立行,便于编辑,提高可读性

1.7 数据库的命名规则

  • 必须以字母开头,后面可以包含数据,特殊字符
  • 不要使用Mysql的保留字来命名表
  • 数据库名、表名、用户名严格区分大小写

1.8 数据库的字符类型

int:4个字节,用来存储整数
char:用来存储固定长度的字符串,用来存储定长的字符串
varchar:存储可变长度的字符类型,存储可变长度的字符串(无限制的可以随便写)
float(m,d):单精度浮点,存储浮点数,m表示总位数,d表示小数位
double(m,d):双精度浮点,存储浮点数,m表示总位数,d表示小数位
text:用于存储大文本数据,文档,或者长字符串
image:二进制存储图像、图片、多媒体
decimal(m,d):用于存储固定精度的小数,
date:存储日期:yyyy-mm-dd
datetime:存储日志:YYYY-MM-DD HH:MM:SS
timestamp:和datetime格式一致,可以自动地更新为当前的时间戳

二、Sql语句

2.1 DDL数据定义语言

用于创建数据库的对象,创建库、表、索引等

数据库相关操作:

  • SHOW:查看
  • CREATE创建
  • DROP删除
  • ALTER修改

进入Mysql数据库

mysql -u root -p密码;

查看当前数据库使用端口 

show global variables like 'port';

查看当前数据库

show databases;

使用某个库 

use mysql 库名;  

查看当前库中的表 

show tables;

查看表结构 

describe 表名;
缩写:
desc 表名;
纵向查看表结构:
describe user\G;

创建库

create database 库名;

 创建表

CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型...,primary key(主键名));
例:
create table ky32 (id int(4) not null,name varchar(10) not null,score decimal(5,2),passwd char(48),primary key(id));

null和空格的区别:null是什么都没有,空格也算是字符

删除表

drop table 表名;

删除库

drop database 库名;

2.2 DML数据操纵语言

对表中的数据进行管理,包括select、update、insert、delete等

清空表中数据

truncate table 表名;

向表中添加数据

insert into 表名(字段1,字段2,字段3) values(字段1的值,字段2的值,字段3的值);
例:
insert into naruto(id,name,score,passwd) values(1,'naruto',95,111);
insert into naruto(id,name,score,passwd) values(2,'sasuke',90,222);

查看表:
select * from 表名;

 给表中数据加密

例:
insert into naruto(id,name,score,passwd) values(3,'sakura',85,password('333'));

删除表中数据

例:
delete from naruto where id = 3;

2.3 DQL查询数据记录

查询表中指定行

降重查询

select distinct 字段 from 表名;
多个字段的话是所有条件都包含

修改表名

alter table 原表名 rename 新表名;

添加列

alter table 表名 add 字段 字符类型;

更新数据

例:
update uzumaki set birth=date('2020-1-1') where id = 4;

修改字段(列)名

例:
alter table uzumaki change birth birthday datetime;

删除字段(列)

例:
alter table uzumaki drop birthday;

修改列的字段类型

alter table 表名 modify column 字段 字段类型;
例:
alter table uzumaki modify column passwd varchar(52);

2.4 DCL数据控制语言

用于控制数据库用户的访问权限

GRANT:用于授权用户访问权限
REVOKE:用于取消用户的访问权限。

2.5 TCL事务控制语言

用于控制数据库事务的提交和回滚

COMMIT:用于提交事务
ROLLBACK:用于回滚事务
SAVEPOINT:用于设置保存点,以便在发生错误时回滚到该点

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

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

相关文章

JavaEE-博客系统1(数据库和后端的交互)

本部分内容包括网站设计总述,数据库和后端的交互; 数据库操作代码如下: -- 编写SQL完成建库建表操作 create database if not exists java_blog_system charset utf8; use java_blog_system; -- 建立两张表,一个存储博客信息&am…

数据结构—线性实习题目(二)5迷宫问题(栈)

迷宫问题&#xff08;栈&#xff09; #include <iostream>​ #include <assert.h> using namespace std;int qi1, qi2; int n; int m1, p1; int** Maze NULL; int** mark NULL;struct items {int x, y, dir; };struct offsets {int a, b;char* dir; };const int…

Java SE 学习笔记(十八)—— 注解、动态代理

目录 1 注解1.1 注解概述1.2 自定义注解1.3 元注解1.4 注解解析1.5 注解应用于 junit 框架 2 动态代理2.1 问题引入2.2 动态代理实现 1 注解 1.1 注解概述 Java 注解&#xff08;Annotation&#xff09;又称Java标注&#xff0c;是JDK 5.0引入的一种注释机制&#xff0c;Java语…

Java 基于微信小程序的汉堡点餐系统的研究与实现

文章目录 1 简介2 相关技术介绍3 系统需求分析4 系统功能分析5 系统的详细设计与实现5.1 系统登录页面5.2 点餐系统后台首页页面5.3 商品信息管理页面5.4 会员管理页面5.5 购买信息管理页面5.6 小程序首页信息页面5.7 商品信息页面5.8 在线下单页面 6 推荐阅读 1 简介 基于微信…

笔记本电脑搜索不到wifi6 无线路由器信号

路由器更换成wifi6 无线路由器后&#xff0c;手机能搜索到这个无线信号&#xff0c;但是笔记本搜索不到这个无线信号&#xff0c;后网上搜索后发现是无线网卡驱动问题&#xff0c;很多无线网卡使用的是Intel芯片&#xff0c;Intel就此发布了公告&#xff0c;升级驱动就可以彻底…

【C】C语言文件操作

1.为什么使用文件 我们前面学习结构体时&#xff0c;写通讯录的程序&#xff0c;当通讯录运行起来的时候&#xff0c;可以给通讯录中增加、删除数据&#xff0c;此时数据是存放在内存中&#xff0c;当程序退出的时候&#xff0c;通讯录中的数据自然就不存在了&#xff0c;等下…

ZYNQ连载08-Lwip网络组件

ZYNQ连载08-Lwip网络组件 1. 添加Lwip包 2. Lwip配置 我这里关闭ipv6和dhcp。 3. tcp客户端 #include "include/my_tcp.h" #include "lwip/ip.h"#define THREAD_STACKSIZE 1024 #define SERVER_PORT 8000 #define SERVER_ADDR "192.168.3.190&qu…

SHCTF2023 山河CTF Reverse方向week2weenk3部分WP【详解】

文章目录 [WEEK3]ststst[WEEK2]not gcc[WEEK2]Run?润&#xff01;[WEEK2]Authurs_box[WEEK2]pycode [WEEK3]ststst 64 bit 的 ELF 文件 sub_400763点进去看看 mprotect &#xff0c;这个 这一题是SMC TEA的考察&#xff0c;我写过一篇关于 SMC学习网鼎杯jocker 可以使用id…

设计模式(单例模式、工厂模式及适配器模式、装饰器模式)

目录 0 、设计模式简介 一、单例模式 二、工厂模式 三、适配器模式 四、装饰器模式 0 、设计模式简介 设计模式可以分为以下三种: 创建型模式&#xff1a;用来描述 “如何创建对象”&#xff0c;它的主要特点是 “将对象的创建和使用分离”。包括单例、原型、工厂方法、…

LabVIEW开发安捷伦液相色谱Agilent 1100 HPLC

LabVIEW开发安捷伦液相色谱Agilent 1100 HPLC 液相色谱是在科研中常用的仪器&#xff0c;尤其是安捷伦等大品牌。这里对1100的使用进行介绍。 LabVIEW安捷伦1100系列驱动程序&#xff0c;用于控制1100系列的所有仪器。在LabVIEW中使用串行&#xff0c;GPIB或以太网接口。参考…

【java爬虫】公司半年报数据展示

前言 前面有一篇文章介绍了使用selenium获取上市公司半年报的方法&#xff0c;这篇文章就给这些数据写一个简单的前端展示页面 上一篇文章的链接在这里 【java爬虫】使用selenium获取某交易所公司半年报数据-CSDN博客 首先来看一下整个页面的展示效果 前端页面采用vueeleme…

第89步 时间序列建模实战:时间序列融合模型

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们介绍融合模型模型。 &#xff08;1&#xff09;数据源&#xff1a; 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndro…

创建进程中的内核操作

fork 是一个系统调用&#xff0c;流程的最后会在 sys_call_table 中找到相应的系统调用 sys_fork。 _do_fork 里面做的第一件大事就是 copy_process&#xff0c;咱们前面讲过这个思想。如果所有数据结构都从头创建一份太麻烦了&#xff0c;还不如使用惯用“伎俩”&#xff0c;…

shell脚本中数组

分界点&#xff1a;以下内容需要更改&#xff0c;正常放假更改 数组&#xff1a; 数组的作用&#xff1a;可以一次性的定义多个变量&#xff0c;数组的长度是不限的 数组的元素类型&#xff1a;int string float. 就是形成变量池&#xff0c;可以随时的遍历和使用 数组的写…

c#方法中的参数

无参 //无参数直接调用即可MethodWithoutParameters();/// <summary>/// 没有参数的方法/// </summary>private void MethodWithoutParameters(){Debug.Log("没有参数的方法");}有参 //有一个参数MethodWithOneParameters("我是参数");/// <…

【算法|动态规划 | 01背包问题No.2】AcWing 423. 采药

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【AcWing算法提高学习专栏】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&a…

JDBC与MySql数据库

一、系统开发前的环境准备 1.下载Mysql 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 文件解压缩到本地 在此路径下新增my.ini文件以及新建data文件夹 编辑my.ini文件 配置环境变量 注意是编辑系统变量的Path 以管理员身份运行cmd 输入命令&#xff1a…

【Go】格式化字符串指令大全 Redis常用命令

【Go】格式化字符串指令大全 && Redis常用命令 原创&#xff1a;As.Kai 博客地址&#xff1a;https://blog.csdn.net/qq_42362997 如果以下内容对您有帮助&#xff0c;点赞点赞点赞~ 目录 格式化格式化字符串指令大全%s 用于插入字符串%d 用于插入整数%f 用于插入浮点数…

Spring AOP源码解读

今天我们来分析Spring中AOP的源码&#xff0c;主要是关于SpringAOP是如何发挥作用的。 前期准备 首先我们需要有一个Spring AOP项目&#xff0c;添加好了SpringAOP的依赖。 <dependency><groupId>org.springframework</groupId><artifactId>spring-co…

项目基础配置

1、Spring整合MyBatis&#xff1a; 在子工程中加入所需要的依赖 准备jdbc.properties 创建spring的配置文件、整合spring和mybatis 在spring的配置文件中加载jdbc.properties 配置数据源 测试数据库连接 配置SqlSessionFactoryBean 装配数据源 指定XXXMapper.xml文件的位…