MySQL之浅谈DDL和DML
前言
在前面的文章中我们认识了MySQL,以及熟悉了如何使用MySQL的查询语句
数据操作增删查改中的查我们已经介绍了,那么本篇文章将会介绍剩下的增删改以及数据库和表的常用操作,比如创建、删除、修改。
一、DDL
可能有看官老爷会问,什么是DDL啊?这里博主简单介绍一下,DDL全名Data Define Languge,从英文上我们可以很轻松的翻译过来叫数据定义语言,即用于库和表的创建、修改、删除。
1.1 数据库操作
1.1.1 创建与使用数据库
#创建数据库
CREATE DATABASE 数据库库名;
#创建数据库,先判断数据库是否存在,再创建
CREATE DATABASE IF NOT EXISTS 数据库库名;
#创建数据库,并指定字符集
CREATE DATABASE 数据库库名 CHARACTER SET 字符集;
#使用数据库
USE 数据库库名;
1.1.2 查询数据库
#查询所有数据库的名称
SHOW DATABASES;
#查询某个数据库的字符集:查询某个数据库的创建语句
SHOW CREATE DATABASE 数据库库名;
#查询正在使用的数据库名
SELECT DATABASE();
1.1.3 修改数据库的字符集
#修改数据库的字符集
ALTER DATABASE 数据库库名 CHARACTER SET 字符集名称;
1.1.4 删除数据库
#删除数据库
DROP DATABASE 数据库库名;
#判断数据库是否存在,再删除
DROP DATABASE IF EXISTS 数据库库名;
1.2 数据表操作
1.2.1 创建数据表
#创建数据表
CREATE TABLE 表名(
列1 数据类型 【约束】,
列2 数据类型 【约束】,
...
列n 数据类型 【约束】
);
注:最后一句的时候不用加逗号。
1.2.2 查询数据表
#查询当前数据库中的所有表
SHOW TABLES;
#查询某个数据库中的所有表
SHOW TABLES FROM 数据库库名;
#查询表结构
DESC 表名;
1.2.3 修改数据表
#修改表名
ALTER TABLE 表名 RENAME TO 新表名;
#修改表的字符集
ALTER TABLE 表名 CHARACTER SET 字符集;
#添加一列
ALTER TABLE 表名 ADD 列名 数据类型;
#修改列名称、数据类型
ALTER TABLE 表名 CHANGE 列名 新列别 新数据类型;
ALTER TABLE 表名 MODIFY 列名 新数据类型;
#删除列
ALTER TABLE 表名 DROP 列名;
1.2.4 删除数据表
#删除数据表
DROP TABLE 数据表;
#先判断是否存在数据表,再删除
DROP TABLE IF EXISTS 数据表;
其实对数据库和数据表操作的关键字都是一样的,只不过是在之后表明是对数据库还是对数据表进行操作。如果是对数据库进行操作就加上database,如果是对数据表进行操作就加上table
1.3 常用数据类型
1.4 约束
概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性。
1.5 标识列
自增
在字段后面添加auto_increment
二、DML
介绍完DDL之后,我们再来看DML,DML全名Data Manipulate Language,同样直译过来就是数据处理语言,DML用于添加、删除、修改数据库记录,并检查数据完整性。
2.1 添加数据
#添加数据
INSERT INTO 表名(列名1,...) VALUES(值1,...);
INSERT INTO 表名 SET 列名1 = 值1,...,列名n = 值n;
添加数据时需注意:
1.列名与值需要一一对应。
2.列数与值数必须一致。
3.省略列名,则默认给所有列添加值。
2.2 修改数据
#修改单表数据
UPDATE 表名 SET 列名1 = 值1,...,列名n = 值n 【WHERE 筛选条件】;
#修改多表数据
UPDATE 表1 别名,表2 别名 SET 字段 = 新值,..., WHERE 连接条件 AND 筛选条件;
注:如果不加条件,则修改表中的所有数据。
2.3 删除数据
#删除数据
DELETE FROM 表名 【WHERE 条件】; #如果不加条件,则删除表中所有记录。
#删除表中所有记录
DELETE FROM 表名; ----不推荐使用。
TRUNCATE TABLE 表名; -----推荐使用,效率高。
delete与truncate对比:
到此这篇关于MySQL之浅谈DDL和DML的文章就介绍到这了,更多相关MySQL中DDL和DML内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341