mysql数据剪切到新表_6、MySQL核心DDL语句

命令类型

服务器端命令

获取命令帮助

数据库管理

查看数据库基础变量

SQL组成

创建

修改

删除

表管理

创建

示例一

示例二

示例三

一个常见的创建表结构的示例

表修改

改名

表结构修改

添加/删除字段

修改字段

键管理

索引

索引管理

视图

视图操作

命令类型

服务器端命令

DDL:数据定义语言,主要用于管理数据库组件,例如表、索引、视图、用户、存储过程

CREATE、ALTER、DROP

DML:数据操纵语言,主要用管理表中的数据,实现数据的增、删、改、查;

INSERT, DELETE, UPDATE, SELECT

获取命令帮助

mysql> help CREATE...

mysql>HELP CREATE DATABASE

数据库管理

查看数据库基础变量

数据库的存储引擎类型:SHOW ENGINES;

查看mysql支持的字符集:show character set;

查看指定表的存储引擎:show table status [where Name='tab_name'|like '%...%'];

查看支持的所有字符集:SHOW CHARACTER SET;

查看支持的所有排序规则:SHOW COLLATION;

查看索引:show indexes from tab_name;

SQL组成

DDL:数据库模式定义语言,关键字:create、alter、dorp

DML:数据操纵语言,关键字:Insert、delete、update、alter、dorp

DCL:数据库控制语言 ,关键字:grant、remove

DQL:数据库查询语言,关键字:select

创建

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name;

[DEFAULT] CHARACTER SET [=] charset_name

[DEFAULT] COLLATE [=] collation_name #定义排序规则

# 创建数据库

[(none)]>create database if not exists cce charset = utf8 collate=utf8_general_ci;

# 创建表

[(none)]>show create database cce;

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

| Database | Create Database |

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

| cce | CREATE DATABASE `cce` /*!40100 DEFAULT CHARACTER SET utf8 */ |

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

修改

ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name

# 默认字符集

[(none)]>alter database cce charset=latin1 collate=latin1_swedish_ci;

Query OK, 1 row affected (0.00 sec)

[(none)]>show create database cce;

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

| Database | Create Database |

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

| cce | CREATE DATABASE `cce` /*!40100 DEFAULT CHARACTER SET latin1 */ |

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

1 row in set (0.00 sec)

删除

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

# 删除库

[(none)]>drop database if exists cce;

Query OK, 0 rows affected (0.00 sec)

表管理

创建

语法一:create table [if not exists] tab_name (col_name data_type|index|key|foreign|unique|primary key) tab_option:engine[=]engine_name、charset[=]charset_name、collate[=]collation_name

语法二:create table [if not exists] tab_name (tab_definition,...)[tab_option] select_statement # 直接创建表,并将查询语句的结果得到的数据插入到新表中;

语法三:create table [if not exists] tab_name {like old_tab_name}# 复制某个存在的表的表结构来创建新表,只有结构没有数据;

示例一

[mysql]>create table if not exists cce(id int auto_increment,name char(32) not null,gender enum('M','G') not null,primary key(id)) engine=innodb default charset=utf8;

Query OK, 0 rows affected (0.41 sec)

[mysql]>desc cce;

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

| Field | Type | Null | Key | Default | Extra |

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

| id | int(11) | NO | PRI | NULL | auto_increment |

| name | char(32) | NO | | NULL | |

| gender | enum('M','G') | NO | | NULL | |

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

示例二

# 创建一个新表

[cce]>create table cce(id int);

Query OK, 0 rows affected (0.48 sec)

# 插入测试数据,可以看出都插入成功了

[cce]>insert into cce values(1),(2),(3);

Query OK, 3 rows affected (0.05 sec)

Records: 3 Duplicates: 0 Warnings: 0

# 基于上面的新表结构和数据再创建一个表

[cce]>create table new_cce select * from cce;

Query OK, 3 rows affected (0.73 sec)

Records: 3 Duplicates: 0 Warnings: 0

# 查看数据

[cce]>select * from new_cce;

+------+

| id |

+------+

| 1 |

| 2 |

| 3 |

+------+

3 rows in set (0.00 sec)

示例三

# 创建一个新的数据库

[(none)]>create database cce;

Query OK, 1 row affected (0.01 sec)

[(none)]>use cce;

Database changed

# 查看要基于创建的表结构

[cce]>desc mysql.cce;

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

| Field | Type | Null | Key | Default | Extra |

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

| id | int(11) | NO | PRI | NULL | auto_increment |

| name | char(32) | NO | | NULL | |

| gender | enum('M','G') | NO | | NULL | |

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

3 rows in set (0.00 sec)

# 根据已存在的表创建表

[cce]>create table cce like mysql.cce;

Query OK, 0 rows affected (0.61 sec)

# 查看创建后的表结构

[cce]>desc cce;

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

| Field | Type | Null | Key | Default | Extra |

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

| id | int(11) | NO | PRI | NULL | auto_increment |

| name | char(32) | NO | | NULL | |

| gender | enum('M','G') | NO | | NULL | |

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

3 rows in set (0.01 sec)

一个常见的创建表结构的示例

id使用smallint字段类型来限制并且是无符号不能为空自增主键,name使用char来限制,并且长度只给3测试下,age使用tinyint来给定,因为一般这个字段都用不到太大的值,gender使用枚举类型并且默认值为m不能为空,最后将name字段定义为索引实现加速查询;

[cce]>create table cce(id smallint unsigned not null auto_increment,name char(3) not null,age tinyint unsigned not null,gender enum('m','f') default 'm' not null,index(name),primary key(id)) engine=innodb default charset=utf8;

[cce]>insert into cce(name,age) values ('蔡大爷蔡大爷蔡大爷',18)

ERROR 1406 (22001): Data too long for column 'name' at row 1 # 提示插入的name字段的数据太长,插入失败

表修改

改名

MariaDB [cce]> alter table cce rename to wj;

或者:

MariaDB [cce]> rename table wj to cce;

表结构修改

表修改语法:ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name [alter_specification [, alter_specification] ...]

添加/删除字段

添加:ADD [COLUMN] col_name data_type [FIRST | AFTER col_name ] #标红的表示在什么之后

MariaDB [cce]> alter table students add class varchar(100) not null after sex;

删除:DROP [COLUMN] col_name

MariaDB [cce]> alter table students drop class;

修改字段

change:可以将老的字段名改成新的字段名,然后还可以将字段定义修改;

语法:CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

示例:MariaDB [cce]> alter table cce change new_cce Name varchar(100) not null;

modify:指引修改字段定义的规则;

语法:MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name] #

示例:MariaDB [cce]> alter table cce modify name varchar(100) not null;

# 字段相关

[cce]>desc cce;

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

| Field | Type | Null | Key | Default | Extra |

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

| id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |

| name | char(3) | NO | MUL | NULL | |

| age | tinyint(3) unsigned | NO | | NULL | |

| gender | enum('m','f') | NO | | m | |

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

4 rows in set (0.00 sec)

# 新增字段,在指定字段后面新增after,使用first无法在指定字段前面增加

[cce]>alter table cce add city char(32) not null after age;

Query OK, 0 rows affected (1.38 sec)

Records: 0 Duplicates: 0 Warnings: 0

# 查看新增之后的结构

[cce]>desc cce;

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

| Field | Type | Null | Key | Default | Extra |

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

| id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |

| name | char(3) | NO | MUL | NULL | |

| age | tinyint(3) unsigned | NO | | NULL | |

| city | char(32) | NO | | NULL | |

| gender | enum('m','f') | NO | | m | |

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

5 rows in set (0.00 sec)

键管理

示例:MariaDB [cce]> alter table students add primary key(name,id);

删除:

主键:DROP PRIMARY KEY

外键:DROP FOREIGN KEY fk_symbol

示例:MariaDB [cce]> alter table students drop primary key;

直接创建表,并将查询语句的结果插入到新创建的表中;

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

[(create_definition,...)]

[table_options]

[partition_options]

select_statement

示例:

查看表的信息:

MariaDB [cce]> show table status where Name='test'G

修改引擎:MariaDB [cce]> alter table cce engine='InnoDB';

复制某存在的表的结构来创建新的空表;

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

{ LIKE old_tbl_name | (LIKE old_tbl_name) }

示例:

de4ff43782677cf7d64b949093557536.png

索引

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。

索引管理

索引是特殊的数据结构;

索引:要有索引名称;

查看索引信息:mysql> SHOW INDEXES FROM tbl_name;

创建:CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [BTREE|HASH] ON tbl_name (col1, col2,,...)

示例:

MariaDB [cce]> create index index_name on students(class,sex);

MariaDB [cce]> show index from students;

删除:DROP INDEX index_name ON tbl_name

示例:MariaDB [cce]> drop index index_name on students;

新增:MariaDB [cce]> alter table cce add index(age);

总体创建示例:

MariaDB [cce]>create table if not exists cce (id smallint unsigned not null auto_increment primary key,name varchar(100)not null,age tinyint unsigned not null,gender enum('f','m') default 'm',index(name));

5ce621c08a79a11f4ae971683f017813.png

# 构建联合索引

[cce]>alter table cce add index(name,age);

Query OK, 0 rows affected (0.47 sec)

Records: 0 Duplicates: 0 Warnings: 0

# 删除联合索引

[cce]>alter table cce drop index name;

# 添加唯一索引

[cce]>alter table cce add unique key(age);

# 删除唯一索引

[cce]>show index from cceG

*************************** 2. row ***************************

Table: cce

Non_unique: 0

Key_name: age

Seq_in_index: 1

Column_name: age

Collation: A

Cardinality: 1

Sub_part: NULL

Packed: NULL

Null:

Index_type: BTREE

Comment:

Index_comment:

[cce]>alter table cce drop index age;

Query OK, 0 rows affected (0.32 sec)

Records: 0 Duplicates: 0 Warnings: 0

# 添加主键索引

[cce]>alter table cce add primary key(id);

Query OK, 0 rows affected (0.32 sec)

Records: 0 Duplicates: 0 Warnings: 0

# 删除主键索引使用modify

视图

视图:例如公司有一个员工信息表,它从存储了各个员工的性别年龄姓名工资等信息,假如说其他人想查找我们的公司员工的所有档案,但是我们不期望能看到工资这一段,我们该如何操作呢?我们可以在这个表中建立一个虚表这个表当中包含了除工资以外的其他信息,而且我们直接告诉他你去查这张虚表就行了。所以就无法看到我们的视图;

关系型数据库中的数据是由一张一张的二维关系表所组成,简单的单表查询只需要遍历一个表,而复杂的多表查询需要将多个表连接起来进行查询任务。对于复杂的查询事件,每次查询都需要编写MySQL代码效率低下。为了解决这个问题,数据库提供了视图(view)功能;

视图实际就是一串存储下来的select语句,删除视图不会影响原来的表,通畅都是用来展示使用的;

视图操作

虚表:存储下来的SELECT语句;

创建:CREATE VIEW view_name [(column_list)] AS select_statemen

修改:ALTER VIEW view_name [(column_list)] AS select_statement

删除:DROP VIEW [IF EXISTS] view_name [, view_name] ...

[cce]>show tables;

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

| Tables_in_cce |

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

| cce |

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

1 row in set (0.01 sec)

[cce]>select * from cce;

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

| id | name | ages | gender |

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

| 1 | cce | 30 | m |

| 2 | cfj | 10 | f |

| 3 | csw | 40 | m |

| 4 | dxf | 39 | f |

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

4 rows in set (0.00 sec)

[cce]>create view view_cce as select name,gender from cce where id > 2;

Query OK, 0 rows affected (0.09 sec)

[cce]>show tables;

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

| Tables_in_cce |

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

| cce |

| view_cce |

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

2 rows in set (0.00 sec)

[cce]>select * from view_cce;

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

| name | gender |

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

| csw | m |

| dxf | f |

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

2 rows in set (0.01 sec)


创建示例

修改示例

46be700d0a50bec12932f9143c915c70.png

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

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

相关文章

pycharm里面下载pip(不用去官网)

注意:pycharm版本较低的话右侧有个"",一样的效果

C++ stringstream输入方式

在题目中&#xff0c;我们有时候会遇到不知道要输入多少个元素&#xff0c;这个时候我们要怎么读取呢&#xff1f; 采用stringstream输入方式&#xff0c;头文件为< sstream > 代码如下&#xff1a; #include <iostream> #include <cstring> #include <…

基于.NET下的人工智能|利用ICSharpCore搭建基于.NET Core的机器学习和深度学习的本地开发环境...

每个人都习惯使用Python去完成机器学习和深度学习的工作&#xff0c;但是对于习惯于某种特定语言的人来说&#xff0c;转型不是那么容易的事。这两年我花了不少时间在Python&#xff0c;毕竟工作的重心也从移动开发转为机器学习和深度学习。感谢我的老板给我很大的空间去开拓新…

ValueError: check_hostname requires server_hostnamejie解决方案

原因: 1. 下载包带的插件等级高了 2. 网络代理没关 3.pip误删 解决方案: 对应上面原因: 1.终端(terminal)输入代码 pip install urllib31.25.112. 3.针对第三点 https://blog.csdn.net/weixin_53051556/article/details/118566675

万稞pw80线切割编程软件_模具设计编程培训哪些内容?

模具设计编程培训哪些内容&#xff1f;一&#xff0e;UG、PROE三维产品设计班1)产品设计流程&#xff1b;2)三维造型、各类产品结构设计3)产品表面处理工艺4)UG、PROE 3D造型、抄板、工程图、逆向工程、点云处理。5)100多套家电、医疗器械、汽车、手机、电动工具设计案例讲解二…

UVA - 548 Tree

输入一个二叉树的中序和后序遍历&#xff0c;请你输出一个叶子节点&#xff0c;该叶子节点到根的数值总和最小&#xff0c;且这个叶子是编号最小的那个。 输入&#xff1a; 您的程序将从输入文件中读取两行(直到文件结尾)。第一行是树的中序遍历值序列,第二行是树的后序遍历值序…

.NET Core开发实战(第14课:自定义配置数据源:低成本实现定制化配置方案)--学习笔记...

14 | 自定义配置数据源&#xff1a;低成本实现定制化配置方案这一节讲解如何定义自己的数据源&#xff0c;来扩展配置框架扩展步骤1、实现 IConfigurationSource2、实现 IConfigurationProvider3、实现 AddXXX 扩展方法&#xff0c;用来作为注入的快捷方式源码链接&#xff1a;…

uml类图例子_转:(中文命名)UML类图新手入门级介绍

下文转于 2019-05-10。2020-03-10 发觉本出自2007 年出版的《大话设计模式》一书&#xff08;作者: 程杰&#xff09;第一章。于是将文末原链接删去。转载注&#xff1a; 中文命名的优势在UML图这样专注业务逻辑且完全符号化语法&#xff08;与英语无关&#xff09;的工具中特别…

API是什么

定义: API 是用于构建应用程序软件的一组子程序定义&#xff0c;协议和工具。一般来说&#xff0c;这是一套明确定义的各种软件组件之间的通信方法。 接口interface: 各个组件发生交互的区域 协议protocol: 规定了各部分之间如何进行交流的一系列规则的集合 格式format: …

瓷砖铺放-dfs

题目描述 有一长度为N(1< &#xff2e;< 10)的地板&#xff0c;给定两种不同瓷砖&#xff1a;一种长度为1&#xff0c;另一种长度为2&#xff0c;数目不限。要将这个长度为N的地板铺满&#xff0c;一共有多少种不同的铺法&#xff1f; 例如&#xff0c;长度为4的地面一共…

2020年学python_Python学习路线图(2020年最新版)

PythonPython开发Python语言Python学习路线图(2020年最新版)这是我刚开始学习python时的一套学习路线&#xff0c;从入门到上手。(不敢说精通&#xff0c;哈哈~)希望对大家有帮助哈~一、Python入门、环境搭建、变量、数据类型二、Python运算符、条件结构、循环结构三、Python函…

开源、免费、企业级的SiteServer CMS .NET CORE 7.0 预览版发布

经过连续不断地开发与完善&#xff0c;SiteServer CMS .NET CORE 版本终于在今天与大家见面了&#xff0c;版本为7.0.0-preview1&#xff0c;我们将在未来几个月收集大家的反馈&#xff0c;修复与完善产品&#xff0c;最终发布能够稳定运行的7.0正式版。基于.NET CORE的跨平台性…

equals, hashCode, toString方法重写,深入探究equals

首先是超类Employee: package chapter5_inheritance.equals;import java.time.LocalDate; import java.util.Objects;public class Employee {private String name;private double salary;private LocalDate hireDay;public Employee(String name, double salary, int year, i…

UVA - 839 Not so Mobile

输入一个树状天平&#xff0c;根据力矩相等原则判断是否平衡。如图所示&#xff0c;所谓力矩相等&#xff0c;就是Wl DlWr Dr,其中Wl和Wr分别为左右两边砝码的重量&#xff0c;D为距离。 采用递归&#xff08;先序&#xff09;方式输入&#xff1a;每个天平的格式为Wl ,Dl,Wr,…

.NET Core 3.0 即将结束生命周期,建议迁移 3.1

.NET Core 官方发布博客&#xff0c;说明 .NET Core 3.0 即将结束生命周期&#xff0c;建议开发者迁移到 3.1 版本。.NET Core 3.0 于 2019 年 12 月 3 日发布&#xff0c;这是一个 Current 版本而不是 LTS 版本&#xff0c;将于今年 3 月 3 日 EOL&#xff08;End of Life&…

CoreJava 笔记总结-第三章 Java的基本程序设计结构

CoreJava 笔记总结 文章目录CoreJava 笔记总结第三章 Java的基本程序设计结构数据类型1. 整型2. 浮点类型3. char类型4. boolean类型变量与常量1. 变量2. 常量3. 枚举类型运算符关系和boolean运算符数学函数与常量强制类型转换字符串空串与null串码点与代码单元构建字符串输入与…

python高级编程知识点_(转)python 高级编程技巧学习笔记

转自https://www.jianshu.com/p/104cec085611&#xff0c;部分图出不来&#xff0c;mark一下&#xff0c;关键时候供查看。第二章 数据结构相关话题2.1、筛选数据两种方式filter函数&#xff1a;filter(lambda x: x>0, data)注意&#xff1a;python3 需要把filter的结果转为…

.NET Core开发实战(第15课:选项框架:服务组件集成配置的最佳实践)--学习笔记...

15 | 选项框架&#xff1a;服务组件集成配置的最佳实践这一节讲解如何使用选项框架来处理服务和配置的关系选项框架的特性&#xff1a;1、支持单例模式读取配置2、支持快照3、支持配置变更通知4、支持运行时动态修改选项值在设计系统的时候需要遵循两个原则&#xff1a;1、接口…

UVA - 572 Oil Deposits-dfs找连通块

Discription 给定一个包含 *的二维数组&#xff0c;输出有几个是联通的&#xff0c;如果一个在另外一个相邻的八个方向则视作相邻。 Input 包含 *的二维数组。 Output 输出联通的个数 解题思路&#xff1a; 从每一个格子出发&#xff0c;递归遍历它周围的格子&#xff0c;每次…

HTMLCSS 超简单的前端设计入门-1!

第一个网页 文章目录第一个网页注释元素(标签,标记)元素的嵌套标准的文档结构语义化什么是语义化为什么需要语义化?文本元素hpspanpreHTML 实体a元素href 属性target属性路径的写法站内内资源和站外资源绝对路径和相对路径Emmet 注释 注释不参与运行 书写方式(html) <!-…