【数据库】 如何对数据库进行操作

news2024/9/29 19:26:17

目录

一,SQL语句基础

1, SQL简介

(1) SQL语句分类

(2)SQL语句的书写规范

二,数据库操作

1、查看

(1)查看所有数据库

(2)查看有没有指定的数据库(mysql)

2、创建

(1)创建已经存在的数据库

(2)创建不存在的数据库

(3)查看创建数据库的语句:

3、删除

(1)删除数据库

4、切换

(1)使用数据库

   扩展:

5、执行系统命令

在数据库中执行Linux命令

三, MySQL 字符集

1,查看当前数据库使用的字符集

2,查看校对规则

3, utf8和utf8mb4的区别

四, 数据库对象


一,SQL语句基础

1, SQL简介

SQL:结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。使用SQL语句,程序员和数据库管理员可以完成如下的任务。

(1)改变数据库的结构

(2)更改系统的安全设置

(3)增加用户对数据库或表的许可权限

(4)在数据库中检索需要的信息

(5)对数据库的信息进行更新

(1) SQL语句分类

MySQL致力于支持全套ANSI/ISO SQL标准。在MySQL数据库中,SQL语句主要可以划分为以下几类:

(1)DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、

            索引)的操作。CREATE、DROP、ALTER、RENAME、 TRUNCATE等。

(2) DML(Data Manipulation Language): 数据操作语言,定义对数据库记录的

            操作。INSERT、DELETE、UPDATE等。

(3)  DQL(Data Query Language)数据查询语言:SELECT语句。

  (4) DCL(Data Control Language): 数据控制语言,定义对数据库、表、字段、用户的

         访问权限和安全级别。GRANT、REVOKE等。

(5) TCL(Transaction Control):事务控制。COMMIT、ROLLBACK、SAVEPOINT等。

 注:可以使用help查看这些语句的帮助信息。  

      

(2)SQL语句的书写规范

(1)在数据库系统中,SQL语句不区分大小写(建议用大写) 。

(2) 但字符串常量区分大小写。

(3)SQL语句可单行或多行书写,以“;”结尾。

(4)关键词不能跨多行或简写。

(5)用空格和缩进来提高语句的可读性。

(6) 子句通常位于独立行,便于编辑,提高可读性。

sql语句注释:

1,单行注释:“--”

(1)此句为注释,不会执行此命令

mysql> -- select user,host from mysql.user;

(2)如果没有注释符号,此句为命令,会被执行,执行结果如下:

mysql> select user,host from mysql.user;

+------------------+-----------+

| user             | host      |

+------------------+-----------+

| root             | %         |

| mysql.infoschema | localhost |

| mysql.session    | localhost |

| mysql.sys        | localhost |

+------------------+-----------+

4 rows in set (0.00 sec)

2,多行注释:/* text */

(1)把 where user='root'写在注释里面,则结果为查询所有的用户

mysql> select user from mysql.user/*

   /*> where user='root'

   /*> */

    -> ;

+------------------+

| user             |

+------------------+

| root             |

| mysql.infoschema |

| mysql.session    |

| mysql.sys        |

+------------------+

4 rows in set (0.00 sec)

(2)去掉多行注释符号,把where user='root'写在命令,结果为仅查询root用户

mysql> select user from mysql.user

    -> where user='root';

+------+

| user |

+------+

| root |

+------+

1 row in set (0.00 sec)

二,数据库操作

1、查看

语法:`SHOW DATABASES [LIKE wild];`

(1)wild可以使用"%"和"_"通配符。

(2)%表示匹配任意个数的任意字符。

(3) _表示单个任意字符。

(1)查看所有数据库

方法一:

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

4 rows in set (0.00 sec)

方法二:(%表示任意0个或多个任意字符)

mysql> show databases like '%';

+--------------------+

| Database (%)       |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

4 rows in set (0.00 sec)

方法三:_(下划线表示任意单个字符)

mysql> show databases like '___';        (此处是三个下划线,有三个字符的数据库) 
+----------------+

| Database (___) |

+----------------+

| sys            |

+----------------+

1 row in set (0.00 sec)



mysql>

Information_schema:主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信息、字符集信息、分区信息等。(数据字典表)

performance_schema:主要存储数据库服务器的性能参数

mysql:存储了系统的用户权限信息及帮助信息。       

sys: 5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema和performance_schema结合起来,查询出更加令人容易理解的数据。   

 

test:系统自动创建的测试数据库,任何用户都可以使用。

(2)查看有没有指定的数据库(mysql

mysql> show databases like 'mysql';

+------------------+

| Database (mysql) |

+------------------+

| mysql            |

+------------------+

1 row in set (0.00 sec)

2、创建

语法:CREATE DATABASE [IF NOT EXISTS]数据库名; `

1)创建已经存在的数据库

用给定的名字创建一个数据库,如果数据库已经存在,则报错。

mysql> creat database mysql;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'creat database mysql' at line 1

mysql>

2)创建不存在的数据库

创建一个名为luntan的数据库,此数据库之前不存在

mysql> creat database luntan;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'creat database luntan' at line 1

mysql> create database luntan;

Query OK, 1 row affected (0.00 sec)



mysql>

此时查看所有数据库,可以看到上面创建的luntan数据库

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| luntan             |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

5 rows in set (0.00 sec)



mysql>

(3)查看创建数据库的语句:

mysql> show create database luntan;

+----------+----------------------------------------------------------------------------------------------------------------------------------+

| Database | Create Database                                                                                                                  |

+----------+----------------------------------------------------------------------------------------------------------------------------------+

| luntan   | CREATE DATABASE `luntan` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |

+----------+----------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)



mysql>

3、删除

语法:DROP DATABASE [IF EXISTS]数据库名;`

 删除数据库中得所有表和数据库(慎用)

(1)删除数据库

删除luntan数据库

mysql> drop database lunan;

ERROR 1008 (HY000): Can't drop database 'lunan'; database doesn't exist

mysql> drop database luntan;

Query OK, 0 rows affected (0.01 sec)



mysql>

此时查看所有数据库,可以看到luntan数据库被删除了

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

4 rows in set (0.00 sec)



mysql>

4、切换

语法:` USE 数据库名;`

(1)使用数据库

使用mysql数据库

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A



Database changed

此时当前使用的数据库为mysql

mysql> select database();

+------------+

| database() |

+------------+

| mysql      |

+------------+

1 row in set (0.00 sec)

扩展:

(1)查看当前使用的用户   select user();

mysql> select user();

+----------------+

| user()         |

+----------------+

| root@localhost |

+----------------+

1 row in set (0.00 sec)

(2)设置提示符显示当前使用的数据库

打开/etc/my.cnf

[root@localhost yum.repos.d]# vim /etc/my.cnf

在文件最后输入以下代码:

[mysql]

prompt=mysql8.0.30 [\\d]>

记得重启mysqld服务 或者重新连接

此时使用mysql数据库,会显示当前使用的数据库名

mysql8.0.30 [(none)]>use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A



Database changed

5、执行系统命令

语法:`system 命令`

在数据库中执行Linux命令

在数据库中查看linux当前目录下的详细信息

mysql8.0.30 [mysql]>system ls -l

total 44

-rw-r--r--. 1 root root  2081 Feb  7 20:25 docker-ce.repo

drwxr-xr-x. 2 root root  4096 Feb  7 20:00 mysql

-rw-r--r--. 1 root root 16087 Feb  9 16:23 mysql-boost-8.0.32.tar.gz

-rw-r--r--. 1 root root   951 Jul  6  2022 mysql-community-debuginfo.repo

-rw-r--r--. 1 root root   827 Jul  6  2022 mysql-community.repo

-rw-r--r--. 1 root root   871 Jul  6  2022 mysql-community-source.repo

-rw-r--r--. 1 root root   358 Feb  7 12:07 redhat.repo

-rw-r--r--. 1 root root   120 Feb  7 14:22 rhel9.repo

三, MySQL 字符集

MySQL字符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念:字符集(CHARACTER)是一套编码,校对规则(COLLATION)是在字符集内用于比较字符的一套规则。

mysql字符集:

latin1支持西欧字符、希腊字符等

gbk支持中文简体字符

big5支持中文繁体字符

utf8几乎支持世界所有国家的字符。

utf8mb4是真正意义上的utf-8

1,查看当前数据库使用的字符集

mysql8.0.30 [mysql]>show variables like 'character%';

+--------------------------+--------------------------------+

| Variable_name            | Value                          |

+--------------------------+--------------------------------+

| character_set_client     | utf8mb4                        |

| character_set_connection | utf8mb4                        |

| character_set_database   | utf8mb4                        |

| character_set_filesystem | binary                         |

| character_set_results    | utf8mb4                        |

| character_set_server     | utf8mb4                        |

| character_set_system     | utf8mb3                        |

| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |

+--------------------------+--------------------------------+

8 rows in set (0.00 sec)

| character_set_client     | utf8mb4   |  mysql客户端字符集

| character_set_connection | utf8mb4  | 数据通信链路字符集,当mysql客户端向服务器发送请求时,客户端的请求数据以该字符集进行编码。

| character_set_database   | utf8mb4   | 数据库字符集

| character_set_filesystem | binary  | MySQL服务器文件系统字符集,该值是固定的binary

| character_set_results    | utf8mb4  | 结果集的字符集,MySQL服务器向mysql客户端返回执行结果时,执行结果以该字符集进行编码。

| character_set_server     | utf8mb4    | mysql服务器实例字符集

| character_set_system     | utf8mb3     | 元数据(字段名、表名、数据库名等)的字符集

| character_sets_dir       | /usr/share/mysql/charsets/  |  字符集安装的目录

2,查看校对规则

mysql8.0.30 [mysql]>show collation;

+-----------------------------+----------+-----+---------+----------+---------+---------------+

| Collation                   | Charset  | Id  | Default | Compiled | Sortlen | Pad_attribute |

+-----------------------------+----------+-----+---------+----------+---------+---------------+

| armscii8_bin                | armscii8 |  64 |         | Yes      |       1 | PAD SPACE     |

| armscii8_general_ci         | armscii8 |  32 | Yes     | Yes      |       1 | PAD SPACE     |

| ascii_bin                   | ascii    |  65 |         | Yes      |       1 | PAD SPACE     |

| ascii_general_ci            | ascii    |  11 | Yes     | Yes      |       1 | PAD SPACE     |

| big5_bin                    | big5     |  84 |         | Yes      |       1 | PAD SPACE     |

Collation         字符集校对规则名称。MySQL校对规则名称是:以对应的字符集名称开头,以国家名居中(或以general居中),以ci、cs或bin结尾。【ci表示大小写不敏感,cs表示大小写敏感,bin表示按二进制编码值比较。】

Charset         与字符集校对规则关联的字符集名称

Id        字符集校对规则编号

Default        是不是对应字符集默认的校对规则

Compiled        是否有将此字符集校对规则集成到服务器中

Sortlen        这个与字符串表示的字符集所需要的内存数量有关

Pad_attribute        控制字符串尾部空格处理方式。PAD SPACE:在排序和比较运算中,忽略字符串尾部空格;NO PAD:在排序和比较运算中,字符串尾部空格当成普通字符,不能忽略。

3, utf8和utf8mb4的区别

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符,如表情等等(utf8的缺点)。

因此在8.0之后,建议大家使用utf8mb4这种编码。

 

四, 数据库对象

数据库对象的命名规则:

(1)必须以字母开头

(2)可包括数字和三个特殊字符(# _ $)

(3)不要使用MySQL的保留字

(4)同一Schema下的对象不能同名

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

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

相关文章

ubuntu20下Qt5.14.2+OpenCV(含Contrib)-4.5.0环境搭建

Qt若要能处理图片和视频,就必须安装OpenCV,而OpenCV中很多的高级功能如人脸识别等都包含在Contrib扩展模块中,需要将Contrib与OpenCV一起联合编译,目前所用这两个版本都是4.5.0版。 一、下载OpenCV OpenCV的官方下载地址为http:…

SSM整合SpringSecurity简单使用

一、SpringSecurity 1.1 什么是SpringSecurity Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。(官网地址) Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别是使用领先的J2EE解决方案-Spring框架开发…

用网络调试助手测试PLC-Reocrder收听模式的过程

目录 一、测试环境 二、步骤及要点说明 1、PLC-Recorder的通道配置 2、PLC-Recorder启动采集 3、配置网络调试助手 4、启动调试助手的连接,并点击“启动批量发送” 5、停止发送,查看发送和接收的情况 三、小结 一、测试环境 Windows10操作系统&a…

Docker进阶 - 11. Docker Compose 编排服务

注:本文只对一些重要步骤和yml文件进行一些讲解,其他的具体程序没有记录。 目录 1. 原始的微服务工程编排(不使用Compose) 2. 使用Compose编排微服务 2.1 编写 docker-compose.yml 文件 2.2 修改并构建微服务工程镜像 2.3 启动 docker-compose 服务…

数据结构(二):单向链表、双向链表

数据结构(二)一、什么是链表1.数组的缺点2.链表的优点3.链表的缺点4.链表和数组的区别二、封装单向链表1. append方法:向尾部插入节点2. toString方法:链表元素转字符串3. insert方法:在任意位置插入数据4.get获取某个…

RNN神经网络初探

目录1. 神经网络与未来智能2. 回顾数据维度和神经网络1. 神经网络与未来智能 2. 回顾数据维度和神经网络 循环神经网络,主要用来处理时序的数据,它对每个词的顺序是有要求的。 循环神经网络如何保存记忆功能? 当前样本只有 3 个特征&#x…

git基本概念图示【学习】

基本概念工作区(Working Directory)就是你在电脑里能看到的目录,比如名字为 gafish.github.com 的文件夹就是一个工作区本地版本库(Local Repository)工作区有一个隐藏目录 .git,这个不算工作区&#xff0c…

新方案:从错误中学习,点云分割中的自我规范化层次语义表示

前言 LiDAR 语义分割通过直接作用于传感器提供的原始内容来完成细粒度的场景理解而受到关注。最近的解决方案展示了如何使用不同的学习技术来提高模型的性能,而无需更改任何架构或数据集。遵循这一趋势,论文提出了一个从粗到精的设置,该设置从…

查找与排序 练习题

1、下列排序算法中,▁▁B▁▁ 是稳定的。 A.简单选择排序 B.冒泡排序 C.希尔排序 D.快速排序 解析:稳定排序是每次排序得到的结果是唯一的,不稳定排序得到的结果不唯一。 稳定:冒泡排序、归并排序、基数排序 不稳定&#x…

DolphinSchedule基于事件驱动的高性能并发编程

文章目录前言前置知识异步编程基于时间驱动的异步编程模式(EAP Event-based Asynchronous Pattern )实现EAPDolphinSchedule结合Netty实现Master与Worker之间的高性能处理能力的设计方案设计代码实现总结前言 研究DolphinSchedule的内因在于对调度系统并…

内存访问局部性特征

分享一道360的C语言笔试题。x是一个行列均为1000的二维数组,下面代码运行效率最高的是哪个? 二维数组大家都很熟悉,正常人遍历二维数组都是一行一行来的,为什么很少有人按列去遍历? 这道笔试题其实考察的就是遍历效率…

#车载基础软件——AUTOSAR AP技术形态

车载基础软件——AUTOSAR AP技术形态 我是穿拖鞋的汉子! 今天是2023年2月11日,时间好快,疫情解封已好几个月,生活节奏也在逐渐恢复到三年前的节奏。可能是感觉疫情与自己距离变远了,大家也开始慢慢的不再恐惧! 老规矩分享一段喜欢的文字,避免自己成为高知识低文化的工…

【安全】nginx反向代理+负载均衡上传webshell

目录 一、负载均衡反向代理下上传webshell Ⅰ、环境搭建 ①下载蚁剑,于github获取官方版: ②下载docker&docker-compose ③结合前面启动环境 ④验证 负载均衡下webshell上传 一、负载均衡反向代理下上传webshell 什么是反向代理? 通常的代…

大数据框架之Hadoop:入门(三)Hadoop运行环境搭建(开发重点)

3.1虚拟机环境准备 详见:yiluohan1234/vagrant_bigdata_cluster: 利用virtualbox快速搭建大数据测试环境 (github.com) 单纯只是安装虚拟机的话,注释掉40到115行。按照教程安装即可。 在 /opt 目录下创建 module、 software 文件夹 [roothdp101 ~]# m…

一、Java并发编程之线程、synchronized

黑马课程 文章目录1. Java线程1.1 创建和运行线程方法一:Thread方法二:Runnable(推荐)lambda精简Thread和runnable原理方法三:FutureTask配合Thread1.2 查看进程和线程的方法1.3 线程运行原理栈与栈帧线程上下文切换1.…

1. SpringMVC 简介

文章目录1. SpringMVC 概述2. SpringMVC 入门案例2.1 入门案例2.2 入门案例工作流程3. bean 加载控制4. PostMan 工具1. SpringMVC 概述 SpringMVC 与 Servlet 功能等同,均属于 Web 层开发技术。SpringMVC 是 Spring 框架的一部分。 对于 SpringMVC,主…

Python导入模块的3种方式

很多初学者经常遇到这样的问题,即自定义 Python 模板后,在其它文件中用 import(或 from...import) 语句引入该文件时,Python 解释器同时如下错误:ModuleNotFoundError: No module named 模块名意思是 Pytho…

45.在ROS中实现global planner(1)

前文move_base介绍(4)简单介绍move_base的全局路径规划配置,接下来我们自己实现一个全局的路径规划 1. move_base规划配置 ROS1的move_base可以配置选取不同的global planner和local planner, 默认move_base.cpp#L70中可以看到是…

Vue3电商项目实战-分类模块1【01-顶级类目-面包屑组件-初级、02-顶级类目-面包屑组件-高级】

文章目录01-顶级类目-面包屑组件-初级02-顶级类目-面包屑组件-高级01-顶级类目-面包屑组件-初级 目的: 封装一个简易的面包屑组件,适用于两级场景。 大致步骤: 准备静态的 xtx-bread.vue 组件定义 props 暴露 parentPath parentName 属性&am…

[oeasy]python0081_ANSI序列由来_终端机_VT100_DEC_VT选项_终端控制序列

更多颜色 回忆上次内容 上次 首先了解了RGB颜色设置可以把一些抽象的色彩名字 落实到具体的 RGB颜色 计算机所做的一切 其实就是量化、编码把生活的一切都进行数字化 标准 是ANSI制定的 这个ANSI 又是 怎么来的 呢??🤔 由来 ANSI 听起…