数据库的基本概念

数据库

数据库由表集合组成,它是以一定的组织方式存储的相互有关的数据集合。

表:记录:行,字段(属性):列,以行+列的形式就组成了表(数据存储在表中)。

关系数据库的表由记录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享,具有最小冗余度和较高的数据独立性,它是统一管理的相关数据的集合。

数据库工作模式

接收应用程序的数据请求和处理请求------》将用户的高级语言转换为低级语言,实现对数据库的操作------》从数据库的操作中接受查询结果------》对查询结果进行处理 (格式转换)将低级语言转换为高级语言------》将处理结果返回给用户

数据库管理

复制代码
查看数据库信息        show databases
查看数据库中的表信息   show tables     
use 数据库名  切换到数据库中
show tables   show tables in mysql
显示数据表的结构 (字段 )      describe user;
Field:字段名称
type: 数据类型
Null :是否允许为空
Key :主键
Type:数据类型
Null :是否允许为空
key :主键
Default :默认值
Extra :扩展属性,例如:标志符列 (标识了种子,增量/步长) 1 2
id: 1 3 5 7

常用的数据类型

复制代码
int:整型,用于定义整数类型的数据
float:单精度浮点4字节32位
double:双精度浮点8字节64位
char:固定长度的字符类型,用于定义字符类型数据。
varchar:可变长度的字符类型		
text:文本
image:图片
decimal(5,2):5个有效长度数字,小数点后面有2位,指定长度数组。

注:Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错。
主键是唯一的,但主键可以由多个字段构成。

相关命令

创建表

复制代码
进入数据库   mysql -u root -p
查看数据库   show databases;
查看表      show tables;
进入数据库   use 库名
创建数据库    create database 数据库名;
创建表       create table  表名 (字段1 数据类型,字段2 数据类型[,...][,primary key(主键名));
例: create table class (id int not noll,name char(10) not null,score decimal(5,2),passwd char(48) default'', primary key (id));

删除表

复制代码
drop database  删除数据库
drop table   删除表

清空数据

复制代码
全部清空   turncate table ky;
选择性清空   delete from ky where level >=45;

创建、修改、更新数据表中的数据记录

复制代码
创建数据 insert into class valuse(1,'zhangsan',90.5,123);
修改数据 update zzz set passwd=PASSWORD('') where  name='zhangsan';
        update zzz set name='wangxiaoer',passwd=''where id=3;
查看数据 select * from class;

修改表的结构

复制代码
添加表的字段  alter table 表名 add 字段1 数据类型
修改表的字段  alter 表名 change 旧列名 新列名 数据类型
删除表的字段  alter 表名 drop  字段

查询数据

复制代码
select * from 表名; 可加where
select 字段1,字段2...  from 表名; 可加where
只显示前2行       select * from 表名 limit 2;
显示第2行后的前3行 select * from 表名 limit 2,3;
查看表的结构      show create table ky30

创建临时表

MySQL 的临时表,顾名思义,就是临时建立的表,并不会长期存在,主要用于保存一 些临时数据。临时表有个特性,就是只在当前连接可见,当前连接下可执行增删改查等操作, 当连接被关闭后,临时表就会被 MySQL 删除,相关的资源也会被释放。

复制代码
示例:
create temporary table xxx (
id int(4) zerofill primary key auto_ increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));
insert into xxx values (1,'zhangsan',123456,'running') ;
select * from test03;
show tables;
quit
select * from test03;

复制,克隆表

复制代码
create table yyy2 like yyy;            复制,复制yyy表结构生成yyy2表
insert into yyy2 select * from yyy;    备份数据内容

create table yyy2 (select * from yyy); 复制test 表数据到test02中

数据库用户授权

复制代码
如需全部可将数据库名改为(*)。

赋予本地权限
grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' [identified by '密码'];

赋予外部连接权限
grant all privileges on 数据库名.* to 'taotao'@'%' identified by '123456';
允许用户lisi在所有终端远程连接mysql,并拥有所有权限。

flush privileges;    #刷新权限

撤销权限  
revoke 权限列表 on 数据库.表名 from '用户名'@'来源地址'  

查看用户当前权限
show grant for '用户名'@'来源地址'
相关推荐
KYGALYX13 分钟前
在Linux中备份msyql数据库和表的详细操作
linux·运维·数据库
檀越剑指大厂27 分钟前
金仓KReplay:定义数据库平滑迁移新标准
数据库
努力成为一个程序猿.1 小时前
【Flink】FlinkSQL-动态表和持续查询概念
大数据·数据库·flink
毕设十刻1 小时前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
liliangcsdn2 小时前
如何利用约束提示优化LLM在问题转sql的一致性
数据库·sql
Java爱好狂.3 小时前
分布式ID|从源码角度深度解析美团Leaf双Buffer优化方案
java·数据库·分布式·分布式id·es·java面试·java程序员
Elastic 中国社区官方博客3 小时前
通过混合搜索重排序提升多语言嵌入模型的相关性
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
倔强的石头1064 小时前
KingbaseES:从兼容到超越,详解超越MySQL的权限隔离与安全增强
数据库·mysql·安全·金仓数据库
小鸡毛程序员4 小时前
我在CSDN学MYSQL之----数据库基本概念和基本知识(下)
数据库·mysql
程序定小飞5 小时前
基于springboot的web的音乐网站开发与设计
java·前端·数据库·vue.js·spring boot·后端·spring