加入收藏 | 设为首页 | 会员中心 | 我要投稿 武汉站长网 (https://www.027zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL笔记-05 数据表操作

发布时间:2022-12-12 14:35:12 所属栏目:MySql教程 来源:转载
导读: 本章主要介绍数据表的相关操作
在对MySQL数据表进行操作之前,必须首先使用USE语句选择数据库,才可在指定的数据库中对数据表进行操作,如创建数据表、修改表结构、数据表更名或删除数据表

本章主要介绍数据表的相关操作

在对MySQL数据表进行操作之前,必须首先使用USE语句选择数据库,才可在指定的数据库中对数据表进行操作,如创建数据表、修改表结构、数据表更名或删除数据表等;否则是无法对数据表进行操作的。

1 SQL

SQL是Structure Query Lanuage(结构化查询语言)的缩写,是使用关系型数据库的应用语言。SQL语句又主要划分为以下3类:

2 创建数据表

创建数据表使用CREATE TABLE语句。语法如下:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据表名
[(create_definition,…)][table_options] [select_statement]

关键字说明

TEMPORARY

如果使用该关键字,表示创建一个临时表

IF NOTEXISTS

该关键字用于避免表存在时MySQL报告的错误

create_definition

这是表的列属性部分。MySQL要求在创建表时,表要至少包含一列

table_option

表的一些特性参数,其中大多数选项涉及的是表数据如何存储及存储在何处,如ENGINE选项用于定义表的存储引擎。多数情况下,用户不必指定表选项

select_statement

SELECT语句描述部分,用它可以快速创建表

2.1 create_definition

格式:

col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY ] [reference_definition]

参数说明

col_name

字段名

type

字段类型

NOT NULL

NULL

DEFAULT default_value

表示默认值

AUTO_INCREMENT

表示是否自动编号,每个表只能有一个AUTO_INCREMENT列,并且必须被索引

PRIMARY KEY

表示是否为主键。一个表只能有一个PRIMARY KEY。如表中没有一个PRIMARY KEY,而某些应用程序需要PRIMARY KEY,MySQL将返回第一个没有任何NULL列的UNIQUE键,作为PRIMARY KEY

reference_definition

为字段添加注释

2.2 示例

mysql> use db_admin;
Database changed
mysql> CREATE TABLE tb_admin(
-> id int auto_increment primary key,
-> user varchar(30) not null,
-> password varchar(30) not null,
-> createtime datetime);
Query OK, 0 rows affected (0.03 sec)

mysql>

3 查看表结构

删除mysql表中的数据_MySQL 删除数据表_mysql删除一条最后数据

对于一个创建成功的数据表,可以使用SHOW COLUMNS语句或DESCRIBE语句查看指定数据表的表结构。

3.1 使用SHOW COLUMNS语句查看

在MySQL中,使用SHOW COLUMNS语句可以查看表结构,SHOW COLUMNS语句的基本语法格式如下。

SHOW [FULL] COLUMNS FROM 数据表名 [FROM 数据库名];

SHOW [FULL] COLUMNS FROM 数据表名.数据库名;

示例:

mysql> SHOW COLUMNS FROM tb_admin FROM db_admin;
+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user | varchar(30) | NO | | NULL | |
| password | varchar(30) | NO | | NULL | |
| createtime | datetime | YES | | NULL | |
+------------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

mysql>

3.2 使用DESCRIBE语句查看

在MySQL中,还可以使用DESCRIBE语句查看数据表结构。DESCRIBE语句的基本语法格式如下:

DESCRIBE 数据表名;

其中,DESCRIBE可以简写成DESC。在查看表结构时,也可以只列出某一列的信息。其语法格式如下:

DESCRIBE 数据表名列名;

示例:

mysql> desc tb_admin;
+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user | varchar(30) | NO | | NULL | |
| password | varchar(30) | NO | | NULL | |
| createtime | datetime | YES | | NULL | |
+------------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

mysql>

3.3 使用SHOW CREATE TABLE查看

为了查看更全面的表定义信息,可以通过SHOW CREATE TABLE查看。其中\G表示使得记录能够按照字段竖着排列,对于内容比较长的记录更易于显示。

mysql> show create table tb_admin \G;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 6
Current database: db_admin

*************************** 1. row ***************************
Table: tb_admin
Create Table: CREATE TABLE `tb_admin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(30) NOT NULL,
`password` varchar(30) NOT NULL,
`createtime` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.02 sec)

ERROR:
No query specified

mysql>

4 修改表结构

修改表结构使用ALTER TABLE语句。修改表结构指增加或者删除字段、修改字段名称或者字段类型、设置取消主键外键、设置取消索引以及修改表的注释等,语法如下:

ALTER [IGNORE] TABLE 数据表名 alter_spec[,alter_spec]…| table_options

参数说明

IGNORE

可选项,表示如果出现重复关键的行,则只执行一行,其他重复的行被删除

数据表名

用于指定要修改的数据表的名称

alter_spec子句

用于定义要修改的内容,其语法格式单独说明

ALTER TABLE语句允许指定多个动作,其动作间使用逗号分隔,每个动作表示对表的一个修改。

4.1 alter_spec子句

其语法格式如下:

ADD [COLUMN] create_definition [FIRST | AFTER column_name ] //添加新字段
| ADD INDEX [index_name] (index_col_name,……) //添加索引名称
| ADD PRIMARY KEY (index_col_name,……) //添加主键名称
| ADD UNIQUE [index_name] (index_col_name,……) //添加唯一索引
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} //修改字段默认值
| CHANGE [COLUMN] old_col_name create_definition //修改字段名/类型
| MODIFY [COLUMN] create_definition //修改子句定义字段
| DROP [COLUMN] col_name //删除字段名称
| DROP PRIMARY KEY //删除主键名称
| DROP INDEX index_name //删除索引名称
| RENAME [AS] new_tbl_name //更改表名

参数说明

create_definition

用于定义列的数据类型和属性,与CREATE TABLE语句中的语法相同

`FIRST

AFTER column_name`

index_name

删除mysql表中的数据_MySQL 删除数据表_mysql删除一条最后数据

可选项,用于指定索引名

ndex_col_name

用于指定索引列名

`SET DEFAULT literal

DROP DEFAULT`

old_col_name

用于指定要修改的字段名

new_tbl_name

用于指定新的表名

table_options

用于指定表的一些特性参数,其中大多数选项涉及的是表数据如何存储及存储在何处,如ENGINE选项用于定义表的存储引擎。多数情况下,用户不必指定表选项。

4.2 添加新字段及修改字段定义

在MySQL的ALTER TABLE语句中MySQL 删除数据表,可以通过:

示例:

在表tb_admin新增字段age,类型为int(3),并且顺序在password之后。

mysql> alter table tb_admin add column age int(3) after password;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc tb_admin
-> ;
+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user | varchar(30) | NO | | NULL | |
| password | varchar(30) | NO | | NULL | |
| age | int(3) | YES | | NULL | |
| createtime | datetime | YES | | NULL | |
+------------+-------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

mysql>

4.3 修改字段名

在MySQL的ALTER TABLE语句中,使用CHANGE [COLUMN] old_col_name create_definition子句可以修改字段名或者字段类型。

4.4 删除字段

在MySQL的ALTER TABLE中,使用DROP [COLUMN] col_name子句可以删除指定字段。下面将通过一个具体实例演示如何删除字段。

4.5 修改表名

在MySQL的ALTER TABLE中,使用RENAME [AS] new_tbl_name子句可以修改表名。下面将通过一个具体实例演示如何修改表名。

4.6 重命名表

在MySQL中,重命名数据表可以使用RENAME TABLE语句来实现。RENAME TABLE语句的基本语法格式如下:

RENAME TABLE 数据表名1 To 数据表名2

4.7 复制表

创建表的CREATE TABLE命令还有另外一种语法结构,在一张已经存在的数据表的基础上创建一份该表的备份,也就是复制表。这种用法的语法格式如下。

CREATE TABLE [IF NOT EXISTS] 数据表名
{LIKE 源数据表名 | (LIKE 源数据表名)}

参数说明如下:

使用该语法复制数据表时,将创建一个与源数据表相同结构的新表,该数据表的列名、数据类型空指定和索引都将被复制,但是表的内容是不会复制的。因此,新创建的表是一张空表。如果想要复制表中的内容,可以通过使用AS(查询表达式)子句来实现。

5 删除表

删除数据表的操作很简单,同删除数据库的操作类似,使用DROP TABLE语句即可实现。DROP TABLE语句的基本语法格式如下。

DROP TABLE [IF EXISTS] 数据表名;

参数说明如下:

6 帮助的使用

如果在开发过程中,遇到MySQL的问题,可以使用命令?速查MySQL帮助文档。

mysql> ? contents;
You asked for help about help category: "Contents"
For more information, type 'help ', where is one of the following
categories:
Account Management
Administration
Compound Statements
Contents
Data Definition
Data Manipulation
Data Types
Functions
Geographic Features
Help Metadata
Language Structure
Plugins
Procedures
Storage Engines
Table Maintenance
Transactions
User-Defined Functions
Utility
mysql>

mysql> ? Data Types;
You asked for help about help category: "Data Types"
For more information, type 'help ', where is one of the following
topics:
AUTO_INCREMENT
BIGINT
BINARY
BIT
BLOB
BLOB DATA TYPE
BOOLEAN
CHAR
CHAR BYTE
DATE
DATETIME
DEC
DECIMAL
DOUBLE
DOUBLE PRECISION
ENUM
FLOAT
INT
INTEGER
LONGBLOB
LONGTEXT
MEDIUMBLOB
MEDIUMINT
MEDIUMTEXT
SET DATA TYPE
SMALLINT
TEXT
TIME
TIMESTAMP
TINYBLOB
TINYINT
TINYTEXT
VARBINARY
VARCHAR
YEAR DATA TYPE

mysql>

mysql> ? INT
Name: 'INT'
Description:
INT[(M)] [UNSIGNED] [ZEROFILL]

A normal-size integer. The signed range is -2147483648 to 2147483647.
The unsigned range is 0 to 4294967295.

URL: https://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html

mysql>

(编辑:武汉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!