数据库概念和sql语句

数据库的概念:

进入数据库的奇妙世界:mysql -u root -p123456

数据库是一个系统,是一个人机系统。由硬件、OS操作系统、数据库、DBMS和数据库的 用户共同组成。

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

数据:数字信息:属性,对一系列对象的具体属性的描述集合

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

数据库是企业的重要信息资产,在使用数据库时,要注意(查和增无所谓,但是删和改要谨慎)

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

数据库工作流程图:

数据库的分类:

关系型数据库:mysql

非关系型数据库:redis、es

****关系型数据库:****存储数据的结构是一个二维表格

表:行和列

行:记录,用来描述一个对象的信息

列:字段,用来描述对象的一个属性

mysql:中小型的数据并发请求

oracle:高并发大数据量

sql-server

mariaDB

postgresql

关系型数据库中,表中的数据是关联的,表和表之间的数据也是关联起来的

面试题:多表关联最多可以关联几张表?

多表关联最多三张表

非关系型数据库:保存数据不是一张二维表格,key------value,键值对来保存数据。

redis:缓存性的数据库

es:索引型数据库

MongoDB:文档型数据库

既然有关联,查询速度相对来说,关系型数据库查询速度更慢一点,非关系型数据库可以支持高并发读写。对海量数据依旧保持着高效率的存储和访问。

mysql数据库:

mysql数据库的存储引擎:

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

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

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

这些操作要么全部成功,失败一个就是全部不执行。原因是为了确保数据的一致性和完整性

事务的特点:

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

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

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

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

mysql的名词:

数据库:database

表:table 行:row 列:column

索引:index

视图:view

存储过程:procedure

触发器:trigger

用户:user

权限:privilege

mysql语句的规范:

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

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

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

子语句通常位于独立行,便于编辑,提高可读性

不支持双引号,只能用单引号

数据库的命名规则:

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

不能使用mysql的保留字来命名表或者数据库:table select

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

数据库的字符类型:

int:占4个字节,用来存储整数

char:固定长度的字符串,用来存储定长的字符串

varchar:可变长度的字符类型,存储可变长度的字符串(不是无限制的随便写)

float(m,d):单精度浮点,存储浮点数。m表示总位数,d表示小数位

double:浮点类型(m,d):双精度浮点数,存储浮点数,m也是总位数,d表示小数位

decimal(5,2):用于存储固定精度的小数,其中5,表示总位数,2表示小数位。

text:用于存储大文本数据,文档,或者长字符串

image:二进制存储图像,图片,多媒体

data:存储日期:YYYY-MM-DD

datatime:存储日期 YYYY-MM-DD HH:MM:SS

timestamp:和datatime格式一致YYYY-MM-DD HH:MM:SS 可以自动更新为当前时间戳

重点:char varchar的区别

char:无论你是否定义了值,他都会占用固定长度的字节大小(你写了长度8,无论你写几个(不能大于8)他都是8个字符)

varchar:在保存时,varchar长度14,实际长度是5,那么占用情况就是5+1个隐藏符最后占用的字符是6个

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

varchar和char都是字符串类型:一定要用单引号引起来

数据库管理

sql语句:

sql语句的分类:

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

CREATE:创建

DROP:删除

ALTER:修改

数据库基础常用命令:

show global variables like 'port';

数据库当前使用的端口查看:3306

show databases;

查看当前有多少库

use 库名;

使用指定数据库

show tables;

查询指定库中有哪些表

如何查看表的结构:

describe 表名;

纵向查看表:

describe 表名\G; 缩写:desc 表名\G;

创建库:

create database 库名;

在库中创建表:

create table 表名 表内容属性...

create table test (id int(4) not null,name varchar(12) not null,sroce decimal(5,2),passwd char(48),primary key(id));

创建表:

id int(4) not null

第一列:名字是id,字符类型是int ,(4)字符长度是4,not null不能为空

name varchar(12) not null

第二列:名字是name,字符类型varchar, (12)字符长度是12,not null不能为空

sroce decimal(5,2)

第三列:名字是sroce,字符类型是decimal , (5,2)总长度是5,小数点后面最多2位,可以为空

passwd char(48)

第四列:名字是passwd,字符类型是char ,(48)字符长度最多为48,可以为空

primary key(id)

primary key 主键 (id)将id作为主键,唯一标识

主键用于唯一标识表中的每一条数据。不能重复, 不能为空。

create table test (id int(4) not null,name varchar(12) not null,sroce decimal(5,2),passwd char(48),primary key(id));

删除表:

drop tables 表名;

删除库:

drop database 库名;

类型 数据类型 值是否能为空 键值 默认值是否能为空 扩展信息

null和空格的区别:

两个概念

null什么都没有,对象没有任何描述信息

空格:也是字符

鉴别是空格还是null

DML:数据操作语言,对表中的数据进行管理(对表内容)

select查询

update更新

insert添加

delete删除(对表内容进行删除操作)

往表中插入数据:

方法一:指明插入的对象和插入的值

insert into表名(类型) values(对应的值)

insert into test (id,name,sroce,passwd) values(1,'刘备',97,'111');

方法二:直接按表格对象的顺序插入值

insert into test values(2,'关羽',99,'222');

对对象的密码进行加密:

password ('xxx')

对表中内容进行更新修改:

update 表名 set 对象=修改内容 where id

where id 是因为id是主键,唯一标识,不会重复查询没有歧义

如何在表中删除数据:

DQL:查询数据记录(重点)

指定查看行:

limit 3:指定查看前三行

limit 2,4:指定从第3行开始往下查看4行

去重查看:

select distinct 对象 from 表名;

指定对象去重

多条件去重查询:

select distinct name,sroce from test;

修改表名:alter

alter table test rename demo;

修改表的结构:

插入新的对象:

alter table 表名 add 对象信息;

修改列对象名:

alter table test change birth birthday datetime;

删除整列:

alter table test drop birthday;

修改列的数据类型:

DCL:数据控制语言

用于设置或者更改数据库用户或者用户的权限

GRANT:赋权

REVOKE:取消权限

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

commit:确认提交事务

ROLLBACK:回滚,事务提交之后无法回滚

savepoint:保存点,可以回滚

相关推荐
阿华的代码王国1 分钟前
MySQL ------- 索引(B树B+树)
数据库·mysql
NiNg_1_23420 分钟前
使用Docker Compose一键部署
运维·docker·容器
萠哥啥都行25 分钟前
Linux安装Docker以及Docker入门操作
运维·docker·容器
Hello.Reader29 分钟前
StarRocks实时分析数据库的基础与应用
大数据·数据库
小江湖199431 分钟前
元数据保护者,Caesium压缩不丢重要信息
运维·学习·软件需求·改行学it
执键行天涯31 分钟前
【经验帖】JAVA中同方法,两次调用Mybatis,一次更新,一次查询,同一事务,第一次修改对第二次的可见性如何
java·数据库·mybatis
liupenglove36 分钟前
golang操作mysql利器-gorm
mysql·golang
gopher951138 分钟前
linux驱动开发-中断子系统
linux·运维·驱动开发
yanglamei196241 分钟前
基于GIKT深度知识追踪模型的习题推荐系统源代码+数据库+使用说明,后端采用flask,前端采用vue
前端·数据库·flask
Darling_0043 分钟前
LeetCode_sql_day28(1767.寻找没有被执行的任务对)
sql·算法·leetcode