MySQL创建和管理表

目录

1.标识符命名规则

2.MySQL中的数据类型 

3. 创建和管理数据库

3.0创建数据库(DATABASE)

3.1使用数据库

3.2修改数据库 

4.创建和管理表

4.0 创建表

4.1复制表 

4.2查看表 

4.3 修改表

5.删除表

6. 清空表

 阿里巴巴《Java开发手册》之MySQL字段命名

 数据备份重要性

 MySQL8新特性—DDL的原子化


1.标识符命名规则

数据库名、表名不得超过30个字符,变量名限制为29个

必须只能包含 A–Z, a–z, 0–9, _共63个字符

数据库名、表名、字段名等对象名中间不要包含空格

同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名 必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使 用`(着重号)引起来

保持字段名和类型的一致性:在命名字段并为其指定数据类型的时候一定要保证一致性,假如数据 类型在一个表里是整数,那在另一个表里可就别变成字符型了

2.MySQL中的数据类型 

 

3. 创建和管理数据库

3.0创建数据库(DATABASE)

方式1:创建数据库

            CREATE DATABASE 数据库名 ;

方式2:创建数据库并指定字符集

             CREATE DATABASE 数据库名 CHARACTER SET 字符集;

方式3:判断数据库是否已经存在,不存在则创建数据库( 推荐 )

             CREATE DATABASE IF NOT EXISTS 数据库名 CHARACTER SET 字符集;;

注意:DATABASE 不能改名。一些可视化工具可以改名,它是建新库,把所有表复制到新库,再删 旧库完成的。

3.1使用数据库

查看当前所有的数据库:SHOW DATABASES;

查看当前正在使用的数据库:SELECT DATABASE();

查看指定库下所有的表:SHOW TABLES FROM 数据库名;

查看数据库的创建信息:SHOW CREATE DATABASE 数据库名;

使用/切换数据库:USE 数据库名;

注意:要操作表格和数据之前必须先说明是对哪个数据库进行操作,否则就要对所有对象加上“数 据库名.”。

3.2修改数据库 

更改数据库字符集:ALTER DATABASE 数据库名 CHARACTER SET 字符集;

删除指定的数据库:DROP DATABASE IF EXISTS 数据库名;

4.创建和管理表

4.0 创建表

必须具备: CREATE TABLE权限 存储空间

语法格式:CREATE TABLE [IF NOT EXISTS] 表名(

                                                                                    字段1, 数据类型 [约束条件] [默认值],                                                                                        字段2, 数据类型 [约束条件] [默认值],                                                                                        字段3, 数据类型 [约束条件] [默认值],                                                                                           ……

                                                                                       [表约束条件]

                                                                                           );

创建时必须指定: 表名 列名(或字段名),数据类型,长度

可选指定: 约束条件 默认值

创建表举例1:

                     -- 创建表

                     CREATE TABLE emp ( 

                                                             emp_id INT,

                                                             emp_name VARCHAR(20), 

                                                             salary DOUBLE,

                                                              birthday DATE

                                                               );

4.1复制表 

使用 AS subquery 选项,将创建表和插入数据结合起来

创建表emp1并和employees表结构相同(数据也复制过去)

CREATE TABLE emp1

 AS

SELECT * FROM employees;

创建表emp2并和employees表结构相同(只复制表结构,不复制数据)

CREATE TABLE emp2

AS

SELECT * FROM employees

WHERE 1=2; -- 创建的emp2是空表,因为employees不存在1=2的条件

例如:创建表dept80并将employees表中的last_name, salary*12 ANNSAL, hire_date结构和数据复制过去

CREATE TABLE dept80

AS

SELECT last_name, salary*12 ANNSAL, hire_date

FROM employees

4.2查看表 

SHOW CREATE TABLE

4.3 修改表

修改表指的是修改数据库中已经存在的数据表的结构。

使用 ALTER TABLE 语句可以实现:

                         向已有的表中添加列

                          修改现有表中的列

                          删除现有表中的列

                           重命名现有表中的列

1 追加一个列:ALTER TABLE 表名 ADD 【COLUMN】 字段名 字段类型 【FIRST|AFTER 字段名】;

举例:ALTER TABLE dept80  ADD job_id varchar(15);

 2 修改一个列:可以修改列的数据类型,长度、默认值和位置

        ALTER TABLE 表名

        MODIFY 【COLUMN】 字段名1 字段类型 【DEFAULT 默认值】【FIRST|AFTER 字段名 2】;

举例:修改类型长度

          ALTER TABLE dept80

          MODIFY last_name VARCHAR(30);

3 重命名一个列:ALTER TABLE 表名 CHANGE 【column】 列名 新列名 新数据类型;  

举例:

         ALTER TABLE dept80

         CHANGE department_name dept_name varchar(15);

4 删除一个列:ALTER TABLE 表名 DROP 【COLUMN】字段名

 5.修改表名:使用RENAME

RENAME TABLE 表名  TO 新表名;

5.删除表

在MySQL中,当一张数据表 没有与其他任何数据表形成关联关系 时,可以将当前数据表直接删除。 数据和结构都被删除 所有正在运行的相关事务被提交 所有相关索引被删除。

DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n];

举例:

DROP TABLE dept80;

DROP TABLE 语句不能回滚

6. 清空表

删除表中所有的数据 释放表的存储空间

TRUNCATE TABLE 表名;

TRUNCATE语句不能回滚,而使用 DELETE 语句删除数据,可以回滚

 

 可回滚举例

 不可回滚举例

 最后查不到表 

 阿里巴巴《Java开发手册》之MySQL字段命名

 数据备份重要性

 MySQL8新特性—DDL的原子化

在MySQL 8.0版本中,InnoDB表的DDL支持事务完整性,即 DDL操作要么成功要么回滚 。DDL操作回滚日志 写入到data dictionary数据字典表mysql.innodb_ddl_log(该表是隐藏的表,通过show tables无法看到) 中,用于回滚操作。通过设置参数,可将DDL操作日志打印输出到MySQL错误日志中。

当存在book1,不存在book2时,下面语句不在只删除book1后提示 ERROR 1051 (42S02): Unknown table 'mytest.book2'而是 book1和book2都无法删除。

mysql> DROP TABLE book1,book2;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值