当前位置: 首页 > news >正文

MySQL数据库操作

目录

SQL语句

1、SQL的背景

2、SQL的概念

SQL的分类

SQL的书写规范

MySQL数据库

1、MySQL数据库的编码

(1)utf8和utf8mb4的区别

 (2)MySQL的字符集

(3)MySQL默认编码为 latin1 ,如何更改为utf8mb4

(4)查看数据库编码情况

 show variables like "char%";

2、数据库操作

(1)创建数据库(create)

(2)删除数据库(drop)

表的操作

1、创建表格(create)

2、查询

3、插入

4、删除表格

数据类型

Text类型

Number类型

Date类型

常用的数据类型

案例:创建数据库db_ck, 再创建表t_hero ,将四大名著中的主要任务都插入这个表中。


关系数据库,都是遵循SQL语法进行数据查询和管理的。

SQL语句

1、SQL的背景

SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。由于它具有功能丰富、使用方便灵活、语言简洁易学等突出的优点,深受计算机工业界和计算机用户的欢迎。1980年10月,经美国国家标准局(ANSI)的数据库委员会X3H2批准,将SQL作为关系数据库语言的美国标准,同年公布了标准SQL,此后不久,国际标准化组织(ISO)也作出了同样的决定。

1986年了,ISO提出SQL的一个标准,SQL86。

2、SQL的概念

SQL:结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。

使用SQL语句,程序员和数据库管理员可以完成如下的任务:

  • 改变数据库的结构

  • 更改系统的安全设置

  • 增加用户对数据库或表的许可权限

  • 在数据库中检索需要的信息

  • 对数据库的信息进行更新

SQL的分类

根据SQL的功能,进行如下分类:

  • DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、索引)的操作。 CREATE、DROP、ALTER、RENAME、 TRUNCATE等。
  • DML(Data Manipulation Language):数据操作语言,定义对数据库记录的操作。 INSERT、DELETE、UPDATE、SELECT等。
  • DQL(Data Query Language):数据查询语言,SELECT将数据的查询单独说明。
  • DCL(Data Control Language):数据控制语言,定义对数据库、表、字段、用户的访问权限和安全级别。 GRANT、REVOKE等。

SQL的书写规范

在数据库系统中,

  • SQL语句不区分大小写(建议用大写) 。 但字符串常量区分大小写。
  • SQL语句可单行或多行书写,以“;”结尾。
  • 关键词不能跨多行或简写。
  • 用空格和缩进来提高语句的可读性。
  • 子句通常位于独立行,便于编辑,提高可读性。

注释:

SQL标准:

        /**/。多行注释

        “-- ” 单行注释

MySQL注释:

        “#”

MySQL数据库

1、MySQL数据库的编码

  • MySQL的默认编码:Lain1编码
  • 早期MySQL为了兼容中文等字符:提供 utf8编码
  • 由于第四个字节被用于存储表情包,所以X现在的MySQL数据库建议使用真正的Unicode编码:utf8mb4
  • MySQL字符集包括字符集(CHARACTER/character)和校对规则(COLLATION/collation)两个概念。
  • 各种编码支持的字符:

    latin1:支持西欧字符、希腊字符等。
    gbk:支持中文简体字符。
    big5:支持中文繁体字符。
    utf8:几乎支持世界所有国家的字符。

  • MySQL自带的数据库:

    Information_schema: 主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信息、字符集信息、分区信息等。(数据字典表)
    performance_schema:主要存储数据库服务器的性能参数
    mysql:存储了系统的用户权限信息及帮助信息。        
    sys:5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema 和performance_schema结合起来,查询出更加令人容易理解的数据      
    test:系统自动创建的测试数据库,任何用户都可以使用。

(1)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这种编码。

 (2)MySQL的字符集

MySQL字符序命名规则: 以字符序对应的字符集名称开头,以国家名居中(或以general居中),以ci、cs或bin结尾。

其中,ci表示大小写不敏感,cs表示大小写敏感,bin表示按二进制编码值比较。

character_set_client:MySQL客户机字符集。
character_set_connection:数据通信链路字符集,当MySQL客户机向服务器发送请求时,请求数据以该字符集进行编码。
character_set_database:数据库字符集。
character_set_filesystem:MySQL服务器文件系统字符集,该值是固定的binary。
character_set_results:结果集的字符集,MySQL服务器向MySQL客户机返回执行结果时,执行结果以该字符集进行编码。
character_set_server:MySQL服务实例字符集。
character_set_system:元数据(字段名、表名、数据库名等) 的字符集,默认值为utf8。

(3)MySQL默认编码为 latin1 ,如何更改为utf8mb4

方法:修改my.cnf配置文件,可修改MySQL默认的字符集,修改完毕重启MySQL

1.在[mysqld]下添加
    default-character-set=utf8 #适合5.1及以前版本
    (mysql 5.5及以后版本添加character-set-server=utf8)
    init_connect = 'SET NAMES utf8'
2.在[client]下添加
    default-character-set=utf8

(4)查看数据库编码情况

 show variables like "char%";

2、数据库操作

(1)创建数据库(create)

#  创建数据库

CREATE DATABASE 数据库名称 ;

#  创建数据库,同时指定编码

## 使用 charset 简写指定字符集为utf8mb4。

create database db_name default charset="utf8mb4";

## 使用character set 全写指定字符集为utf8mb4。
create database school DEFAULT CHARACTER SET utf8mb4;

## 使用 collation 指定校对集为utf8mb4_general_ci。
create database school DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ;

查询数据库的详细信息:

# 查询当前数据库是哪个数据库
select database();
# 查看数据库版本
SELECT VERSION();
# 查看当前用户
SELECT USER();
# 查看所有用户
SELECT User,Host,Password FROM mysql.user;

# 查看创建的数据库
show create databsse 数据库名称;

(2)删除数据库(drop)

# 写法1

drop database  数据库名称;

# 写法2:判断如果数据库不存在就创建,如果存在就不创建。

drop database [if exists] db_chengke;

3、表的操作

数据表(table),是一种二维表格,类似于execel,用来存储真正的数据。

1、创建表格(create)

#  语法结构

create table [if not exists] t_name (
    # 定义表结构
    字段名称1 类型 [约束条件],
    字段2  类型 [约束条件],
    ……
    字段n 类型 [约束条件]
)

#  例如:

/**
    创建一个用户表
    用户的姓名
    用户的年龄
    用户的性别
    用户的地址
    用户的电话
**/


create table t_user (
    id int,
    name varchar(50),
    age int,
    gender char(5),
    address varchar(255),
    tel char(11)
)

2、查询

# 查询表中的数据 
select * from t_name;

3、插入

# 插入数据
insert into t_name values(1, "小明", 16, '男', "四川", "110");

4、删除表格

drop table [if exists] t_name;

数据类型

MySQL数据库主要分为三大类:

  1. 数值型

  2. 字符串类型

  3. 时间和日期类型

Text类型

Number类型

注意:这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED属性,那么范围将从 0 开始,而不是某个负数。

Date类型

常用的数据类型

案例:创建数据库db_ck, 再创建表t_hero ,将四大名著中的主要任务都插入这个表中。

MySQL代码:

root@localhost 8.0.40 [(none)]> create database db_ck default charset="utf8mb4";
root@localhost 8.0.40 [(none)]> show create database db_ck
    -> ;
+----------+---------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database
                                                                 |
+----------+---------------------------------------------------------------------------------------------------------------------------------+
| db_ck    | CREATE DATABASE `db_ck` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+---------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
root@localhost 8.0.40 [(none)]> use db_ck
Database changed
root@localhost 8.0.40 [db_ck]> create table t_hero (
    -> id int,
    -> name varchar(50),
    -> works varchar(100)
    -> );
root@localhost 8.0.40 [db_ck]> insert into t_hero values(1,"宋江","《水浒传
》");
root@localhost 8.0.40 [db_ck]> insert into t_hero values(2,"武松","《水浒传
》");
root@localhost 8.0.40 [db_ck]> insert into t_hero values(3,"刘备","《三国演 义》");
root@localhost 8.0.40 [db_ck]> insert into t_hero values(4,"诸葛亮","《三国
演义》");
root@localhost 8.0.40 [db_ck]> insert into t_hero values(5,"唐僧","《西游记
》");
root@localhost 8.0.40 [db_ck]> insert into t_hero values(6,"孙悟空","《西游
记》");
root@localhost 8.0.40 [db_ck]> insert into t_hero values(7,"贾宝玉","《红楼
梦》");
root@localhost 8.0.40 [db_ck]> insert into t_hero values(8,"林黛玉","《红楼
梦》");

root@localhost 8.0.40 [db_ck]> select * from t_hero;
+------+-----------+--------------------+
| id   | name      | works              |
+------+-----------+--------------------+
|    1 | 宋江      | 《水浒传》         |
|    2 | 武松      | 《水浒传》         |
|    3 | 刘备      | 《三国演义》       |
|    4 | 诸葛亮    | 《三国演义》       |
|    5 | 唐僧      | 《西游记》         |
|    6 | 孙悟空    | 《西游记》         |
|    7 | 贾宝玉    | 《红楼梦》         |
|    8 | 林黛玉    | 《红楼梦》         |
+------+-----------+--------------------+

相关文章:

  • 应急响应--流量分析
  • HTML页面中divborder-bottom不占用整个底边,只占用部分宽度
  • Yashan DB 存储结构
  • 19. 大数据-技术生态简介
  • 前端非技术性场景面试题
  • 第4节: 静态路由与动态路由协议(RIP、OSPF)详解
  • 【javaEE】多线程(进阶)
  • Linux 离线部署Ollama和DeepSeek-r1模型
  • 做一做native层面消息实战Looper,Handler,Message
  • 第一章:欢迎来到 HTML 星球!
  • 嵌入式裸机设计--MCU常用裸机架构有哪些?
  • MySQL的安装及配置
  • abbd:`Nx`、`Lerna` 和 `Turborepo`
  • 内网anaconda如何使用代理,避免网络连接失败?
  • 【软件工程】一篇入门UML建模图(状态图、活动图、构件图、部署图)
  • 如何看torch 和torchvision版本,如何看CUDA的版本,我是ubuntu的系统,建立的环境是py38。
  • Linux下SVN保存密码
  • c语言笔记 静态数据与ELF程序格式
  • 关于C/C++语言的初学者在哪刷题,怎么刷题
  • 在资源有限中逆势突围:从抗战智谋到寒门高考的破局智慧
  • 湃书单|澎湃新闻编辑们在读的14本书:后工作时代
  • 曾犯强奸罪教师出狱后办教培机构?柳州鱼峰区教育局回应
  • 创同期历史新高!1至4月全国铁路发送旅客14.6亿人次
  • “中国神湖”加快放大资源规模!3亿美元换海外年产380万吨钾盐项目
  • 古巴外长谴责美国再次将古列为“反恐行动不合作国家”
  • 杭州“放大招”支持足球发展:足球人才可评“高层次人才”