目录

一,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 1mysql>

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 1mysql> 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 existmysql> 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 namesYou can turn off this feature to get a quicker startup with -ADatabase 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 namesYou can turn off this feature to get a quicker startup with -ADatabase changed

5、执行系统命令

语法:`system 命令`

在数据库中执行Linux命令

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

mysql8.0.30 [mysql]>system ls -ltotal 44-rw-r--r--. 1 root root  2081 Feb  7 20:25 docker-ce.repodrwxr-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下的对象不能同名

【数据库】 如何对数据库进行操作相关推荐

  1. django学习笔记--数据库中的多表操作

    1.Django数据库----多表的新增操作 1.一对一模式下新增 创建一个详情对象,把这个对象赋值给创建的新的user对象 author_detail = models.AuthorDetail.o ...

  2. oracle rac启停数据库,Oracle rac 启动停止操作文档 PDF 下载

    一.ORACLE 正常启动/关闭操作步骤 1.启动OS操作系统集群 当RAC的两台机器操作系统正常启动后,首先启动OS操作系统的集群,命令如下: cmruncl –v (root 权限下)(启动系统集 ...

  3. SQL2K数据库开发六之表操作创建产品表products

    1.在SQL Server企业管理器中的数据库下的"表"节点上右击鼠标,在弹出的菜单上点击"新建表". 2.在出现的表设计器中,为表中加入五个列:Product ...

  4. python爬虫写入数据库_Python爬虫数据写入操作

    Python Scrapy爬虫数据写入操作 在我们写完一个爬虫项目,得到了一大堆的数据,为了以后的分析和使用,我们需要把我们得到的数据进行保存.保存数据的方式主要有:保存到数据库,保存到CSV文件,保 ...

  5. SQL2K数据库开发十一之表操作创建UNIQUE约束

    1.在数据库关系图中右击表Products,然后从弹出的菜单中选择"属性"命令.或者点击工具栏上的属性图标.         2.或者展开sample数据库,在表Products上 ...

  6. SQL2K数据库开发八之表操作创建主键

    1.使用Transact-SQL语句在表中创建主键时,可以在创建表的语句中定义列时使用如下语法: 2.在查询分析器中输入如下的语句,可以创建一个表Suppliers,该表中的SupplierID列被定 ...

  7. 数据库防火墙——实现数据库的访问行为控制、危险操作阻断、可疑行为审计...

    转自百度百科 数据库防火墙系统,串联部署在数据库服务器之前,解决数据库应用侧和运维侧两方面的问题,是一款基于数据库协议分析与控制技术的数据库安全防护系统.DBFirewall基于主动防御机制,实现数据 ...

  8. MySQL数据库应用第3章操作数据库

    MySQL安装好以后,首先需要创建数据库,这是使用mysql各种功能的前提.本章将详细介绍数据的基本操作,主要内容包括数据库的创建和删除,不同类型的数据存储引擎和存储引擎的选择. 学习目标: 1.掌握 ...

  9. oracle sql比较时间大小,Oracle数据库中日期时间的操作比较和加减

    Oracle数据库中日期时间的操作比较和加减 Oracle关于时间/日期的操作 1.日期时间间隔操作 当前时间减去7分钟的时间 select sysdate,sysdate - interval '7 ...

  10. java中删除sqlite数据库语句_sqlite数据库的介绍与java操作sqlite的实例讲解

    sqlite数据库的介绍与java操作sqlite的实例讲解 发布时间:2020-10-03 05:40:34 来源:脚本之家 阅读:92 作者:Lee_Tech sqlite是啥? 1.一种轻型数据 ...

最新文章

  1. CentOS6.5下Gunicorn+Django+nginx部署的过程
  2. JavaWEB开发04——JQuery
  3. c语言一行代码太长,C语言修改一行代码,运行效率居然提升数倍,这个技巧你知道吗...
  4. php根据单词截取英文语句,php按单词截取字符串的方法_PHP教程
  5. html 设置 下拉列表 不可用
  6. oracle blob查重,如何解决oracle blob字段 的乱码问题
  7. AC自动机——多个kmp匹配
  8. 一张图解释什么是遗传算法_什么是智慧水务决策支持系统?从一张图说起
  9. 数据结构面试常见问题总结
  10. [shell编程] 入门基础总结 (一) (一种豁然开朗的感觉)
  11. matlab信道容量函数,一般信道容量迭代算法1
  12. virtualbox win10 共享文件夹
  13. Java http响应报文_java中HTTP响应报文是什么意思?详细图解
  14. vue 基于elementUI、sortablejs的表格拖拽排序
  15. 2019FME博客大赛——【零编码】利用FME实现城市高德路况抓取及增量更新——以深圳为例
  16. 右键-打开方式里没有EXCEL,找到路径也打不开的解决方法
  17. apicloud模块和html,APICloud模块开发打包
  18. BFC、IFC、GFC、FFC
  19. 服务器 mac系统安装教程,mac os sierra安装教程
  20. vsftpd无法登陆

热门文章

  1. 基于matlab的pcm设计实验报告,基于MATLAB的PCM系统仿真课程设计
  2. 易科 Exact Globe Next 销售订单 请求日期(ETD)比发货日期提前5天
  3. 最新版Jenkins 2.249.3的安装
  4. 2021-11-05 奈氏准则,香农定理(考研中的第一波知识点)
  5. vim中指定字符串的替换和删除
  6. DataStage 简介
  7. java tpl文件_解决Layui tpl模板渲染文件上传不起作用
  8. 点云全局配准复现——Super4pcs实现
  9. 计算二分类的特异性和灵敏度
  10. python的与 或 异或 运算