编辑推荐:

本文来自于cnblogs,本文主要通过一些例子来介绍MySQL常用DDL语句的使用方法,希望对您能有所帮助。

1 (My)SQL入门

这里用了(My)SQL这样的标题,目的是介绍标准SQL的同时,也将MySQL在标准SQL上的扩展一同介绍给读者。

2:SQL分类

SQL语句主要可以划分为以下3个类别

.DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字主要包括create、drop、alter等。

.DML(Data Manipulation Languages)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。

.DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,主要的语句关键字包括grant、revoke等。

3:DDL语句

DDL是数据定于语言的缩写,简单来说,就是对数据库内部的对象进行创建、删除、修改等操作的语言。它和DML语言的最大区别是DML只是对表内部数据操作,而不涉及表的定义,结构的修改,更不会涉及其他对象。DDL语句更多的由数据库管理员(DBA)使用,开发人员一般很少使用。

下面通过一些例子来介绍MySQL常用DDL语句的使用方法。

1:创建数据库

启动MySQL服务之后,输入以下命令连接到MySQL服务器:

mysql -uroot -p

会出现下面的界面:

在以上命令行中,mysql代表客户端命令,“-u”后面跟连接的数据库用户,“-p”表示需要输入的密码。

如果数据库设置正常,并输入了正确的密码,将看到上面一段欢迎界面和一个“mysql>”提示符。在欢迎界面中说明了一下几部分的内容。

.命令的结束符,用“;”或者“\g”结束。

.客户端的连接ID,这个数字记录了MySQL服务到目前为止的连接次数;每个新连接都会自动加1.

.MySQL服务器的版本,本例中是5.5.25。

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

因为所有的数据库都存储在数据库中,因此需要学习的第一个命令是创建数据库。

创建数据库的语法如下:

CREATE DATABASE dbname;

例如,创建数据库test1,命令执行如下:

可以发现,执行完创建命令之后,下面有一行提示“Query OK,1 row affected (0.00

sec)”,这段提示可以分为3个部分,“Query OK”表述上面的命令执行成功。读者可能奇怪,又不是执行查询操作,为什么显示查询成功》其实这是MySQL的一个特点,所有的DDL和DML(不包括SELECT)操作执行成功后都显示“Query

OK”,这里理解为执行成功就可以了,“1 row affected (0.00 sec)”表示操作只影响了数据库中一行的记录,“0.00

sec”则记录了操作执行的时间。

如果这个存在这个数据库,系统会提示:

可以使用SHOW语句查看在服务器上当前存在什么数据库

可以发现,在上面的列表中除了刚刚创建的test1外,还有另外4个数据库,它们都是安装mysql时系统自动创建的,其各自功能如下:

.information_schema:主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息,权限信息,字符集信息、分区信息等。

.cluster:存储了系统的集群信息。

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

.test:系统自动创建的测试数据库,任何用户都可以使用

在查看了系统中已有的数据库后,可以用如下命令选择要操作的数据库:

USE dbname;

例如,选择数据库test1;

然后再用一下命令来查看test1数据库中创建的所有数据表:

由于test1是刚创建的数据库,还没有表,所以显示为空。命令行下面的"Empty set"表示操作的结果集为空,如果查看一下mysql数据库里面的表,则可以得到以下信息:

2:删除数据库

删除数据库的语法很简单,如下所示:

drop database dbname;

例如,要删除test1数据库可以使用一下语句:

可以发现,提示操作成功后, 后面却显示了 0 rows affected (0.08 sec),这个提示可以不用管它,在MySQL里面,drop语句操作的结果都是显示“0

rows affected”;

注意:数据库删除后,下面的所有表数据都会全部删除,所以删除前一定要仔细检查并做好相应备份.

3:创建表

在数据库中创建一张表的基本语法如下:

CREATE TABLE tablename(

column_name_1 column_type_1 constraints,

column_name_2 column_type_2 constraints,

....

column_name_n column_type_n constraints

)

因为MySQL的表名是一目录的形式存在于磁盘上的,所以表名的字符可以用任何目录名允许的字符.column_name是列的名字;column_name

是列的名字;column_type 是列的数据类型;constraints是这个列的约束条件,在后面会讲到。

例如,创建一个名称为employee的表,表中包括ename(名字)、edate(雇佣日期)和

sal(薪水)3个字段,字段类型分别为

varchar(10)、date、int(2).

表创建完毕后,如果需要查看一下表的定义,可以使用如下命令

DESC tablename

例如查看employee表,将输出以下信息:

虽然desc命令可以查看表定义,但是其输出的信息还是不够全面,为了得到更全面的表定义信息,有时就需要查看创建标的SQL语句,可以使用如下命令查看:

从上面创建表的SQL语句中,除了可以看到表定义以外,还可以看到标的engine(存储引擎)和charset(字符集)等信息。“\

G”选项的含义是使得记录能够按照字段竖向排列,以便更好地显示内容较长的记录。

4:删除表

表的删除命令如下:

DROP TABLE tablename

例如,要删除数据库employee可以使用以下命令

5:修改表

对于已经创建好的表,尤其是已经有大量数据的表,如果需要做一些结构上的改变,可以先将表删除(drop),然后再按照新的表定义重建表,这样做没有问题,但是必然要做一些额外的工作,比如数据的重新加载,而且,如果有服务在访问表,也会对服务产生影响。

因此在大多数情况下,表结构的更改都使用alter table语句,以下是一些常用的命令。

(1):修改表类型,语法如下:

ALTER TABLE tablename MODIFY[COLUMN]

column_definition[FIRST\AFTER col_name]

例如,修改表employee的ename字段定义,将varchar(10)改完varchar(20);

(2)增加表字段,语法如下

ALTER TABLE tablename ADD [COLUMN]

column_definition [FIRST\AFTER col_name]

例如,在表employee中新增加字段age,类型为int(3):

(3)删除表字段,语法如下:

ALTER TABLE tablename DROP [COLUMN]

col_name;

例如,将字段age删除掉:

(4)字段改名,语法如下:

ALTER TABLE tablename CHANGE [COLUMN] Old_col_name

column_definition [FIRST\AFTER col_name]

例如,将age改名为age1,同时修改字段类型为int(4);

注意:change和modify都可以修改表的定义,不同的是change后面需要些两次列名,不方面,但是change的优点是可以修改列名称,modify则不能。

(5)修改字段排列顺序。

前面介绍的字段增加和修改语法(ADD/CHANGE/MODIFY)中,都有一个可选项first|after

column_name,这个选项可以用来修改字段在表中的位置,ADD 增加的新字段默认是加在表的最后位置,而CHANGE/MODIFY默认都不会改变字段的位置。

例如,将新增的字段birthday date加在ename之后:

修改字段age1,将它放在最前面:

注意:CHANGE/FIRST|AFTER COLUMN 这些关键字都属于MySQL在标准SQL上的扩展,在其他数据库上不一定适用。

(6)更改表明,语法如下:

ALTER TABLE tablename RENAME [TO] new_tablename;

例如,将表employee改名为myemp,命令如下:

mysql ddl查询语句_SQL基础-----DDL相关推荐

  1. mysql中如何分页查询_MySQL_mysql分页原理和高效率的mysql分页查询语句,以前我在mysql中分页都是用的 l - phpStudy...

    mysql分页原理和高效率的mysql分页查询语句 以前我在mysql中分页都是用的 limit 100000,20这样的方式,我相信你也是吧,但是要提高效率,让分页的代码效率更高一些,更快一些,那我 ...

  2. Mysql高级查询语句练习

    Mysql高级查询语句练习 DROP TABLE IF EXISTS `tblcourse`; CREATE TABLE `tblcourse` ( `CourseId` varchar(3) NOT ...

  3. mysql基本sql语句大全(基础用语篇)

    mysql基本sql语句大全(基础用语篇). 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明 ...

  4. mysql 查询语句 参数,mysql参数化查询语句有关问题

    mysql参数化查询语句问题 部分代码如下: using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.O ...

  5. MySQL高级查询语句——超详细,一篇就够了

    MySQL高级查询语句 一.MySQL进阶查询 1.1.按关键字排序--order by 1.2.对结果进行分组--group by 1.2.1.单个分组 1.2.2.分组结合order by使用 1 ...

  6. MySQL 基本查询语句

    MySQL基本查询语句 表示例 id name price author stock img_path 1 java从入门到放弃 80.00 国哥 7 static/img/default.jpg 2 ...

  7. 为什么MySQL做查询语句时,第一次会很慢,但是第二次,第三次就会变快

    为什么MySQL做查询语句时,第一次会很慢,但是第二次,第三次就会变快 为什么MySQL的查询事务第一次执行会很慢,第二次,第三次就会快很多呢? 在国外,有个老外这么提问 Hi, I have an ...

  8. 【SQL】MySQL的查询语句

    文章目录 SELECT语句 WHERE子句 JOIN语句 GROUP BY和HAVING ORDER BY LIMIT 其他关键字 MySQL是一种广泛使用的关系型数据库管理系统,它被广泛地应用于各种 ...

  9. MySQL数据查询语句

    MySQL数据查询语句 MySQL 表单查询是指从一张表的数据中查询所需的数据,主要有查询所有字段.查询指定字段.查询指定记录.查询空值.多条件的查询.对查询结果进行排序分组等. 查询结构 SELEC ...

最新文章

  1. NLP word2vec 计算优化
  2. php 数组元素分类,数组分类、定义及遍历
  3. iphone怎样关闭副屏_iPhone手机关掉这3个设置,不仅省电,而且手机还不会卡
  4. 除去数组中的空字符元素array_filter()
  5. 计算机网络的一大发展趋势是多维化,对口高考计算机网络概述复习.ppt
  6. 安卓逆向 -- 防抓包破解(JustTrustMe)
  7. 计算机硬件基础 软考中级 网络工程师
  8. MySQL中怎么对varchar类型排序问题(数字字符串和汉字拼音的顺序)
  9. 遍历目录 nftw and ftw
  10. 多线程经典问题1——主线程子线程交替问题
  11. 图解Google搜索技术
  12. linux系统可以显示中文输入法,2 Linux支持中文显示和中文拼音输入法(番外篇)...
  13. 蓝桥杯CT107D:关于矩阵键盘工作原理及其应用
  14. 如何干净、彻底地删除软件、文件夹
  15. 51单片机内部外设:定时器和计数器
  16. Linux、Windows获取主板序列号和UUID
  17. luogu P2698 [USACO12MAR]花盆Flowerpot
  18. k2p一直亮红灯搜不到信号_笔记本电脑搜索不到wifi信号的原因
  19. 不同的人生不同的追求
  20. idea最常用的快捷键,写代码快到飞起

热门文章

  1. qt 等待线程结束_实战PyQt5: 128-使用多线程进行并行处理
  2. mysql 数据库之表操作
  3. 日志,错误日志,成功日志,日志是个好东西。
  4. C#实现图片文件到数据流再到图片文件的转换
  5. CKEditor的使用方法
  6. WebbUpload上传组件(cnblog 一位网友写的)
  7. Symbian S60 签名工具
  8. Linux扩展正则表达式
  9. GMTC 大前端时代前端监控的最佳实践 1
  10. 原来华为是一家做音乐的公司