当前位置: 首页 > news >正文

MySQL的概念和sql语句

数据库的概念

数据库的概念:数据库是用来组织(各个数据之间是有关联,是按规则组织起来的),存储和管理(增,删,改,查)的仓库

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

数据库是一个系统,一个人机系统。包含硬件,os,数据库,DBMS和数据库的用户共同组成。

用户是通过DBMS (各种数据库软件)来对数据库进行操作

数据库的分类

随着时代的发展,当今数据库可分为两大类:关系数据库(SQL)非关系数据库(NO SQL)两大类 。

关系型数据库

关系数据库的存储结构是二维表格 ,表是有行和列。行称为记录,是用来描述一个对象的信息。列称为字段,是用来描述对象的一个属性

关系性数据库常见的有:MYSQL ,Oracle,SQL-Server,MariaDB, postgreSQL 

非关系型数据库

缓存性数据库: redis     Memcache

      索引型数据库:  ES(Elasttic search)

      时序型数据库:Prometheus

       文档型数据库:MongoDB

 非关系型数据库:是键对值的存储结构(key ——————>   VALUE)

优点:可高并发读写,对海量数据依旧保持着高效率的存储和访问,具有高扩展性和高可用性
 

mysql数据库的存储引擎

5.5之前:MYSAM,不支持事物和外键的存储引擎。适用于读的多,写的少

5.6之后默认的引擎:innodb,可以支持事物,外键,行级锁定的存储引擎,支持高并发性能的应用。

事物:在数据库当中,一个或者多个操作组成的数据库操作的序列。这些操作要么全都成功,失败一个就全部不执行。

此操作原因:确保数据一致性和完整性

事物的特点:

1.原子性(数据库的最小工作单位),要么全部执行成功,要么全部不执行,只要有一个操作时间,整个执行的序列都会被回滚。完成的操作也会被撤销

2.一致性:事物执行前后,数据库的完整性约束不能被破坏。只有在满足所有的约束条件下,事物才能被提交。

3.隔离性:事物的执行是相互隔离。一个事物的执行不能收到其他执行事物的干扰。并发事物之间互相隔离,防止数据不一致的情况发生

4.持久性:事物一旦提交他所作的所有修改,会被永久的保存在数据库中。即使系统崩溃,提交的数据也不丢失。确保数据库始终处于一致性的状态。确保数据库的完整性和一致。

Mysql的名词

1.数据库:database

2.  表 : table

     行 : row

     列 : column

3.索引:index

4.视图:view

5.存储过程:procedure

6.触发器:trigger

7.用户:user

8.权限:privilege

mysql的语句规范

在数据库系统中,sql不区分大小写,但是建议大写。语句不区分,但是表名严格区分大小写。

sql语句可以单行也可以多行书写,但默认都以 ;结尾。

关键词不能跨行或者简写。

子语句通常位于度路航,便于编辑,提高可读性。

数据库命名规范

1.必须已字母开头,后面可以包含数据,特殊字符:#_$

2.不能使用mysql的保留字作为名字 :table select

3.数据库名 表名 用户名严格区分大小写

数据库的字符类型

字符类型用法
int 4个字节,用来存储整数,范围很大
char 只能存取固定长度的字符串,用来存储定长的字符串
varchar 可变长度的字符类型,存储可变长度的字符串。(无限制的可以随便写)
float (m,d)

单精度浮点

m:总长度 d:小数位

double (m,d) 双精度浮点数,存储浮点数 。M是总位置,d表示小数位
text 用于存储大文本数据 ,文档,或者字符长度
image 二进制存储的图像,图片,多媒体
decimal (5.2) 用于存储固定精度的小数,其中5表示总位数,2表示小数位。
date 存储日期:YYYY-MM-DD
datetime 存储日志 yyyy-mm-dd hh:mm:ss (年-月-日-时-分-秒)
timestamp 和datetime格式一致,可以自动更新位当前的时间戳

char和varchar的区别

char:无论是否定义了值,他都会占用固定长度的字节大小

varchar:在保存时,varchar14 实际长度是5。结果就是实际长度+隐藏符号=6个

varchar比char节省磁盘空间,但是varchar读写速度比char慢

sql语句的分类

DDL:数据定义的语言,用于创建数据的对象,创建库,表,索引。

  CREATE :创建

 DROP :删除

 ALTER:修改

show global variables like 'port';

show databases;
查看库
use mysql;
//使用mysql库

show tables;

describe user\G;
//纵向查看
desc test1;
//简写

show databases;
create databases zzr;

create table hj (id int(4) not null,name varchar(10) not null,score decimal(5,2),passwd char(48),primary key(id));

desc hj;
//查看表结构

null和空格的区别:

null表示什么都没有,对象没有任何的描述信息。

DML:数据操纵语言,对表中的数据进行管理

select:查看

update:更新

insert:添加

delect:删除 对表进行删除操作

insert into hj values(4,'ZZR',92,password('789'))

mysql> update hj set passwd=password('456') where id = 3;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1mysql> select * from hj;
+----+------+-------+-------------------------------------------+
| id | name | score | passwd                                    |
+----+------+-------+-------------------------------------------+
|  1 | A    |  NULL |                                           |
|  2 | 啊   | 90.00 | 123                                       |
|  3 | AAA  | 95.00 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
|  4 | ZZR  | 92.00 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
+----+------+-------+-------------------------------------------+
4 rows in set (0.01 sec)

mysql> delete from hj where id = 4;
mysql> select * from hj;

DQL语言:查询数据记录

select * from hj where id = 3;
+----+------+-------+-------------------------------------------+
| id | name | score | passwd                                    |
+----+------+-------+-------------------------------------------+
|  3 | AAA  | 95.00 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
+----+------+-------+-------------------------------------------+
1 row in set (0.00 sec)//查看指定行

mysql> select * from hj limit 2,3;
+----+------+-------+-------------------------------------------+
| id | name | score | passwd                                    |
+----+------+-------+-------------------------------------------+
|  3 | AAA  | 95.00 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
+----+------+-------+-------------------------------------------+
1 row in set (0.00 sec)mysql> select * from hj limit 1,3;
+----+------+-------+-------------------------------------------+
| id | name | score | passwd                                    |
+----+------+-------+-------------------------------------------+
|  2 | 啊   | 90.00 | 123                                       |
|  3 | AAA  | 95.00 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
+----+------+-------+-------------------------------------------+
2 rows in set (0.00 sec)limit 2;
//表示前两行

查看指定列

mysql> select distinct name from hj;
+-----------+
| name      |
+-----------+
| A         |
| 啊        |
| AAA       |
| zhaozirui |
| 赵子瑞    |
+-----------+
5 rows in set (0.00 sec)//查看指定列

修改表的名称

修改表的名称
mysql> show tables;
+---------------+
| Tables_in_zzr |
+---------------+
| hejing        |
+---------------+
1 row in set (0.00 sec)mysql> alter table hejing rename hj;
//格式
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+---------------+
| Tables_in_zzr |
+---------------+
| hj            |
+---------------+
1 row in set (0.00 sec)

更新信息

mysql> update hj set birth=date('2002-5-31') where id = 4;//根据唯一索引查看定位

修改列名

mysql> alter table hj change birth birthday datetime;

删除列

删除列
mysql> alter table hj drop birthday;

修改字段类型

mysql> alter table hj modify column passwd varchar(52);
Query OK, 5 rows affected (0.01 sec)

DCL:数据控制语言,设置或者更改数据库用户或者用户权限

   GRSNT:赋予权限

   REMOVE:取消权限

   TCL:事物控制语句,管理数据库当中的事物

      commit:确认提交事物,一旦提交就无法修改

      ROLLBACK:事物提交之后无法回滚。

   savepoint保存点,可以回滚

相关文章:

  • RabbitMQ原理(四):MQ的可靠性
  • 医学影像乳腺肿瘤分割的同学看过来:PDPNet:用于通用乳腺肿瘤分割的渐进式双先验网络
  • 多线程---wait和notify
  • 【Android知识笔记】插件化专题(二)
  • 一、基础算法精讲:双指针
  • C++大数加法——最简单实现
  • Webpack 基础以及常用插件使用方法
  • 基于GPIO子系统编写LED驱动
  • ChatGPT如何应对用户提出的道德伦理困境?
  • 【开源】基于SpringBoot的车险自助理赔系统的设计和实现
  • 【实战】Kubernetes安装持久化工具NFS-StorageClass
  • 【Python机器学习】零基础掌握RandomForestRegressor集成学习
  • MATLAB中polyvalm函数用法
  • MySQL - UNION 与 UNION ALL
  • web - 前段三剑客
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • [译]Python中的类属性与实例属性的区别
  • 【翻译】babel对TC39装饰器草案的实现
  • Bytom交易说明(账户管理模式)
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • KMP算法及优化
  • LeetCode29.两数相除 JavaScript
  • mongodb--安装和初步使用教程
  • ReactNative开发常用的三方模块
  • spring boot 整合mybatis 无法输出sql的问题
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 对超线程几个不同角度的解释
  • 对象管理器(defineProperty)学习笔记
  • 理清楚Vue的结构
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 无服务器化是企业 IT 架构的未来吗?
  • 新手搭建网站的主要流程
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 硬币翻转问题,区间操作
  • 用Canvas画一棵二叉树
  • 阿里云API、SDK和CLI应用实践方案
  • # .NET Framework中使用命名管道进行进程间通信
  • #FPGA(基础知识)
  • #ifdef 的技巧用法
  • (003)SlickEdit Unity的补全
  • (arch)linux 转换文件编码格式
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)ORM
  • (转载)(官方)UE4--图像编程----着色器开发
  • ***监测系统的构建(chkrootkit )
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .net打印*三角形
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • @SuppressWarnings注解
  • [AIGC codze] Kafka 的 rebalance 机制