日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2023/12/4 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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) }

示例:

索引

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));

# 構建聯合索引

[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)


創建示例

修改示例

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mysql数据剪切到新表_6、MySQL核心DDL语句的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。