1.创建表

创建表的作用在于指定表字段的类型+属性(约束)

创建表使用CREATE TABLE关键字进行操作

语法结构

CREATE TABLE 表名(

字段名   数据类型   属性/约束,

...

字段名   数据类型   属性/约束,

[PRIMARY KEY(字段名)]

);

注意

1.表名和字段名需唯一

2.属性/约束中,默认允许设置NULL

理解NULL

NULL不等于空串,空串是有效值

不要把NULL值与空串相混淆。NULL值是没有值,它不是空串。如果指定''(两个单引号,其间没有字符),这在NOT NULL列中是允许的。空串是一个有效的值,它不是无值。NULL值用关键字NULL而不是空串指定

3.属性/约束中,默认值DEFAULT设置必须是常数,不允许使用函数作为默认值

4.属性/约束AUTO_INCREMENT

每个表只允许一个AUTO_INCREMENT列

CREATE TABLE customers

(

cust_id int  NOT NULL   AUTO_INCREMENT,

cust_name  char(50)  NOT NULL,

cust_address  char(50)  NULL,

cust_city  char(50)  NULL,

.....

PRIMARY KEY(cust_id)

);

AUTO_INCREMENT告诉Mysql,本列每当增加一行记录时进行自动增量。每次执行一个INSERT操作,Mysql自动对该列增量,给该列赋予下一个可用的值。这样给每个行分配一个唯一的cust_id,从而可以用作主键值


例:在test数据库中创建pet表

CREATE TABLE pet
( id int NOT NULL  AUTO_INCREMENT,name VARCHAR(225) NOT NULL,owner VARCHAR(225) DEFAULT 'Odin',species VARCHAR(225),sex CHAR(1),birth DATE,death DATE,PRIMARY KEY(id)
);

结果展示:

在创建新表时,指定的表名必须不存在,否则将出错。如果要防止意外覆盖已有的表,SQL要求首先手动删除该表,然后再重建它,而不是简单地用创建表语句覆盖它。如果仅想在一个表不存在时创建它,应该在表名后给出IF NOT EXISTS,它不检查已有表的模式是否与你打算创建的表模式相匹配。它只是查看表名是否存在,并且仅在表名不存在时创建它

扩展练习案例

问题:创建一个actor表,包含如下列信息

列表 类型 是否为NULL 含义
actor_id smallint(5) NOT NULL 主键id
first_name varchar(45) NOT NULL 名字
last_name varchar(45) NOT NULL 姓氏
last_update date NOT NULL 日期
DROP TABLE IF EXISTS actor;
CREATE TABLE actor(actor_id smallint(5) NOT NULL COMMENT'主键id',first_name varchar(45) NOT NULL COMMENT'名字',last_name varchar(45) NOT NULL COMMENT'姓氏',last_update date NOT NULL COMMENT'日期',PRIMARY KEY(actor_id)
);

2.删除表

删除表使用DROP TABLE关键字进行操作,删除的是整个表而不是其内容

语法结构

DROP TABLE 表名;

例:删除test数据库中的pet表

DROP TABLE pet;

结果展示:

删除表没有确认,也不能撤销,执行这条DROP TABLE语句将永久删除指定数据表,因此删除数据表的操作应该谨慎使用,一旦删除了数据表,那么表中的数据将会全部清除,没有备份则无法恢复

在删除数据表的过程中,如果删除一个不存在的表将会产生错误,这时我们可以在删除语句中加入if exists关键字就可避免出错,格式如下所示

DROP TABLE IF EXISTS 数据表名;

3.查看表

1.查看表的创建语句

语法结构

SHOW CREATE TABLE 表名;

例:查看pet表的创建语句

SHOW CREATE TABLE pet;

结果展示:

2.查看当前数据库中所有表

SHOW TABLES;

结果展示:

3.查看表结构

语法结构

DESC 表名;

例:查看pet表结构

DESC pet;

结果展示:

在查看表结构时,也可以只列出某一列的信息,语法格式如下

DESC 数据表名 列名;

例:查看pet数据表中的birth列信息

可以使用show columns命令查看指定数据表的表结构,格式如下所示

SHOW COLUMNS FROM 数据库名.数据表名;

例:查看数据表pet的表结构

4.复制表

语法结构

CREATE TABLE 表名

AS

目标二维表;

注意

1.表名要唯一

2.目标二维表

(1)任何形式的SELECT语句

(2)表结构由SELECT字段决定

(3)表记录由WHERE条件决定


案例1:复制pet表至表pet1

案例2:复制pet表的id/name/owner列至表pet3,使pet3表中的id列值添加前缀'T',其余列与pet表一模一样

补充练习案例:创建一个actor_name表

数据导入

drop table if exists actor;
CREATE TABLE  actor  (actor_id  smallint(5)  NOT NULL PRIMARY KEY,first_name  varchar(45) NOT NULL,last_name  varchar(45) NOT NULL,last_update  datetime NOT NULL);
insert into actor values ('1', 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33'), ('2', 'NICK', 'WAHLBERG', '2006-02-15 12:34:33');

actor表

问题:创建一个actor_name表,并且将actor表中的所有first_name以及last_name导入该表

CREATE TABLE actor_name
AS
SELECT first_name, last_name FROM actor;

结果展示:acotr_name表

5.重命名表

重命名表使用RENAME TABLE关键字进行操作

语法结构

RENAME TABLE 表名1 TO 新表名1,表名2 TO 新表名2...;

可批量,从左往右依次执行;可连续执行


test数据库中总共有三张数据表:pet表、pet2表、pet3表

使用RENAME TABLE语句可以重命名一个表

案例1:将pet表重命名为new_pet1表

RENAME TABLE pet TO new_pet1;

结果展示:

使用RENAME TABLE语句对多个表重命名 

案例2:将pet2表和pet3表分别重命名为new_pet2表和new_pet3表

6.更新表

更新表使用ALTER TABLE关键字进行操作,在ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错)


1.修改表名

语法结构

ALTER TABLE 原表名 RENAME TO 新表名;

例子:将new_pet1表更名为pet1表

2.添加字段

必须明确其数据类型

语法结构

ALTER TABLE 表名 ADD 列名 类型;

例子:在pet1数据表中增加新字段'country',取默认值'China'

ALTER TABLE pet1 ADD country varchar(20) DEFAULT'China';

结果展示:

扩展练习案例:在last_update后面新增加一列名字为create_date 

数据导入

drop table if exists actor;
CREATE TABLE  actor  (actor_id  smallint(5)  NOT NULL PRIMARY KEY,first_name  varchar(45) NOT NULL,last_name  varchar(45) NOT NULL,last_update  datetime NOT NULL);

actor表

问题:在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为'2020-10-01 00:00:00'

ALTER TABLE actor
ADD(create_date datetime NOT NULL DEFAULT '2020-10-01 00:00:00');

结果展示:

3.修改字段:不重命名版 

语法结构

ALTER TABLE 表名 MODIFY 列名 类型及约束;

例子:将pet1表中的country字段的默认值'China'修改为'New Zealand'

ALTER TABLE pet1 MODIFY country varchar(20) DEFAULT'New Zealand';

结果展示:

4.修改字段:重命名版

语法结构

ALTER TABLE 表名 CHANGE 原名 新名 类型及约束;

例子:将pet1表中的name/country列分别更名为'pet_name'和'pet_country',并将原先country列的数据类型'varchar(20)'更改为'varchar(225)'

ALTER TABLE pet1 CHANGE name pet_name varchar(225) NOT NULL, CHANGE country pet_country varchar(225) DEFAULT 'New Zealand';

结果展示:

5.删除字段 

语法结构

ALTER TABLE 表名 DROP 列名;

例子:删除pet1表中的owner列与pet_country列

ALTER TABLE pet1 DROP owner, DROP pet_country;

结果展示:


小心使用ALTER TABLE

使用ALTER TABLE要极为小心,应该在进行改动前做一个完整的备份(模式和数据的备份),数据库表的更改不能撤销,如果增加了不需要的列,可能不能删除它们。类似地,如果删除了不应该删除的列,可能会丢失该列中的所有数据

[Mysql] 创建和操纵数据表相关推荐

  1. MySQL——创建数据库和数据表

    创建数据库和数据表 (1)创建数据库相关代码 create database test; #创建数据库 show create database test; #查看创建好的test数据库 show d ...

  2. mysql 收藏表如何建立_代码收藏系列--mysql创建数据库、数据表、函数、存储过程命令...

    创建mysql数据库 CREATE DATABASE IF NOT EXISTS `database_name` DEFAULT CHARSET utf8 COLLATE utf8_general_c ...

  3. MySQL创建数据库和数据表

    文章目录 前言 一.MySQL数据库是什么? 二.使用步骤 1.显示当前数据库 2.创建数据库 3.使用数据库 4.删除数据库 5.表的操作 5.1 显示数据库中的表 5.2 创建表 5.3 删除表 ...

  4. MySQL创建、更改数据表(CREATE TABLE语句)

    < MySQL数据表的基本操作MySQL修改数据表 > 在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列 ...

  5. 在MySQL中如何用SQL命令创建数据库及数据表

    HRELLO 大家好! 上期给大家讲解了,MySQL数据库常用的管理命令.现在,给大家讲解,如何用SQL命令在MySQL中创建一个数据库及数据表. 在学习前,我们首先要了解,SQL命令是什么? SQL ...

  6. java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码

    jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...

  7. 4/5 MySQL入门总结:数据表(TABLE)操作

    数据表操作 数据表(或称表)是数据库最重要的组成部分之一,是其它对象的基础. 行:记录 列:字段 说明 操作 打开数据库 mysql> USE db_name; 查看数据表列表 mysql> ...

  8. MySQL中快速复制数据表方法汇总

    本文将着重介绍两个MySQL命令的组合,它将以原有数据表为基础,创建相同结构和数据的新数据表. 这可以帮助你在开发过程中快速的复制表格作为测试数据,而不必冒险直接操作正在运行 的数据表. 示例如下: ...

  9. 使用SQL语句创建并管理数据表

    数据库创建以后,我们需要创建数据表存储数据,表是一种重要的数据库对象.简单的叙述一下表的概念. 表的概念: 数据表是数据库中一个重要的对象,也是其他对象的基础.一个数据库中可以包含多张表,表是数据的集 ...

最新文章

  1. SoapUI进行REST请求,POST方法提交到数据库的数据乱码问题
  2. 找出两个字符串中最大子字符串,如abractyeyt,dgdsaeactyey的最大子串为actyet
  3. CBNet:物体检测的一种新的组合主干网络结构
  4. python获取数据库查询的元数据_Python数据库、MySQL存储引擎、使用分区表、更改表结构、获取数据库元数据...
  5. Hello,Word宏!
  6. 怎样玩儿转App手游自动化测试?
  7. 《构建之法》8.9.10
  8. SQL Server--实体再复习
  9. 【渝粤教育】 国家开放大学2020年春季 2064管理学基础 参考试题
  10. Linux安装nginx运行错误,Linux Nginx安装以及可能出现错误
  11. 模拟电子技术基础:基本放大电路
  12. 概率导论-马尔可夫相关
  13. Racket编程指南——17 创造语言
  14. android批量转换图片格式,批量图片格式转换器
  15. 大小写字母格式(26个大小写字母格式表)
  16. 2010-7-31 看电影
  17. 如何创建Roadmap产品路线图
  18. 中国EMBA教育培训行业发展规划与投资规模预测报告2021年版
  19. 特征工程之特征分箱(决策树分箱、卡方分箱、bestks以及评价标准WOE和IV)
  20. 腾讯云申请免费SSL证书

热门文章

  1. ROS(七):移动机器人的导航和SLAM(一)
  2. 电磁场常见名词整理(不断更新中)
  3. 程序员坐牢会被安排写代码吗?
  4. 程序员苹果电脑使用入门
  5. 【译文】四十二种谬误(一)
  6. 基于Java基础的图书管理系统
  7. php中 dsn什么意思,网络dsn是什么意思(图文)
  8. Netty应用:快速了解http各版本的特性 HttpServer的小demo
  9. python获取cookie文件_Python Cookie 读取和保存方法
  10. No qualifying bean of type ‘com.bruceliu.mapper.UserMapper‘