MySQL数据库知识概览
发布日期:2022-02-22 16:04:47 浏览次数:26 分类:技术文章

本文共 5589 字,大约阅读时间需要 18 分钟。

数据库知识大纲

mysql

一、数据库基础知识

数据库基础知识

D:数据
DB:数据库 一批数据构成的有序集合
DBMS:数据库管理系统
RDBMS:关系数据库管理系统

二、数据库的安装

windows命令行

登录 :mysql  -u用户名  -p密码    或 mysql  -u用户名  -p回车,不显示密码登出:exit或quit登录其他账号 :mysql  -u用户名  -p密码  -h机器  -P端口号

右键,命令行界面 分号结束 回车执行。只有退出和登录的时候不用加分号

show databases;  查看当前数据库

字符集 charset=utf8 注意没有 -

show variables like'char%';查看字符集  show variables; 查看配置变量

修改字符集:核心配置文件 my.ini (2个)编码:ANSI

自动创建在系统目录 位置C:\ProgramData\MySQL\MySQL Server 5.6
mysql的安装目录 位置C:\Program Files\MySQL\MySQL Server 5.6 自己新建一个my.ini文件。内容: [client]
default-character-set=utf8
.ini 文件 可以用记事本打开 #是注释
[mysql] 和 [mysqld] 模块下面的 default-character-set=utf8 取消注释

配置文件修改后应该重启服务restart

三、数据库的基本操作

– 单行注释 /* */ 多行注释

information_schema系统数据库中 schemata 表中 存储了所有数据库的基本信息

use information_schema;  --选中当前数据库才能查看SELECT * FROM SCHEMATA; -- 查看数据库基本信息
character set utf8 –设置字符集为utf8

collate 数据库字符集的比较方式:

  • utf8_bin 区分大小写; utf8_general_cs 区分大小写;
  • utf8_general_ci 不区分大小写;
修改数据库字符集:alter database 数据库名 character set utf8;

修改完数据库字符集,需要重启mysql数据库。

数据库操作
- 显示数据库:show databases;- 显示数据库创建语句:show create database db_name;- 查看当前数据库 :select database();- 切换当前数据库 :use db_name;- 删除数据库:drop database db_name;- 修改数据库:alter database db_name;
备份恢复

备份数据表中的数据(在windows下cmd执行,不是在mysql里面执行):

mysqldump -u用户名 -p密码 数据库名 > d:/文件名.sql(位置)【在非登录命令下进行】

恢复数据库(mysql命令):

Source 文件名.sql【登录,先选择要恢复到的数据库use 数据库名;】

可视化:转储(备份) 运行sql文件(恢复)

存储引擎

MySQL中的数据用各种不同的技术存储在文件(内存)中的配置文件my.ini指定了默认存储引擎 default-storage-engin=INNODB

常用引擎:

  1. INNODB 表名.frm文件存储数据表结构 .db存储数据和索引
    特点:支持事务(ACID)、行级锁定(并发)、支持外键
  2. MyISAM .frm文件存储数据表定义 .myd(数据) .myi(索引)
    特点:效率高,不支持外键,事务,
  3. Memory
    存储:内存中
    场景:临时存储大量数据

四、数据表的基本操作

数据表的基本操作

创建:create table 表名( 列名 类型 约束,列名2 类型…);每列之间用,隔开 最后一列不加逗号删除:drop table 表名;查看表结构:desc 表名;查看表详细结构:show create table 表名;
数据完整性:
  • 实体完整性:设置主键。唯一非空
  • 引用(参照)完整性:设置外键,约束从表,从表的值必须从主表而来 两个字段名可以不同
  • 域完整性:值域 检查check约束,触发器,用户自定义的
约束:
  • 主键primary key,删除主键,可以不指定主键名称
  • 外键foreign key(允许有多个空值),一个表可以添加多个外键。 删除外键必须指定外键名,不指定外键名,系统会自动命名。
  • 非空not null, null-未知 非空约束只能是列级约束
  • 唯一unique,MySQL中允许出现多个NULL值 (不确定的值)
  • 默认约束(Default 默认值)指定某列的默认值,字符串和日期型要用‘’,数字不用
  • 自增:设置表的属性值自动增加 auto_increment,必须加在主键列上,每个表最多一个,允许自己赋值。MySQL自增的最大值为:21 4748 3647。

外键是表级别的约束条件,定义完列之后写:

[constraint 外键名] FOREIGN KEY (列名1 [ ,列名2,…]) REFERENCES (主键列1 [ ,主键列2,…])
修改表结构 ALTER

修改表结构

追加表约束

追加表约束

自动增长:ALTER table 表名 modify 列名 数据类型 auto_increment;

一个表中,最多有一个自动增长列 。 自动增长列必须有索引。主键/外键是一种索引

create index 索引名 on 表名(列名)--添加普通索引
删除表约束

在这里插入图片描述

删除唯一 不能使用 unique

对象级别的删除用drop,数据删除用delete
查看 主/外键约束名 show create table 表名;

删除有关联的数据库:先删除外键,才能删除列;或者删除主表才能删除列

五、数据类型

整数类型

显示宽度不够补空格 建表时设置zerofill 补0;超过显示宽度,按实际宽度显示,与存储大小无关。

浮点类型

float double 不准确

定点数类型:decimal (以字符串形式存储) decimal(精度,标度) 精度:总长度 标度:小数位数 ,float double都会四舍五入,但是decimal会警告信息。 准确存储银行数据

日期和时间类型:
  • datetime: 按实际输入的格式存储
  • timestamp:存储世界标准时间UTC格式,可以对时区进行转换
show variables like "%time_zone%"; -- system 系统时区 东八区set time_zone = '+10:00'; -- 改为 东10区  -8:00 西八区

datetime,timestamp类型都可以 插入null,插入null时会取默认值

datetime的默认值为null,timestamp的默认值不为null,且为系统当前时间

  • year 类型 :
    取值范围;1901-2155
    参数可以是四位数字或字符串,两位数值或字符串
字符串类型:
  • char 固定长度; 存储时会删除末尾的空格; 超过给定长度会被截取 。适合存储短字符

  • varchar 可变长度; 需要使用1或2个额外字节记录字符串的长度。适用于字符串列的最大长度比平均长度大得多。

  • enum 枚举类型:列值是单个给定的枚举值,允许空值; 最多有65535个数据

  • set 集合,允许选定多个给定的set值,允许空值。最多有64个数据

主键 插入值null表示不给它赋值,采用 auto_increment

二进制类型 :

区别 存储数据大小的不同。blob 类型是一种特殊的二进制类型,可以存储数据量很大的二进制数据,如图片和音频文件。 但是数据库中一般不直接存图片,音频文件,存储的是路径

注意:

  1. 存储路径中 \ 会被过滤掉 解决:\ 或 / 代替 \
  2. mysql中没有布尔类型,但为了支持sql标准,可以定义boolean关键字。 真正存储的是tinyint类型
    可以向布尔类型里面插入0和1,true,false。 true插入显示的是1。

数据类型的选择和引擎也有关系

严格模式

严格模式(sql_mode属性):把数据插入数据库时进行严格检查,相反为宽松模式查询

会话级别:select @@sql_mode; select @@session.sql_mode; 关闭会话失效
服务级别:select @@global.sql_mode; 重启服务失效
永久级别:直接修改my.ini 配置文件

一般在生产过程中,不会重启服务。所以想要永久,更改服务级别即可。

修改: set sql_mode=xxx ;  set session_sql_mode=xxx; set global.sql_mode=xxx;
运算符
算数运算符:
  1. 除 / 可以有小数,都会保留四位小数
  2. % 符号和被除数一致
  3. = 等于 3=null 结果null null-未知
  4. < = >安全的等于 可以判断空值 3< = >null 0 不同 null < = > null 1 相同 true
  5. < > 不等于 !=

select 表达式; 运行可以显示结果

  1. is NULL 判断是否为null

  2. between and 包含两个边界值

  3. least() 返回最小值

  4. like 通配符匹配

  5. REGEXP 正则表达式 [ ] 多选一

逻辑运算符:

异或:XOR 相同为0 不同为1

位运算符:二进制 运算结果:64位无符号整数。
  1. bin(); 函数 查看二进制的表现形式
  2. | 位或 & 位与 ^ 位异或
  3. << 左移 >> 右移 ~ 取反

运算符的优先级:算数>关系>逻辑

六、 数据的操作

数据的基本操作

插入:insert语句
insert into 表名(字段1,字段2…….)values(值1,值2……);-- 值与字段名相匹配,不必与创建表时列的顺序一致。

全列值插入(每列都插入值时),列名列表可以省略不写 :

insert into 表名 values(…….);  -- 值的顺序必须与创建时列的顺序,个数,类型一致。

非全列值插入(部分列插入) ,必须写列名列表

一条语句插入多条记录:每条记录用()括起来,记录之间用逗号隔开。

insert into 表名(字段1,字段2)values(值1,值2) 【,(值1,值2),(值1,值2)…】

有默认值 但是未知时 可以插入null

更新:update语句

set 设置值 where 条件限定

update 表名 set 字段名=‘值’; //将所有记录的该字段名都改变了update 表名 set 字段名1=‘值1’[,字段名2=‘值2’…… ] where sname=’zhangsan’;

条件语句中 使用主键字段(非空唯一)特指某一条记录

删除:delete语句
delete from 表名; -- 删除所有记录 清空表  可以加条件   中间没有 *delete from 表名【 where 删除的条件】;-- 删除指定数据truncate table 表名;-- 清空表 执行效率高
查询

单表查询

可以查询列 常量 表达式 函数。SELECT ‘aaa’; SELECT 5+3; SELECT now();

单表查询

SELECT * FROM 表名;  * 查询所有字段 SELECT 字段名1【,字段名2……】 FROM 表名;
  1. 多个条件之间使用逻辑运算符(and or )连接。不能用逗号

  2. 带in关键字的查询: in(值1,值2,……) 后面多选一

< > 不等于   	 NOT 取反
  1. 排序 ORDER BY 字符串 数值 日期 事件 都可以比较大小
order by 字段名 DESC; 降序   ASC 升序 (默认)

多列排序(指定多个排序规则):

order by 字段名1,字段名2 DESC;先按字段名1排序,再按字段名2排序。

按 字符串 排序 相同名字开头的会排到一起

ORDER BY 子句 应位于 SELECT语句的结尾

  1. 分组查询 GROUP BY 字段名
    聚合函数:sum() avg() count() max() min()
count(*) – 查询一共有多少条记录count(字段名) – 查询 该列有多少条 非空记录,忽略空值行

可以多字段分组:GROUP BY 字段名1,字段名2

HAVING 对分组之后的结果 过滤 不能使用 where(对分组之前的数据过滤)
WITH ROLLUP 在最后一行进行统计 ,写在having语句前**,不能与ORDER同时使用**

  1. LIMIT限制查询结果的数量,返回指定位置的记录
LIMIT [位置偏移量,] 行数  等价于  LIMIT 行数 OFFSET 位置偏移量SELECT *  from 表名bLIMIT 4;
  1. 给表/列取别名 列名 [as] 别名
连接查询(多表)
  1. 内连接

    不做任何限定,结果是两个表的乘积,即笛卡尔积
    笛卡尔积:表1,表2 添加两个表的连接条件(外键)

  2. 外连接

    左外连接 left outer join 保证左表的数据完整地出现在结果中 outer可以省略
    右外连接 right outer join 保证右表的数据完整地出现在结果中

  3. 复合条件连接查询

  4. 子查询-嵌套的select

ANY( ) 任意一个 ALL()所有

where exists(…) 判断是否有结果 有->true 没有 false
not exists()
in()
not in()

转载地址:https://blog.csdn.net/Conradine_Lian/article/details/106454954 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JavaScript 模块化规范
下一篇:Ajax 请求数据

发表评论

最新留言

很好
[***.229.124.182]2024年04月24日 01时28分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

LiveGBS国标级联中支持自定义组织机构(本域树)向上级联GB28181 2021-06-30
LiveNVR中概览显示数据统计|CPU使用|内存使用|存储使用流媒体服务健康监控 2021-06-30
通过GB28181接入视频流媒体基于输出的RTSP流进行视频结构化分析 2021-06-30
GB28181国标流媒体服务中如何解决播放花屏、卡顿 2021-06-30
LiveGBS中配置了国标级联上级看不到通道怎么办 2021-06-30
传统安防监控摄像头Onvif云台控制直播流如何转换成GB/T28181对接到国标视频平台公安内网 2021-06-30
LiveGBS国标视频平台支持GB/T28181国标级联到海康平台大华平台等第三方国标视频国标平台公安内网国标平台 2021-06-30
LiveGBS国标视频平台接入4G移动执法仪如何保存设备的执法录像实时录像和云端录像 2021-06-30
LiveGBS国标GB/T28181流媒体平台支持实时录像相关接口及操作 2021-06-30
LiveGBS国标视频平台GB28181支持分部式集中录像相关接口及配置说明 2021-06-30
电网B口接流媒体服务应用在电网视频监控系统中支持设备视频直播录像回看 2021-06-30
GB/T28181国标流媒体协议中报警订阅及上报示例及如何在LiveGBS中配置报警订阅 2021-06-30
GB/T28181国标流媒体协议中移动位置MobilePosition订阅及上报示例及如何在LiveGBS中配置移动位置MobilePosition订阅 2019-04-27
GB/T28181视频国标平台级联给上级自定义级联的国标设备编号解决不同设备重复的通道编号问题 2019-04-27
LiveGBS国标GB/T28181视频流媒体平台如何将设备下面的通道权限关联分配给指定用户 2019-04-27
LiveGBS国标GB/T28181视频流媒体平台REDIS订阅设备状态订阅报警信息订阅移动位置订阅 2019-04-27
LiveNVR非国标流转GB28181配置连接REDIS通过redis订阅通道状态 2019-04-27
LiveGBS国标GB/T28181视频流媒体平台UDP、TCP被动、TCP主动的区别 2019-04-27
LiveGBS国标GB/T28181视频流媒体平台支持对接下级平台已有录像中心检索及模糊查询 2019-04-27
GB28181国标流媒体服务平台Linux与Windows系统中如何抓包分析UDP视频流丢包率网络质量视频质量分析信令交互 2019-04-27