网站建设知识
MySql(2)------SQL基础之DDL(DataDefinitionLanguage)
2025-07-22 10:00  点击:0

一,SQL简介

SQL是结构化查询语言(Structure Query Language),实现关系数据库中的信息检索。

主要分为3个类别:

(1)DDL(Data Definition Language)语句:

数据定义语言,该语句定义了不同的数据库,表,列等数据库对象。常用关键字create,drop,alter等等。

(2)DML(Data Manipulation Language)语句:

数据操作语句,用于处理增删改查数据库记录,常用关键字insert,delete,update,select等等。

(3)DCL(Data Control Language)语句:

数据控制语句,用于控制不同数据库中的访问级别,相关权限。常用关键字grant,revoke等等,后续将单独分析mysql权限管理。

二,DDL语句

DDL是数据定义语句的英文简写,主要用于对数据库内部对象进行创建,删除,修改等等。

2.1 创建数据库

数据都存在数据库中,创建数据库是必然的。创建数据库语法如下:

CREATE DATAbase dbname;

例如:

执行完命令后可以看到一句话,如下:

Query OK, 1 row affected (0.05 sec)

这句话的含义分别为:

Query OK 代表命令执行成功,MySql中执行命令成功都显示Query OK,不管是不是查询命令,理解成执行成功就行。

1 row affected 代表影响数据库中的一行记录,顾名思义。

0.05 sec 代表执行该命令所用的时间。

既然库都创建完了,我们想知道我们创建了哪些库,通过SHOW DATAbaseS命令进行查看:

通过这个命令可以看到刚才创建的test1数据库,除此之外,还看到了其他4个库,安装配置不同,或许会不太一样,

但是,information_shcema,mysql这两个是一样的,代表含义如下:

information_chema:主要是系统中的一些数据库对像信息,比如用户表信息,列信息,分区信息,权限信息等等。

mysql:存储系统的用户权限信息。

通过USE dbname命令选择要操作的数据库:

使用test1库时,通过show tables命令查看库中表,显示为空,是因为我们刚建的库没有建表。

使用系统的mysql库时,可以看到有很多的表。

2.2 删除数据库

删除数据库语法:

DROP DATAbase dbname;

例如:

通过数据库删除命令删除后,查看系统中的数据库时,发现test1库已经被删除。

细心点就会发现,删除后面跟的提示信息:Query Ok,0 rows affected(0.00 sec)中

0 rows affected为什么影响的是0行,都删除成功了,还是0行,这个不同奇怪,

mysql的drop操作都提示0 rows affected,不用管它,删除成功,达到目的。

温馨提示:有用库,删除数据库前记得备份,库删完,对应库中的表也没了,每次记得检查。

2.3 创建表

创建表的语法:

CREATE TABLE tablename(

column_name_1 column_type_1_constraints,

column_name_2 column_type_2_constraints,

column_name_3 column_type_3_constraints,

......

column_name_n column_type_n_constraints,

);

其中column_name列名,column_type列类型,constraints对应列的约束。

create table进行表的简单创建,show tables从库里看有哪些表,desc t_user_main查看表的结构。

用desc只能看到表的结构,信息不够全面,我们想看创建定义语句等等更多信息,得通过如下命令:

show create table t_user_main \G;

从上面可以看到表字段,类型,限制,以及engine(引擎)是InnoDB,字符集utf8;

2.4 删除表

删除表语法:

DROP TABLE tablename;

2.5 修改表

(1)修改表类型

语法结构:

ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER column_name];

例如,把t_user_main的f_userName字段长度从50改到100:

(2)添加表字段

添加语法:

ALTER TABLE tablename ADD [COLUMN] column_difinition [RIRST | AFTER column_name];

例如,给t_user_main增加一个手机号字段:

(3)删除表字段

删除语法:

ALTER TABLE tablename DROP [COLUMN] column_name;

例如,从t_user_main表中删除f_mobile字段,可以省掉column关键字

(4)修改表字段名字

语法:

ALTER TABLE tablename CHANGE [COLUMN] old_column_name column_definition [FIRST | AFTER column_name];

把t_user_main表的f_userName修改成f_userName2,如下:

(5)修改表名

语法:

ALTER TABLE tablename RENAME [TO] new_tablename;

例如,将t_user_main表名修改为t_user_main2

修改成t_user_main2后再通过t_user_main查看表结构,报表不存在错误。

用t_user_main2查看表结构正常,说明修改成功。

(6)修改字段排序

在字段增加,修改语法后面跟了个可选项first | after,这个的作用是用于指定位置的。

比如,在t_user_main中默认添加字段都在最后一个之后,可是我不想按默认顺序放置字段,

我想把f_sex性别字段放在f_userName之后,而不是添加到默认f_age之后。

再例如,把性别移到年龄的下面:

总结:

1. modify和change都起到修改的作用,二者异同如下:

modify不能修改列名,只写一次列名

change能修改列名,需写两次列名,不方便,修改列名是其优点。

2.语法后跟的first或after表示在表的第一个字段位置或某个字段之后做操作,

对于表中字段排序灵活使用。

3.这些命令都是很有用的,平时开发,管理,都用图形界面工具,但是上线后可能对表等做调整,

这个时候,命令就脚本就能显示出其威力。