DDl,DML语句

本文介绍了数据库的基础知识,包括数据库的概述、分类,重点讲述了SQL中的DDL和DML语句。DDL用于定义数据库对象如库、表,涉及CREATE、ALTER、DROP关键字;DML则用于数据的插入、更新和删除操作,如INSERT、UPDATE、DELETE。同时,文中还列举了常见的数据类型及其用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数据库

1.概述

在这里插入图片描述

  1. 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。
  2. 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。
  3. 数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。
  4. 数据库:存储、维护和管理数据的集合。

2.分类

1.关系型数据库(sql)

Oracle:是Oracle公司的数据库产品

Mysql: 最早属于瑞典的MysqlAB公司的,后被Sun公司收购,Sun在2009年4月20号被Oracle收购。

SQLServer:微软旗下的数据库产品

Access:微软旗下的数据库产品

DB2:IBM公司旗下的数据库产品

2.非关系型数据库(nosql)

HBase是一个分布式的、面向列的开源数据库

MongoDB是一个基于分布式文件存储的数据库

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API

2.SQL

1.分类

  1. DDL:数据定义语言,用来定义数据库对象:库、表、列等;
  2. DML:数据操作语言,用来定义数据库记录(数据);
  3. DCL:数据控制语言,用来定义访问权限和安全级别;
  4. DQL:数据查询语言,用来查询记录(数据)。

2.DDL

1.关键字

使用的关键字:CREATE、 ALTER、DROP

2.操作数据库
//创建**

Create database mydb1;

Create database mydb2 character set gbk;

Create database mydb3 character set gbk COLLATE gbk_chinese_ci;                  

//**查询**

//查看当前数据库服务器中的所有数据库

Show databases;

//查看前面创建的mydb2数据库的定义信息

Show  create  database mydb2;

//删除前面创建的mydb3数据库

Drop database mydb3;                    

// **修改**

//查看服务器中的数据库,并把mydb2的字符集修改为utf8;

 alter database mydb2 character set utf8;

//**删除**       

//Drop database mydb3;                                     

//**查看当前使用的数据库**

Select database();

//**切换数据库**

Use mydb2;
3.操作表

语法:

create table 表名(

字段1 字段类型,

字段2 字段类型,

字段n 字段类型

);

常用数据类型:

int:整型

double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;

char:固定长度字符串类型; char(10) 'aaa ’ 占10位

varchar:可变长度字符串类型; varchar(10) ‘aaa’ 占3为

text:字符串类型;

blob:字节类型;

date:日期类型,格式为:yyyy-MM-dd;

time:时间类型,格式为:hh:mm:ss

timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值

datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

//当前数据库中的所有表**

SHOW TABLES;

//**查看表的字段信息**

DESC employee;

//**在上面员工表的基本上增加一个image列。**

ALTER TABLE employee ADD image blob;

//**修改job列,使其长度为60。**

ALTER TABLE employee MODIFY job varchar(60);

//**删除image列,一次只能删一列。**

ALTER TABLE employee DROP image;

//**表名改为user。**

RENAME TABLE employee TO user;

//**查看表格的创建细节**

SHOW CREATE TABLE user;

//**修改表的字符集为gbk**

ALTER TABLE user CHARACTER SET gbk;

//**列名name修改为username**

ALTER TABLE user CHANGE name username varchar(100);

//**备份表结构和表数据**

create table tname2 as select * from tname1;

//**备份表结构**

create table tname2 like tname1;

//**删除表**

DROP TABLE user ;

3.DML

INSERT

语法: INSERT INTO 表名(列名1,列名2 …)VALUES(列值1,列值2…);

注意:列名与列值的类型、个数、顺序要一一对应。

可以把列名当做java中的形参,把列值当做实参。

值不要超出列定义的长度。

如果插入空值,请使用null

插入的日期和字符一样,都使用单引号括起来。

练习 :

create table emp(

id int,

name varchar(100),

gender varchar(10),

birthday date,

salary float(10,2),

entry_date date,

resume text

);

//插入所有的字段时,可以省略前面的,直接写insert into values();   

INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume)

VALUES(1,'zhangsan','female','1990-5-10',10000,'2015-5-5-','good girl');



INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume)

VALUES(2,'lisi','male','1995-5-10',10000,'2015-5-5','good boy');



INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume)

VALUES(3,'你好','male','1995-5-10',10000,'2015-5-5','good boy');



//小知识:

//查看数据库编码的具体信息

Show variables like ‘character%;



//临时更改客户端和服务器结果集的编码 

Set character_set_client=gbk;

Set character_set_results=gbk;

UPDATE:

语法:UPDATE 表名 SET 列名1=列值1,列名2=列值2 。。。 WHERE 列名=值

练习:

//将所有员工薪水修改为5000元。

UPDATE emp SET salary=5000 

//将姓名为’zs’的员工薪水修改为3000元。

UPDATE emp SET salary=3000 WHERE name=’ zhangsan’;

//将姓名为’aaa’的员工薪水修改为4000元,job改为ccc。

 UPDATE emp SET salary=4000,gender='female' WHERE name='lisi';

//将wu的薪水在原有基础上增加1000元。

 UPDATE emp SET salary=salary+1000 WHERE gender='male';    

//update的if语句,如果性别为m,改为f,否则为m

UPDATE user SET  sex = IF('m','m','f') 

DELETE:

语法 : DELETE FROM 表名 【WHERE 列名=值】

练习 :

//删除表中名称为’zs’的记录。

DELETE FROM emp WHERE name=‘zs’;

//删除表中所有记录。

DELETE FROM emp;

//使用truncate删除表中记录。

TRUNCATE TABLE emp;

DELETE 删除表中的数据,表结构还在;删除后的数据可以找回

TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。Truncate

删除的数据不能找回。执行速度比DELETE快。

<think>我们正在讨论数据库中的DDLDML语句。根据引用内容,我们可以总结如下:DDL(数据定义语言)用于定义和管理数据库结构,包括创、修改和删除数据库对象(如、索引、视图等)。DDL语句执行后会自动提交,并且不可回滚。常见的DDL命令有CREATE、ALTER、DROP、TRUNCATE。DML(数据操作语言)用于操作数据库中的数据,包括插入、查询、更新和删除数据。DML语句通常在事务中执行,可以回滚。常见的DML命令有INSERT、UPDATE、DELETE、SELECT。下面我将分别给出DDLDML的详细说明和示例。###DDL(数据定义语言)1.**CREATE**:创数据库对象。-示例:创一个名为`students`的。```sqlCREATETABLEstudents(idINTPRIMARYKEY,nameVARCHAR(100),ageINT);```2.**ALTER**:修改现有数据库对象的结构。-示例:向`students`中添加一个`email`列。```sqlALTERTABLEstudentsADDemailVARCHAR(255);```3.**DROP**:删除数据库对象(整个对象,如、索引等)。-示例:删除`students`。```sqlDROPTABLEstudents;```4.**TRUNCATE**:清空中的所有数据,但保留结构。-示例:清空`students`中的所有数据。```sqlTRUNCATETABLEstudents;```###DML(数据操作语言)1.**INSERT**:向中插入新数据。-示例:向`students`中插入一条学生记录。```sqlINSERTINTOstudents(id,name,age)VALUES(1,'Alice',20);```2.**UPDATE**:更新中的数据。-示例:将`students`中id为1的学生的年龄更新为21。```sqlUPDATEstudentsSETage=21WHEREid=1;```3.**DELETE**:删除中的数据(可以指定条件删除部分数据)。-示例:删除`students`中id为1的学生记录。```sqlDELETEFROMstudentsWHEREid=1;```4.**SELECT**:查询中的数据。-示例:查询`students`中所有学生的信息。```sqlSELECT*FROMstudents;```###主要区别总结|特性|DDL|DML||--------------|--------------------------|--------------------------||**用途**|定义和管理数据库结构|操作数据库中的数据||**影响**|数据库模式(结构)|数据库中的数据||**事务**|自动提交,不可回滚|可事务控制,可回滚||**命令示例**|CREATE,ALTER,DROP|INSERT,UPDATE,DELETE|通过以上说明和示例,我们可以清楚地看到DDLDML在功能和用法上的区别。§§相关问题§§1.DDL语句中的TRUNCATE和DELETE有什么区别?2.为什么DDL语句执行后不能回滚,而DML语句可以?3.在数据库事务中,DML语句如何保证数据的一致性?4.请举例说明DDLDML在实际应用中的使用场景。</think>### DDLDML 的区别及示例详解 #### **核心区别总结** | 特性 | DDL (数据定义语言) | DML (数据操作语言) | |--------------|-----------------------------------|----------------------------------| | **用途** | 定义数据库结构(、索引等) | 操作数据库中的数据(增删改查) | | **影响对象** | 数据库模式(schema) | 数据库中的实际数据(records) | | **事务特性** | 自动提交,不可回滚 | 支持事务(可回滚) | | **操作类型** | 结构变更(创/修改/删除对象) | 数据变更(插入/更新/删除/查询) | --- #### **一、DDL 详解与示例** **功能**:定义数据库结构,如创、修改列、删除索引等。 **特点**: - 执行后立即生效(隐式提交) - 不可通过 `ROLLBACK` 撤销 - 不涉及实际数据操作 **常用命令及示例**: 1. **`CREATE`**(创对象) ```sql -- 创学生 CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50), age INT ); ``` 2. **`ALTER`**(修改结构) ```sql -- 为学生添加邮箱列 ALTER TABLE students ADD email VARCHAR(100); ``` 3. **`DROP`**(删除对象) ```sql -- 删除学生(结构+数据永久消失) DROP TABLE students; ``` 4. **`TRUNCATE`**(清空数据) ```sql -- 清空学生(保留结构,不可回滚) TRUNCATE TABLE students; ``` --- #### **二、DML 详解与示例** **功能**:操作中的数据(增删改查)。 **特点**: - 可通过 `COMMIT`/`ROLLBACK` 控制事务 - 不影响数据库结构 - 操作需显式提交(非自动提交) **常用命令及示例**: 1. **`INSERT`**(插入数据) ```sql -- 插入一条学生记录 INSERT INTO students (id, name, age) VALUES (1, '张三', 20); ``` 2. **`UPDATE`**(修改数据) ```sql -- 将id=1的学生年龄改为21 UPDATE students SET age = 21 WHERE id = 1; ``` 3. **`DELETE`**(删除数据) ```sql -- 删除年龄大于25的学生 DELETE FROM students WHERE age > 25; ``` 4. **`SELECT`**(查询数据) ```sql -- 查询所有学生信息 SELECT * FROM students; ``` --- #### **关键对比场景** 1. **`TRUNCATE` (DDL) vs `DELETE` (DML)** - `TRUNCATE`:删除所有数据,不可回滚,重置自增计数器 - `DELETE`:逐行删除,可回滚,保留自增计数器 2. **事务中的行为差异** ```sql BEGIN TRANSACTION; UPDATE students SET age=22 WHERE id=1; -- DML,可回滚 ALTER TABLE students ADD address VARCHAR(200); -- DDL,立即提交事务! ROLLBACK; -- 此时ALTER已生效,无法撤销 ``` --- #### **典型应用场景** - **DDL**: - 初始化数据库索引) - 版本升级时修改结构 - **DML**: - 用户注册(`INSERT`) - 订单状态更新(`UPDATE`) - 生成报(`SELECT`) > 提示:生产环境中,DDL 操作需谨慎执行,避免直接操作线上数据库议使用迁移工具(如 Flyway)管理结构变更[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值