mysql删除或者创建表_MySQL使用基础-(数据库/表创建与删除)

MySQL是一种关系型数据库,说到关系,那么就离不开表与表之间的关系,而最能体现这种关系的其实就是我们接下来需要介绍的主角 SQL,SQL 的全称是 Structure Query Language,结构化的查询语言,它是一种针对表关联关系所设计的一门语言,也就是说,学好 MySQL,SQL 是基础和重中之重。SQL 不只是 MySQL 中特有的一门语言,大多数关系型数据库都支持这门语言。

查询语言分类

在了解 SQL 之前我们需要知道下面这几个概念数据定义语言:简称DDL (Data Definition Language),用来定义数据库对象:数据库、表、列等;

数据操作语言:简称DML (Data Manipulation

Language),用来对数据库中表的记录进行更新。关键字:insert、update、delete等

数据控制语言:简称DCL(Data Control Language),用来定义数据库访问权限和安全级别,创建用户等。关键字:grant等

数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录,关键字:select from where等

DDL语句

创建数据库

启动 MySQL 服务:mysql -uroot -p 就可以连接到数据库了

78dc4356703d87238b37fe01f8e7e0d2.png

在上面命令中,mysql 代表客户端命令,-u 表示后面需要连接的用户,-p 表示需要输入此用户的密码。在你输入用户名和密码后,如果成功登陆,会显示一个欢迎界面(如上图 )和mysql>提示符。

欢迎界面主要描述了这些东西:每一行的结束符,这里用;或者 \g来表示每一行的结束

「Your MySQL connection id is 4」,这个记录了 MySQL 服务到目前为止的连接数,每个新链接都会自动增加 1

,上面显示的连接次数是 4 ,说明我们只连接了四次

然后下面是 MySQL 的版本,我们使用的是 5.7

通过help或者\h命令来显示帮助内容,通过\c命令来清除命令行 buffer。

然后需要做的事情是什么?我们最终想要学习 SQL 语句,SQL 语句肯定是要查询数据,通过数据来体现出来表的关联关系,所以我们需要数据,那么数据存在哪里呢?数据存储的位置被称为表(table),表存储的位置被称为数据库(database),所以我们需要先建数据库后面再建表然后插入数据,再进行查询。

001bac3243d285c997a78ba285accf85.png

所以我们首先要做的就是创建数据库,创建数据库可以直接使用指令CREATE DATABASE dbname;

进行创建,比如我们创建数据库 cxuandbcreate database cxuandb;

注意最后的;结束语法一定不要丢掉,否则 MySQL 会认为你的命令没有输出完,敲 enter 后会直接换行输出

6012f883d2eed33cd60a541d6c828d7d.png

创建完成后,会提示「Query OK, 1 row affected」,这段语句什么意思呢?Query OK表示的就是查询完成,为什么会显示这个?因为所有的DDL和DML操作执行完成后都会提示这个, 也可以理解为操作成功。后面跟着的**1 row affected **表示的是影响的行数,() 内显示的是你执行这条命令所耗费的时间,也就是 0.03 秒。

上图我们成功创建了一个cxuandb的数据库,此时我们还想创建一个数据库,我们再执行相同的指令,结果提示

3f77510917eab5ae09c533975e93f93c.png

提示我们不能再创建数据库了,数据库已经存在。这时候我就有疑问了,我怎么知道都有哪些数据库呢?别我再想创建一个数据库又告诉我已经存在,这时候可以使用show databases命令来查看你的 MySQL 已有的数据库show databases;

执行完成后的结果如下

01bb4a89a23b0509a7a7f4ab98b29563.png

因为数据库我之前已经使用过,这里就需要解释一下,除了刚刚新创建成功的cxuandb外,informationn_schema、performannce_schema 和 sys 都是系统自带的数据库,是安装 MySQL 默认创建的数据库。它们各自表示informationn_schema:主要存储一些数据库对象信息,比如用户表信息、权限信息、分区信息等

performannce_schema:MySQL 5.5 之后新增加的数据库,主要用于收集数据库服务器性能参数。

sys: MySQL 5.7 提供的数据库,sys

数据库里面包含了一系列的存储过程、自定义函数以及视图来帮助我们快速的了解系统的元数据信息。

其他所有的数据库都是作者自己创建的,可以忽略他们。

在创建完数据库之后,可以用如下命令选择要操作的数据库use cxuandb

这样就成功切换为了 cxuandb 数据库,我们可以在此数据库下进行建表、查看基本信息等操作。

80b3e0b602843c5bfde4c63bbd55a2a1.png

比如想要看康康我们新建的数据库里面有没有其他表show tables;

果然,我们新建的数据库下面没有任何表,但是现在,我们还不进行建表操作,我们还是先来认识一下数据库层面的命令,也就是其他DDL指令。

删除数据库

如果一个数据库我们不想要了,那么该怎么办呢?直接删掉数据库不就好了吗?删表语句是drop database dbname;

比如cxuandb 我们不想要他了,可以通过使用drop database cxuandb;

进行删除,这里我们就不进行演示了,因为cxuandb我们后面还会使用。

但是这里注意一点,你删除数据库成功后会出现「0 rows affected」,这个可以不用理会,因为在 MySQL 中,drop语句操作的结果都是 「0 rows affected」。

创建表

下面我们就可以对表进行操作了,我们刚刚 show tables 发现还没有任何表,所以我们现在进行建表语句CREATE TABLE 表名称

(

列名称1 数据类型 约束,

列名称2 数据类型 约束,

列名称3 数据类型 约束,

....

)

这样就很清楚了吧,列名称就是列的名字,紧跟着列名后面就是数据类型,然后是约束,为什么要这么设计?举个例子你就清楚了:

比如我们创建一个表,里面有 5 个字段,姓名(name)、性别(sex)、年龄(age)、何时雇佣(hiredate)、薪资待遇(wage),建表语句如下create table job(name varchar(20), sex varchar(2), age int(2), hiredate date, wage decimal(10,2));

事实证明这条建表语句还是没问题的,建表完成后可以使用DESC tablename查看表的基本信息

96bd1c2d122d2a881c597007e934e9d3.png

DESC 命令会查看表的定义,但是输出的信息还不够全面,所以,如果想要查看更全的信息,还要通过查看表的创建语句的 SQL 来得到show create table job \G;

e3944470a1f60143f840238a7b64c97b.png

可以看到,除了看到表定义之外,还看到了表的 engine(存储引擎) 为 InnoDB 存储引擎,G 使得记录能够竖着排列,如果不用 G 的话,排版比较凌乱。

修改表

对于已经创建好的表,尤其是有大量数据的表,如果需要对表做结构上的改变,可以将表删除然后重新创建表,但是这种效率会产生一些额外的工作,数据会重新加载近来,如果此时有服务正在访问的话,也会影响服务读取表中数据,所以此时,我们需要表的修改语句来对已经创建好的表的定义进行修改。

修改表结构一般使用alter table语句,下面是常用的命令ALTER TABLE tb MODIFY [COLUMN] column_definition [FIRST | AFTER col_name];

比如我们想要将job表中的name由varchar(20)改为varchar(25),可以使用如下语句alter table job modify name varchar(25);

a4296cb7bc76d878249974c01c76e469.png

也可以对表结构进行修改,比如增加一个字段alter table job add home varchar(30);

0c22d95565940d2e1cba63548c388bfd.png

将新添加的表的字段进行删除alter table job drop column home;

39bc0b7a9c3b00466926b65cc870f578.png

可以对表中字段的名称进行修改,比如吧wage改为salaryalter table job change wage salary decimal(10,2);

bcdd75a3371f43afd7b44418e3f27ce3.png

修改字段的排列顺序,我们前面介绍过修改语法涉及到一个顺序问题,都有一个可选项first | after column_name,这个选项可以用来修改表中字段的位置,默认ADD是在添加为表中最后一个字段,而 「CHANGE/MODIFY」不会改变字段位置。比如alter table job add birthday after hiredate;

df983c0d8cab86c07a6b64d5dd5dd452.png

可以对表名进行修改,例如将job表改为workeralter table job rename worker;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值