2.数据库语言二

news2025/2/12 0:42:31

文章目录

  • 数据库语言二
    • Mysql的约束
    • 数据表高级操作
      • 克隆表
        • 方法一
        • 方法二
      • 清空表,删除表内的数据
        • 方法一
        • 方法二
      • 创建临时表
      • 外键约束
      • 数据库用户管理
        • 新建用户
        • 查看用户
        • 重命名用户
        • 删除用户
        • 修改用户密码
        • 忘记root密码
      • 数据库用户授权
        • 授予权限
        • 查看权限
        • 撤销权限

数据库语言二

Mysql的约束

use 库名;
create table if not exists 表名 (
	id int(4) zerofill primary key auto_increment,
    name varchar(4) not null default '匿名',
    phone int not null unique key,
    hobby varchar(50)
);

在这里插入图片描述

#if not exists: 
表示检测要创建的表是否已存在,如果不存在就继续创建


#int(4) zerofill: 
表示若数值不满4位数,则前面用“0"填充,例0001
这个4  在没有后面  zerofill  时,没有意义


#auto_ increment: 
表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;
自增长字段数据不可以重复;自增长字段必须是主键;
如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次


#unique key: 
表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键


#not null:
表示此字段不允许为NULL


##default '默认值'
指定默认值
insert into info (name,phone) values ('张三',123456789);
insert into info (name,phone) values ('小红',123456789);
insert into info (name,phone) values ('李四',2222222);
insert into info (name,phone) values ('王五',3333333);
insert into info (name,phone) values ('赵六',3333333);
insert into info (name,phone) values ('小六',444444444);


insert into info (id,name,phone) values (2,'小七',123456789);

insert into info (id,phone) values (9,456749852);

在这里插入图片描述

  • Mysql的常用六大约束

    • primary key:

      • 主键约束,字段的值不能重复,不能为null,一个表只能有一个主键
    • unique key .

      • 唯一性约束字段的值不能重读,能为null,一个表可有多个唯一键
    • not nu1l

      • 非空约束字段的值不能为null
    • default

      • 默认值约束字段的值如果没有设置则使用默认值自动填充
    • auto_ increment

      • 自增约束,字段的值如果没有设置,默认会从1开始递增,要求自增字段必须为主键字段
    • foreign key

      • 外键约束

数据表高级操作

克隆表

方法一

create table 新表名 like 旧表名;    
#复制格式,通过LIKE方法,复制旧表结构生成新表
##里面数据为空


insert into 新表 select * from 旧表;      
#备份内容,表中数据

在这里插入图片描述

方法二

CREATE TABLE 新表 (SELECT * from 旧表);
##创建表时备份表中数据,但表结构可能会发生变化


show create table 表名\G    
#获取数据表的表结构、索引等信息

desc 表名;

SELECT * from 表名;

在这里插入图片描述

清空表,删除表内的数据

方法一

delete from 表名;

#DELETE清空表后,返回的结果内有删除的记录条目; 
DELETE 工作时是一行一行的删除记录数据的;
如果表中有自增长字段,使用DELETE FROM 删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。
会调用CPU,影响性能

方法二

truncate table 表名;

#TRUNCATE清空表后,没有返回被删除的条目: 
TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上TRUNCATE会比DELETE清空表快;
使用TRUNCATE TABLE 清空表内数据后,ID会从1开始重新记录。

在这里插入图片描述

创建临时表

  • 临时表创建成功之后,使用SHOWTABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。
  • 如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除临时表。
CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[, ...][, PRIMARY KEY (主键名)]);
##创建临时表
create temporary table 表名 (
	id int(4) zerofill primary key auto_ increment,
	name varchar(10) not null,
	phone int(18) not null unique key,
);

show tables;
##查看不到临时表

desc 表名;
##能看见临时表结构

insert into 表名 values (1,'zhangsan',123456);

select * from 表名;

在这里插入图片描述

外键约束

  • 外键的定义:如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x称为表二的外键。

  • 主键表和外键表的理解

    1. 以公共关键字作主键的表为主键表(父表、主表)
    2. 以公共关键字作外键的表为外键表(从表、外表)
    3. 注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主表外键字段和从表的字段具备相同的数据类型、字符长度和约束。
#创建主表test04
create table test04 (pid int(4),lesson varchar(50));

#创建从表test05
create table test05 (id int(4) primary key auto_increment,name varchar(10),age int(3),class int(4)) ;

##alter table test05 add primary key (id);
##在创建完后,在表中添加主键

#为主表test04添加一个主键约束。主键名建议以"PK_”开头。
alter table test04 add constraint PK_hobid primary key (hobid);

#为从表test05表添加外键,并将test05表的class字段和test04表的pid字段建立外键关联。外键名建议以"FK_”开头。

alter table test05 add constraint FK_hob foreign key (class) references test04 (pid);


##constraint FK_hob
##指定键的名称

desc test04;
desc test05;
alter table 表名 add foreign key (外键字段) references 主键表 (主键字段);


插入数据时,现在主键表插入数据,再在外键表插入对应的数据;
删除数据时,现在外键表删除数据,再在主键表删除对应的数据。
#查看和删除外键约束
#如果要删除外键约束字段先删除外键约束,再删除外键名

alter table 表名 drop foreign key 外键名;
alter table 表名 drop key 外键名;

show create table test05;
alter table test05 drop foreign key FK_hob;
alter table test05 drop key FK_hob;
desc test05;

在这里插入图片描述
在这里插入图片描述

数据库用户管理

新建用户

CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];

create user 'zhangsan'@'localhost' identified by '123';
'用户名':指定将创建的用户名.

'来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录
可用通配符%

'密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
若使用加密密码,需要先使用SELECT PASSWORD('密码');获取密文,再在语句中添PASSWORD '密文';
若省略“IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)
select passwd('123');
##将明文密码转换成密文密码

select user();
##查看当前登陆用户

查看用户

use mysql;
show tables;
use mysql;
select User,authentication_string,Host from user;

重命名用户

RENAME USER 'zhangsan'@'localhost' TO 'lisi'@'localhost';


rename user '旧名字'@'localhost' to '新名字'@'localhost';

删除用户

DROP USER 'lisi'@'localhost' ;

在这里插入图片描述

修改用户密码

##修改当前用户密码
set password = password('abc123');
##修改指定用户密码
set password for 'user1'@'localhost' = password('abc123T);

忘记root密码

vim /etc/my.cnf

[mysqld]
skip-grant-tables    #添加,使登录mysql不使用授权表

systemctl restart mysqld
mysql    #直接登录
##使用update修改root密码,刷新数据库


update mysql.user set authentication_string = password('abc123') where user='root' and host='localhost';

privilefes
flush privileges;
quit
mysql -u root -pabc123

-h:指定地址
-P:指定端口

注意:最后再把/etc/my.cnf 配置文件里的skip-grant-tables 删除,并重启mysql服务。

数据库用户授权

授予权限

grant语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时,GRANT语句用于修改用户信息。


grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' identified by '密码';
#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select, insert, update”。使用"all"表示所有权限,可授权执行任何操作。

#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符"*"。例如,使用“kgc.*"表示授权操作的对象为xyw数据库中的所有表。

#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.xyw.com"、“192. 168.80.%”等。

#IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY"部分,则用户的密码将为空。

#允许用户zhangsan在本地查询数据库中所有表的数据记录,但禁止查询其他数据库中的表的记录。
GRANT select ON 库名.* to 'zhangsan'@'localhost';

grant all privileges on *.* to 'lisi'@'%' identified by '123456';

flush privileges;    #刷新权限
quit

mysql -u zhangsan -pabc123
use xyw;
show tables; .
select * from yyy;
这个all privilege都有哪些权限?
all privilege权限如下:
insert (插入数据)
select (查询数据)
update (更新表的数据)
delete (删除表中数据)
create (创建库,表)
drop (删除库, 表)

references
index (建 立索引)
alter (更改表属性)
create temp orary tables
lock tables (锁表)
execute
create view (创建视图)
show view (显示视图)
create routine (创建存储过程)
alter routine (修改存储过程)
event (事件)
trigger on (创建触发器)

在这里插入图片描述

查看权限

mysql -u root -pabc123
show grants for 用户名@来源地址;

在这里插入图片描述

撤销权限

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645904.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenAI 重磅更新 变得更强啦 | 包括更多可控的 API 模型、函数调用能力、更长的上下文和更低的价格

文章目录 一、前言二、主要内容三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 OpenAI 官网:https://openai.com/blog/function-calling-and-other-api-updates 功能调用和其他 API 更新。OpenAI 宣布更新,包…

netstat命令与wget命令

查看本机的网络连接与后门:netstat 如果某个网络服务明明已经启动了,但是就算无法进行连接,那应该怎么办?首先你要查询以下网络接口所监听的端口(port),来看看是否真的已经启动,因为有时候屏幕上显示的OK并…

从 ColossalChat 到 DeepSpeedChat, RLHF的应用及优化

从 ColossalChat 到 DeepSpeedChat, RLHF的应用及优化 原创 紫气东来 收录于合集#LLMs8个 作者:紫气东来 项目地址:https://zhuanlan.zhihu.com/p/621391363 一、深入理解 ColossalChat 在上一期 NLP(九):LLaMA, Al…

畅捷通T+ SQL注入漏洞复现(QVD-2023-13612)

0x01 产品简介 畅捷通 T 是一款基于互联网的新型企业管理软件,功能模块包括:财务管理、采购管理、库存管理等。主要针对中小型工贸和商贸企业的财务业务一体化应用,融入了社交化、移动化、物联网、电子商务、互联网信息订阅等元素。 0x02 漏…

STM32速成笔记—GPIO

文章目录 一、什么是GPIO二、GPIO的输入/输出模式三、GPIO初始化配置四、Boot引脚五、一些特殊的GPIO六、点亮LED1. 硬件电路2. 拉高/拉低GPIO3. 程序设计 七、GPIO的位带操作 一、什么是GPIO GPIO(英语:General-purpose input/output),通用型之输入输出的简称&…

【算法与数据结构】142、LeetCode环形链表 II

文章目录 一、题目二、哈希法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、哈希法 思路分析:这道题也可以用双指针法去解,这里我介绍一种哈希法。利用set集合的值不可重复的特性。…

什么触控笔好用又便宜?性价比高的苹果笔推荐

而对于一些将IPAD作为学习工具的人来说,这款苹果Pencil无疑是必不可少的。不过,苹果版Pencil的价格实在是太高了,很多人都买不起。所以,最好的办法就是使用平替的电容笔。我是在前几年就开始使用ipad了,同时也是一位数…

快速入门教程:神经常微分方程 (Neural ODE)

神经常微分方程(Neural Ordinary Differential Equations,简称 Neural ODE)是一种基于常微分方程(Ordinary Differential Equations,ODEs)的深度学习方法,它结合了传统的ODE数值求解技术和神经网络模型。通过使用ODE来建模数据的演化过程,Neural ODE可以自动地学习数据…

项目管理专业人员能力评价(CSPM)对比PMP哪个好考?

2021年10月,中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系,开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会(CAS)组织开展的项…

编译opencv环境搭建:vs2019 + cmake-3.25 + opencv-4.5.5

一 下载vs2019 链接:Downloads - Visual Studio Subscriptions Portal 下载社区版本,因为是免费的,大家随便用 下载成功后直接安装就可以了。 有的环境安装好后在属性管理器中可能没有 Microsoft.Cpp.x64 文件 从如下链接下载 Microsoft.C…

三、OkHttp_缓存

一、OKHttp的缓存逻辑 OKHttp 把重复请求的数据缓存在本地,并设置超时时间,在规定时间内,客户端不再向远程请求数据,而是直接从本地缓存中取数据。 一来提高了响应速度,二来节省了网络带宽(也就是节省了钱…

如何使用uni-app开发微信小程序

web前端-基于uniapp的微信小程序项目 起步uni-app简介开发工具下载 HBuilderX安装 HBuilderX安装 scss/sass 编译快捷键方案切换修改编辑器的基本设置新建uni-app项目把项目运行到微信开发者工具 scss语法学习安装相关插件和配置基础格式选择器的嵌套父选择器后面添加内容 &…

麒麟系统在线安装docker(x86/arm)

文章目录 一、查看系统版本,确认版本二、查看系统架构三、下载安装docker-ceX86架构安装aarch64架构 一、查看系统版本,确认版本 [rootlocalhost ~]# cat /etc/kylin-release Kylin Linux Advanced Server release V10 (Sword)二、查看系统架构 [root…

Windows内存诊断工具卡住无响应怎么办?

Windows内存诊断工具是一个有用的程序,用于检查您的RAM是否存在潜在问题。当系统性能降低、频繁冻结或者蓝屏时,用户可以通过内存诊断工具检查和修复内存方面的问题。该工具具有三种测试模式,基本、标准和扩展模式,其中扩展模式下…

在UOS上安装及更新恒辉桌面软件

UOS作为一颗冉冉升起的新星,吸引了众多国内用户及厂商的目光。 而新的系统势必面临着一个问题——软件及应用的适配性。各个软件厂商需要单独为此适配产品。 2022年2月,支持全四路国产CPU(x86架构、arm架构、龙芯、申威)的数据库…

chatgpt赋能python:Python如何打印结果

Python如何打印结果 Python是一种高级编程语言, 它也是一种解释型语言,也就是说,程序员不必把Python代码编译成机器码或者字节码。它利用缩进来表示块结构,同时使用一些特殊的关键字来定义变量和类等。 在Python中,有多种方式来…

算法课设 戳气球问题实验报告 动态规划

戳气球实验报告 目录 一、题目 二、分析原问题并做调整 三、分析子问题及其递推关系 四、确定dp数组的计算顺序 五、复杂度分析 六、具体实现代码 七、填表示例寻找最优解和最优方案 八、总结 九、致谢 一、题目 有n个气球,编号为0到n-1,每个…

管理类联考——逻辑——知识篇——第三章 三段论(考2题)(以性质命题为基础,最常用推理)

第三章 三段论(考2题)(以性质命题为基础,最常用推理) 一、三段论的基本结构 基本结构1(最简单,不考): 所有A是B 所有B是C 得:所有A是C 基本结构2&#xff…

网络安全系统教程+学习路线(自学笔记)

一、什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面…

MySQL查询优化大揭秘!看这些关键数据,让你的数据库速度飞起来!

大家好,我是小米,今天给大家分享一些关于MySQL查询优化的干货。在数据库开发和维护中,优化查询是至关重要的一环。通过合理的优化,我们可以让数据库的查询速度事半功倍。那么,在MySQL的查询计划中,有哪些关…