数据库 --- mysql(03)-- mysql字符集、表操作(01)

news2024/11/17 23:49:54

MYSQL

1、mysql字符集

(1)简介:

MySQL字符集包括字符集(CHARACTER)校对规则(COLLATION)两个概念:

  • 字符集(CHARACTER)是一套编码
  • 校对规则(COLLATION)是在字符集内用于比较字符的一套规则。
mysql字符集:
	latin1支持西欧字符、希腊字符等
	gbk支持中文简体字符
	big5支持中文繁体字符
	utf8几乎支持世界所有国家的字符。
	utf8mb4是真正意义上的utf-8

(2)命令:

<1> 查看字符集

mysql8.0 [(none)]>show variables like 'character%';
-- 查看所有像character..的变量

+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | gbk                            |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | gbk                            |
| character_set_system     | utf8mb3                        |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.00 sec)

<2> 修改默认字符集

mysql8.0 [(none)]>set character_set_server = utf8mb4;

mysql8.0 [(none)]>set character_set_database = utf8mb4;

mysql8.0 [(none)]>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/ |
+--------------------------+--------------------------------+

附:utf8和utf8mb4的区别

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。

utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。


2、数据库对象

命名规则:

  • 必须以字母开头
  • 可包括数字和特殊字符(_和$)
  • 不要使用MySQL的保留字
  • 同一Schema下的对象不能同名

3、表的基本操作

数据表的每行称为一条记录(record);每一列称为一个字段(field)

(1)数据类型

MYSQL中,有三种主要的类型:文本、数值日期/时间类型

常用数据类型:

(2)创建表

语法:

CREATE TABLE 表名(
    列名 列数据类型,
    列名 列数据类型
);

例:

mysql8.0 [student]>create table t1(id int,name char(20)); -- 单行创建

mysql8.0 [student]>create table t1(
    -> id int,name char(20)
    -> ,address char(50));
/* 多行创建 */

mysql8.0 [student]>show tables;
+-------------------+
| Tables_in_student |
+-------------------+
| t1                |
| t2                |
+-------------------+

(2)查看表

<1> 查看数据库中的所有表

语法SHOW TABLES[FROM 数据库名][LIKE wild];

例:

mysql8.0 [student]>show tables from mysql like '%server%'; -- 查看mysql数据库中含server字段的tables
+----------------------------+
| Tables_in_mysql (%server%) |
+----------------------------+
| server_cost                |
| servers                    |
+----------------------------+

<2> 显示当前数据库中已有的数据表信息

[1] 语法{DESCRIBE|DESC}  表名 [列名];

mysql8.0 [student]>describe student.t2;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| id      | int      | YES  |     | NULL    |       |
| name    | char(20) | YES  |     | NULL    |       |
| address | char(50) | YES  |     | NULL    |       |
+---------+----------+------+-----+---------+-------+

[2] 语法show columns from 表名称;

mysql8.0 [student]>show columns from student.t1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int      | YES  |     | NULL    |       |
| name  | char(20) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+

(3)删除表

语法DROP TABLE [IF EXISTS] 表名;

mysql8.0 [student]>drop table t1; -- 当前处在数据库中,不指定数据库默认删除本数据库内的表

mysql8.0 [student]>drop table student.t2;

mysql8.0 [student]>show tables;

(4)修改表结构 --- ALTER

mysql8.0 [student]>desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int      | YES  |     | NULL    |       |
| name  | char(20) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+

#修改列类型:ALTER TABLE 表名 MODIFY 列名 列类型;
mysql8.0 [student]>alter table t1 modify name varchar(30);

mysql8.0 [student]>desc t1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

#增加列:ALTER TABLE 表名 ADD 列名 列类型;
mysql8.0 [student]>alter table t1 add birthdar date;

mysql8.0 [student]>desc t1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | YES  |     | NULL    |       |
| name     | varchar(30) | YES  |     | NULL    |       |
| birthdar | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

#删除列:ALTER TABLE 表名 DROP 列名;
mysql8.0 [student]>alter table t1 drop birthdar;

mysql8.0 [student]>desc t1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

#修改列名:ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型;
mysql8.0 [student]>alter table t1 change id score int;

mysql8.0 [student]>desc t1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| score | int         | YES  |     | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

#修改表名
方式1:ALTER TABLE 表名 RENAME 新表名;
方式2:RENAME TABLE 表名 TO 新表名;
mysql8.0 [student]>alter table t1 rename sss;

mysql8.0 [student]>rename table t2 to aaa;

mysql8.0 [student]>show tables;
+-------------------+
| Tables_in_student |
+-------------------+
| aaa               |
| sss               |
+-------------------+

(5)复制表结构

<1> 语法create table 新表名 like 源表

-- 将源表的表结构复制到新表
mysql8.0 [student]>create table qqq like aaa;

mysql8.0 [student]>desc qqq;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| id      | int      | YES  |     | NULL    |       |
| name    | char(20) | YES  |     | NULL    |       |
| address | char(50) | YES  |     | NULL    |       |
+---------+----------+------+-----+---------+-------+

<2> 语法create table 新表名 select * from 源表

-- 实现表结构的复制,甚至可以将源表的表记录拷贝到新表中
mysql8.0 [student]>select * from sss;
+-------+---------+
| score | name    |
+-------+---------+
|    34 | mmm     |
|    35 | wangwei |
+-------+---------+

mysql8.0 [student]>create table ttt select * from sss;

mysql8.0 [student]>desc ttt;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| score | int         | YES  |     | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

mysql8.0 [student]>select * from ttt;
+-------+---------+
| score | name    |
+-------+---------+
|    34 | mmm     |
|    35 | wangwei |
+-------+---------+

<3> 语法insert into 表名 select * from 原表;

仅复制数据
mysql8.0 [student]>select * from qqq;

mysql8.0 [student]>insert into qqq select * from aaa;

mysql8.0 [student]>select * from qqq;
+------+-------+----------+
| id   | name  | address  |
+------+-------+----------+
|   11 | smith | nework   |
|   22 | wang  | shanghai |
+------+-------+----------+

例1:将student数据库中的aaa表的表结构复制到stuinfo数据库中的mm表中

mysql8.0 [student]>create database stuinfo;
mysql8.0 [stuinfo]>create table mm like student.aaa;

mysql8.0 [stuinfo]>desc mm;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| id      | int      | YES  |     | NULL    |       |
| name    | char(20) | YES  |     | NULL    |       |
| address | char(50) | YES  |     | NULL    |       |
+---------+----------+------+-----+---------+-------+

例2:在stuinfo中创建msd表,将student的sss表结构和数据复制过去

mysql8.0 [(none)]>create table stuinfo.msd select * from student.sss;

mysql8.0 [(none)]>use stuinfo;
mysql8.0 [stuinfo]>desc msd;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| score | int         | YES  |     | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

mysql8.0 [stuinfo]>select * from msd;
+-------+---------+
| score | name    |
+-------+---------+
|    34 | mmm     |
|    35 | wangwei |
+-------+---------+

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

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

相关文章

Spark(24):Spark内核概述

目录 0. 相关文章链接 1. Spark核心组件 1.1. Driver 1.2. Executor 2. Spark通用运行流程概述 0. 相关文章链接 Spark文章汇总 1. Spark核心组件 1.1. Driver Spark 驱动器节点&#xff0c;用于执行 Spark 任务中的 main 方法&#xff0c;负责实际代码的执行工作。Dr…

基于SSM的新生报到系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

USB接口种类知多少?一起来温故一下吧!

前言 USB接口类型有很多&#xff0c;如下图所示&#xff0c;到底哪个是哪个&#xff1f;都怎么称呼&#xff1f; 本人也是对各种USB接口一知半解&#xff0c;趁着今天周末&#xff0c;整理了下USB接口的种类&#xff0c;相信也有很多跟我一样对其了解不够深的朋友&#xff0c;那…

测试开发必备技能-Jmeter二次开发

01 概述 为什么需要做二次开发&#xff1f;JMeter作为一款开源的性能、接口测试工具&#xff0c;有时候无法满足我们工作的需要&#xff0c;一般体现在&#xff1a;协议不支持、没有相应数据处理功能等。 一般这种情况下&#xff0c;我们可以做的选择有&#xff1a; 第一种找…

4.Java基本数据类型

Java 的两大数据类型: 基本数据类型引用数据类型 1. 八种基本类型。六种数字类型&#xff08;四个整数型&#xff0c;两个浮点型&#xff09;&#xff0c;一种字符类型&#xff0c;还有一种布尔型 byte&#xff1a; byte 数据类型是8位、有符号的&#xff0c;以二进制补码表…

Python 列表 extend()函数使用详解

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 extend函数使用详解 1、可以接收的参数1.1、添加字符串1.2、添加元组1.3、添加字…

ts学习(一):基础篇1

旨在记录&#xff01; 这篇人都学废了&#xff0c;本想记录常用类型&#xff0c;越学越多&#xff0c;每一个都很重要… 一、string: 字符串类型二、number: 数字类型三、boolean: 布尔值四、array:数组五、tuple: 元组六、字面量七、object:对象八、any: 任意类型九、unknown:…

Nacos知识掌握【快速入门】

通过上面的调用图会发现&#xff0c;除了微服务&#xff0c;还有一个组件是服务注册中心&#xff0c;它是微服务架构非常重要 的一个组件&#xff0c;在微服务架构里主要起到了协调者的一个作用。注册中心一般包含如下几个功能&#xff1a; \1. 服务发现&#xff1a; 服务注…

第十章:PSPNet——金字塔场景解析网络

0.摘要 场景解析对于无限制的开放词汇和多样化的场景是具有挑战性的。在本文中&#xff0c;我们通过金字塔池化模块和提出的金字塔场景解析网络&#xff08;PSPNet&#xff09;&#xff0c;利用全局上下文信息的能力&#xff0c;通过基于不同区域的上下文聚合&#xff0c;来处理…

五种最新优化算法(SWO、ZOA、EVO、KOA、GRO)求解23个基准测试函数(含参考文献及MATLAB代码)

一、五种算法简介 &#xff08;1&#xff09;蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&#xff0c;具有搜索速度快&a…

Leetcode 43 字符串相乘

Leetcode43字符串相乘 题解1&#xff08;按位计算&#xff09; 给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 注意&#xff1a;不能使用任何内置的 BigInteger 库或直接将输入转换为整…

Ansible 自动化运维工具(完善版)

目录 Ansible概述 Ansible特点 Ansible应用 1、使用者 2、Ansible工具集合 3、作用对象 Ansible的搭建 环境 ansible主机 1、ansible 2、Ansible-doc Ansible模块 1.command模块 2.shell模块 3.raw模块 Ansible概述 Ansible是最近非常火的一款开源运维自动化工具…

Verdi分析有限状态机

Verdi平台包括最先进的结构可视化和分析工具&#xff0c;其中&#xff0c;nTrace用于源代码&#xff0c;nWave用于波形&#xff0c;nSchema用于原理图/逻辑图&#xff0c;nState用于有限状态机&#xff08;FSM&#xff09;。本节将对nState的使用进行介绍。 为了简单起见&#…

软件测试(测试用例 )—— 写用例无压力

软件测试——用例篇 一、概念 测试用例的基本概念&#xff1a; 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合&#xff0c;这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素 。 主要步骤&#xff1a; 测试…

企业数字化营销怎么做?企业数字化营销系统怎么选择?

数字化营销是在不改变原有营销本质的前提下&#xff0c;借助数字化平台&#xff0c;把营销集成在系统或者说平台&#xff0c;通过平台的整合发力&#xff0c;改变传统营销压力及规避一些营销困难&#xff0c;实现数据留痕平台&#xff0c;用数据反哺运营与营销&#xff0c;让营…

jdk动态代理案例和实现原理

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

visio插入mathtype保存时报错“DOS共享冲突”解决方案

软件版本 软件版本VisioMicrosoft Visio 专业版2019WordMicrosoft Office LTSC 专业增强版 2021MathType7.4.10.53WindowsWindows 10 家庭中文版 22H2 19045.3208 现象 无论是从Word直接“粘贴”到Visio或从Visio“插入→对象”插入“MathType 7.0 Equation”&#xff0c;在…

如何为SoC做ARM CPU适配——以裸核使用malloc为例

本文任务&#xff1a;为陌生的SoC平台编写基础软件&#xff0c;适配 malloc() 函数 0 如何为SoC做ARM CPU适配 今时不同往日&#xff0c;我们平时开发/娱乐接触到的消费级MCU/MPU基本山都是包含处理核与一系列外设的SoC。如果熟悉裸片开发&#xff0c;一定会在厂家提供的标准…

运营工具篇

既然要做点事&#xff0c;至少要先做到万事俱备只欠东风。 我们也不用把研发产品看得太神圣&#xff0c;比如拿一张纸做出来一个会旋转的纸杯&#xff0c;碰巧有一群人喜欢它并且愿意为它付费&#xff0c;那么剩下要做的是什么&#xff1f;把这个纸杯量产并送到目标用户面前。…

Baklib团队拜访深证通,加强与合作企业沟通

2023年7月11日&#xff0c;Baklib商务经理、运营经理拜访了深圳证券通信有限公司&#xff08;以下简称为&#xff1a;深证通&#xff09;。 2023年7月11日&#xff0c;Baklib商务经理、运营经理拜访了深圳证券通信有限公司&#xff08;以下简称为&#xff1a;深证通&#xff09…