MySOL数据库管理

数据库基本操作

库和表

数据库–>数据表–>行(记录):用来描述一个对象的信息
               列(字段):用来描述对象的一个属性

常用的数据类型

int整型
float单精度浮点 4字节32位
double双精度浮点 8字节64位
char固定长度的字符类型
varchar可变长度的字符类型
text文本
image图片
decimal(5,2)5个有效长度数字,小数点后面有2位

char与varchar区别

查看数据表结构

查看当前服务器的数据库
#大小写不区分,分号“;”表示结束
SHOW DATABASES;

查看数据库中包含的表

USE 数据库名;

SHOW TABLES;

SHOW TABLES FROM 数据库名;

 

 查看表的结构

USE 数据库名;
DESCRIBE 表名;
可缩写成:DESC 表明;

DESCRIBE  [数据库名.] 表明;
SHOW CREATE TABLE 表名;#以命令的形式查看表结构

 

 

SQL语句

SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。

SQL语句分类:

语句代表的意思
DDL数据定义语言,用于创建数据库对象,如库、表、索引等(create )
DML数据操纵语言,用于对表中的数据进行管理(insert drop delete update )
DQL数据查询语言,用于从数据表中查找符合条件的数据记录(select )
DCL数据控制语言,用于设置或者更改数据库用户或角色权限(grant )

创建及删除数据库和表

创建新的数据库
CREATE DATABASE 数据库名;

 

 

创建新的表

主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。

CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型 [,...][,PRIMARY KEY (主键名)]); 

示例:

use zdj

create table zdj (id int, name char(10) not null, age int, sex char(4), money decimal(5,2));

desc lisi;

删除指定的数据表 

use 库名;

drop table 表名;

drop table 库名.表名;#库外删除指定表

 

删除指定的数据库
drop database 库名;

 

 

管理表中的数据记录

向数据表中插入新的数据记录

insert into 表名 (字段1,字段2 [,.....]) values (字段1的值,字段2的值,.....);

insert into 表名 values (字段1的值,字段2的值,.....);#不指定字段则会按照表结构的顺序插入数据

 

 

查询数据记录
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];

select * from 表名; #这里的*表示所有字段则会按照表结构的顺序显示
select 字段1,字段2,.... from ky18;  #如果指定字段不分前后顺序
select * from 表名 \G;  #以列表方式竖向显示数据记录
select * from 表明 limit n; #表示查看头n行的数据记录
select * from 表明 limit n,m; #表示查看n行后的m行数据记录
select 字段1,字段2.... from 表名 where 条件表达式;  #只查看添加符合的字段数据记录

 

 

 

修改、更新数据中的数据记录
 UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式]; 
 #这里注意使用的时候一定要加where语句去匹配条件不然会修改指定字段的所有内容

 

在数据表中删除指定的数据记录
 DELETE FROM 表名 [WHERE 条件表达式]; 

 

 

修改表名和表结构

修改表名
ALTER TABLE 旧表名 RENAME 新表名; 

 

扩展表结构(增加字段)
ALTER TABLE 表名 ADD 字段名 数据类型 default 'default值';
#default 'default值':表示此字段设置默认值 未填写则自动填入默认值;可与 NOT NULL 配合使用

 

 

修改字段(列)名,添加唯一键

唯一键: unique key
主键: primary key

共同点:字段的值都是唯一性,不允许有重复的值
不同点:一个表中 只能有1个主键,但是可以有多个唯一键
主键字段中不允许有null值,唯一键是允许有null

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];

 

 

指定字段为主键
ALTER TABLE 表名 ADD PRIMARY KEY(字段名);
#设置为主键后字段的值得是唯一

 

删除字段
 ALTER TABLE 表名 drop 字段名; 

 

 

克隆表——将数据表的数据记录生成到新的表中
CREATE TABLE 新表名称 like 旧表名称; #克隆表的结构

 

清空表——删除表内的所有数据

方法1
DELETE FROM 表名;
#DELETE清空表后,返回的结果内有删除的记录条目;DELETE工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除所有记录后,再次新添加的记录会从原来最大的记录 ID 后面继续自增写入记录。 
方法2
TRUNCATE TABLE 表名;
#TRUNCATE 清空表后,没有返回被删除的条目;TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上 TRUNCATE 会比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表内数据后,ID 会从 1 开始重新记录 

 

创建临时表

  • 临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。
CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[,....] [,PRIMARY KEY (主键名)]);

创建外键约束,保证数据的完整性和一致性

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

主键表和外键表的理解:

  • 以公共关键字作主键的表为主键表(父表、主表)
  • 以公共关键字作外键的表为外键表(从表、外表)

注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。

 

数据库用户管理

‘用户名’:指定将创建的用户名

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

‘密码’:

  • 若使用明文密码,直接输入’密码’,插入到数据库时由Mysql自动加密;

  • 若使用加密密码,需要先使用SELECT PASSWORD(‘密码’); 获取密文,再在语句中添加 PASSWORD ‘密文’;

  • 若省略“IDENTIFIED BY”部分,则用户的密码将为空(不建议使用)

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

使用明文创建用户

使用密文创建用户

查看用户信息

  • 创建后的用户保存在 mysql 数据库的 user 表里

 use myaql; #切换库

#查看表结构

desc user;

#指定字段用户,登录认证字符串,登录主机,查看数据记录

 select User,authentication_string,Host from user;

删除用户

DROP  USER '用户名'@'登录主机';

 

修改当前登录用户密码

SET PASSWORD = PASSWORD('123123');

 

修改其他用户密码

SET PASSWORD FOR '用户'@'登录主机'=password('新的密码')

忘记 root 密码的解决办法

#修改配置文件,添加配置,使登录mysql不使用授权表

vim /etc/my.cnf

#添加此行 skip-grant-tables

systemctl restart mysqld.service

mysql#登录数据库

#使用update修改root密码,刷新数据库

update mysql.user set authentication_string = password('123456') where user='root';

flush privileges;

 #退出 quit

#编辑配置文件 vim /etc/my.cnf

#删除添加的配置 skip-grant-tables

#登录 mysql -u root -p123456

数据库用户授权

授予权限

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

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
  • 权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。

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

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

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

 

 补充:

flush privileges;    #刷新权限

drop table table_name
属于DDL
无法恢复
不带where
表内容结构删除
删除速度快

truncate table table_name
属于DDL
不可回滚
不带where
表内容删除
删除速度快

delete from table_name
属于DML
可恢复
可带where
表结构在,表内容要看where执行的情况
删除速度慢,需要逐行删除

不再需要一张表的时候,用drop
想删除部分数据行时候,用delete,并且带上where子句
保留表而删除所有数据的时候用truncate

删除速度
drop> truncate > delete
安全性
delete 最好

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在Linux Ubuntu系统安装Nginx服务并实现无公网IP远程连接

文章目录 1. 安装Docker2. 使用Docker拉取Nginx镜像3. 创建并启动Nginx容器4. 本地连接测试5. 公网远程访问本地Nginx5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 在开发人员的工作中,公网远程访问内网是其必备的技术需求之一。对于…

爬虫实战-Python爬取百度当天热搜内容

爬虫实战-Python爬取百度当天热搜内容 学习建议学习目标预期内容目标分解热搜地址热搜标题热搜简介热搜指数小总结 代码实现总结 学习建议 本文仅用于学习使用,不做他用;本文仅获取页面的内容,作为学习和对Python知识的了解,不会…

蓝桥-K倍区间--前缀和

题目描述: 给定一个长度为 NN 的数列,A1,A2,…AN,如果其中一段连续的子序列 Ai,Ai1,…Aj 之和是 K 的倍数,我们就称这个区间 [i,j] 是 K 倍区间。 你能求出数列中总共有多少个 K 倍区间吗? 输入格式 第一行包含两个…

vue3 elementPlus 设置树形报错时 setCheckedKeys of undefined

第一种解决方法 nextTick(async ()>{ treeRef.value!.setCheckedKeys(rows.permissionIds, false) }) 第一种解决方法 onMounted(async () > { treeRef.value!.setCheckedKeys([3], false) })

idea warning:java源值已过时将在未来所有发行版中删除

在idea中运行maven项目 如果出现idea warning:java源值已过时将在未来所有发行版中删除,详见如下截图所示: 注意:jdk8 要解决这个警告需要设置3个地方 首先打开File->Project Structure中的Project,将SDK和language level都设…

springboot使用socket和端口启动gRPC服务器的比较

gRPC 服务器启动方式比较 一. 介绍二. 套接字地址方式三. 端口方式四. 如何选择 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 一. 介绍 百度百科套接字 gRPC 是一种高性能的远…

Springboot笔记(web开启)-08

有一些日志什么的后续我会补充 1.使用springboot: 创建SpringBoot应用,选中我们需要的模块;SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来自己编写业务代码; 2.SpringBoot对静态资源的映…

ideaSSM 人才引进管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 人才引进管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库&#xff…

动态代理源码分析

动态代理 代理模式的解释:为其他对象提供一种代理以控制对这个对象的访问,增强一个类中的某个方法,对程序进行扩展。 比如,现在存在一个UserService类: public class UserService {public void test() {System.out.…

PTA-练习4

目录 实验7-1-1 简化的插入排序 实验7-1-5 交换最小值和最大值 实验7-1-6 求一批整数中出现最多的个位数字 实验7-1-8 找出不是两个数组共有的元素 实验7-1-9 求整数序列中出现次数最多的数 实验7-1-10 组个最小数 实验7-1-11 装箱问题 实验7-1-1 简化的插入排序 //先将…

明明是字符串,为什么写的是char *str

字符串匹配 /* 暴力 将目标串s的第一个字符和模式串T的第一个字符进行匹配 相等&#xff0c;则比较s的第二个和T的第三个 不想等&#xff0c;比较s的第二个和T的第一个 如此循环 O(m*n)*/ #include<bits/stdc.h> using namespace std;int BF(char *str,char *sub) { //s…

聊聊SAP内存和ABAP内存

1、区别与联系 SAP内存&#xff08;SAP Memory&#xff09;和ABAP内存&#xff08;ABAP Memory&#xff09;&#xff0c;两者都可用于编程中的数据传递&#xff0c;将数据通过ID进行绑定&#xff0c;之后在其他程序中通过ID获取。 1.1、语法区别 1、SAP内存通过SET/GET PARA…

node.js实战 笔记 (补补前端Orz

Node.js是什么 Node.js是一个基于Chrome V8引擎的javascript运行环境。 Node.js使用一个事件驱动的非阻塞式IO模型。 Node.js和浏览器的区别 Node.js可以操作电脑&#xff0c;浏览器的javascript环境只能操作浏览器 Node.js多了一些内置模块&#xff0c;以及环境变量&#x…

【Redis】聊聊Redis常见数据类型底层结构

对于Redis来说&#xff0c;其实我们操作的数据类型就是String,List、Set、Zset、Hash&#xff0c;但是具体低层使用什么编码进行存储&#xff0c;在面试中是一个高频面试题&#xff0c;所以今天大概整理下对应的。 RedisObject与DictEntry 其实对于key来说一般都是String类型…

基于springboot+vue的在线互动学习网站

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

下载并安装ChatGPT Chrome扩展插件

解压 打开chrome浏览器并下面的步骤操作 参考链接&#xff1a; http://doc.xutongbao.top/docs/ai/994

华为配置Wi-Fi终端定位实验

配置Wi-Fi终端定位示例 组网图形 图1 配置Wi-Fi终端定位示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 管理员希望在已有WLAN覆盖业务的基础上&#xff0c;还可以定位覆盖区域内的终端位置信息。使用Wi-Fi终端定位方案&#xff0c;无需新…

C语言基础(十六)通过指针来输入和获取结构体的变量值

老样子&#xff0c;先看代码 #include <stdio.h> #include <string.h>#define NLEN 30 struct namect{char fname[NLEN];char lname[NLEN];int letters; };void getinfo(struct namect *); void makeinfo(struct namect *ptr); void showinfo(const struct namec…

如何在 Postman 中执行断言测试?

在当今的软件构建流程中&#xff0c;应用程序编程接口&#xff0c;简称 API&#xff0c;起到了不可或缺的作用&#xff0c;它们使得不同的软件应用能够互相沟通和交换数据。随着应用程序的不断演进变得越发复杂&#xff0c;保障API的可靠性及其稳定性显得格外关键。正因如此&am…

使用appuploder流程

使用appuploder流程笔记 1.如何没有账号去apple官网注册一个&#xff0c;地址&#xff1a;https://developer.apple.com/account 2.下载解压appuploder&#xff0c;双击打开&#xff0c;用刚刚注册的账号登录&#xff0c;下载地址&#xff1a;http://www.applicationloader.n…