数据库的基本概念

数据库

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

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

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

数据库工作模式

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

数据库管理

复制代码
查看数据库信息        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 '用户名'@'来源地址'
相关推荐
晚霞的不甘9 分钟前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
市场部需要一个软件开发岗位28 分钟前
JAVA开发常见安全问题:纵向越权
java·数据库·安全
海奥华231 分钟前
mysql索引
数据库·mysql
2601_949593651 小时前
深入解析CANN-acl应用层接口:构建高效的AI应用开发框架
数据库·人工智能
javachen__1 小时前
mysql新老项目版本选择
数据库·mysql
Dxy12393102162 小时前
MySQL如何高效查询表数据量:从基础到进阶的优化指南
数据库·mysql
Dying.Light2 小时前
MySQL相关问题
数据库·mysql
蜡笔小炘2 小时前
LVS -- 利用防火墙标签(FireWall Mark)解决轮询错误
服务器·数据库·lvs
韩立学长2 小时前
基于Springboot泉州旅游攻略平台d5h5zz02(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·旅游
Re.不晚3 小时前
MySQL进阶之战——索引、事务与锁、高可用架构的三重奏
数据库·mysql·架构