MySQL的DDL和DML
SQL语句:结构化查询语句,使用SQL与数据库“沟通”,完成相应的数据库操作。
语句分类
DDL(Data Definition Languages)语句:即数据库定义语句,用来创建数据库中的表、索引、视图、存储过程、触发器等,常用的语句关键字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。增删改表的结构
DML(Data Manipulation Language)语句:即数据操纵语句,用来查询、添加、更新、删除等,常用的语句关键字有:SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLAIN PLAN,LOCK TABLE,包括通用性的增删改查。增删改表的数据
DCL(Data Control Language)语句:即数据控制语句,用于授权/撤销数据库及其字段的权限(DCL is short name of Data Control Language which includes commands such as GRANT and mostly concerned with rights, permissions and other controls of the database system.)。常用的语句关键字有:GRANT,REVOKE。
TCL(Transaction Control Language)语句:事务控制语句,用于控制事务,常用的语句关键字有:COMMIT,ROLLBACK,SAVEPOINT,SET TRANSACTION。
一. DDL语句
增删改表的结构,代表字段:create,alter,drop
1.1 创建表
创建表CREATE
演示:创建员工表
CREATE TABLE employee(
id int(4),
name VARCHAR(20),
gender CHAR(1),
birth DATE,
salary float(2),
job VARCHAR(30),
deptno int(2)
);
设置默认值 DEFAULT
可以通过DEFAULT子句给列指定默认值
CREATE TABLE emptest(
id int(4),
name VARCHAR(20),
gender CHAR(1) DEFAULT 'M',
birth DATE
);
设置列值非空NOT NULL
默认情况下,任何列都允许有空值。非空(NOT NULL)是一种条件约束,用于确保字段值不为空,当某个字段被设置了非空约束条件,这个字段中必须存在有效值,即:当执行插入数据操作时,必须提供这个列的数据;当执行更新操作时,不能给这个列的值设置为NULL。Ø NOT NULL:非空
CREATE TABLE emptest(
id int(4) ,
name VARCHAR20) NOT NULL,
gender CHAR(1) DEFAULT 'M',
birth DATE
);
1.2 复制表
复执表中所有数据
CREATE TABLE emptest1 as select * from emptest;
复制表中部分数据
CREATE TABLE emptest2 as select id,name from emptest;
1.3 修改表
修改表名RENAME
演示:修改表名
alter table emptest rename to/as testemp; #修改表名
create table testemp1 like emptest; #创建表结构.这样的建表方式,不仅仅是表的结构,连带着索引也会同时创建.
增加列ALTER ADD
演示:在testemp表下面增加hiredate列,并将默认值设置为当前时间增加列,列只能增加在最后,不能插入现有的列中。
ALTER TABLE testemp ADD(hiredate DATE DEFAULT sysdate);
删除列 ALTER DROP
删除列,删除字段需要从每行中删掉该字段占据的长度和数据,并释放在数据块中占据的空间,如果表记录比较大,删除字段可能需要比较长的时间。
演示:删除testemp表下的hiredate
ALTER TABLE testemp DROP (hiredate);
修改列 ALTER MODIFY
修改列,使用MODIFY可以改变表中列的数据类型、长度和默认值,注意这种修改仅对以后插入的数据有效。另外如果表中已经有数据的情况下,把长度由大改小,有可能不成功,比如原来类型是VARCHAR2(100),其中已经存放了100字节长度的数据,如果改为80字节,则不会修改成功。
演示:修改testemp表中name的长度为30
ALTER TABLE testemp MODIFY(name VARCHAR(30));
1.4 查看表的数据结构DESC
DESC employee;
1.5 删除表DROP
DROP TABLE emptest;
DROP TABLE if exist emptest;
二. DML语句
用于增删改表中数据,DML是伴随TCL事务控制的。代表字段:insert,delete, update
增加记录INSERT
INSERT语句用来给数据表增加记录,每次增加一条记录。所有的DML操作,需要再执行事务提交语句COMMIT才算真正确认了此操作。
语法: insert into tablename(columnname1,columnname2,columnname3,c...) values(value1,value2,value3,....);
字段和值必须一一对应,个数必须相同,数据类型必须一致
演示:想testemp中插入一条记录
INSERT INTO testemp (id,name,gender) VALUES (1,'张三','M');
COMMIT;
插入数据时忽略字段则是全列插入,顺序不能错误,如下:
INSERT INTO testemp VALUES (10,'李四','F',sysdate);
COMMIT;
注意:如何插入中文数据
使用DOS命令窗口不能直接插入中文,因为DOS窗口是GBK的编码方式,但是数据库表只接受UTF-8
因此可以使用图形化界面工具插入数据,在DOS窗口中查询的时候出现乱码,
可以修改查询结果集的显示编码方式。
mysql> set character_set_results ='GBK';
更新表记录UPDATE
更新表中的记录,需要配合WHERE子句使用,否则全表的数据都会被更新。
语法: update tablename set 字段名=字段值,字段名=字段值,字段名=字段值 where 条件
演示:更新testemp表中张三的ID为2
UPDATE testemp SET id=2 WHERE name='张三';
COMMIT;
同时修改两个类型:
UPDATE testemp SET id=5,name='王五' WHERE name='李四';
COMMIT;
删除表记录DELETE
删除表中的记录,和UPDATE一样,需要配合WHERE子句使用,不然会将全表数据删除。
语法: delete from tableame where 条件
演示:将testemp表中id为2的记录删除
DELETE FROM testemp WHERE id=2;
清空表:
DELETE FROM testemp;
MySQL的DDL和DML的更多相关文章
- MySQL Online DDL与DML并发阻塞关系总结
MySQL DDL操作执行的三种方式 1,INPLACE,在进行DDL操作时,不影响表的读&写,可以正常执行表上的DML操作,避免与COPY方法相关的磁盘I/O和CPU周期,从而最小化数据库的 ...
- MySQL常用DDL、DML、DCL语言整理
DDL ----Data Definition Language 数据库定义语言 如 create procedure之类 创建数据库 CREATE DATABASE [IF NOT EXISTS] ...
- MySQL 基础 DDL和DML
DDL 数据库定义语句 创建数据库 create table if exits 数据库.表名( field1 数据类型 约束类型 commit 字段注释, field2 数据类型 约束类型 commi ...
- Mysql 数据库操作之DDL、DML、DQL语句操作
Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l Show databases 查看数据库列表信息 l 查看数据库中的数据表信息 ,格式: use 数据库名: sh ...
- MySQL的DDL语句、DML语句与DCL语句
背景:近几年,开源数据库逐渐流行起来.由于具有免费使用.配置简单.稳定性好.性能优良等优点,开源数据库在中低端应用上占据了很大的市场份额,而 MySQL 正是开源数据库中的杰出代表.MySQL 数据库 ...
- mysql基础操作(一):DDL、DML
-- 1.在命令行中开启数据库: net start mysql -- 2.在命令行中关闭数据库: net stop mysql 1.DDL语句:create.drop.alter -- 查看所有的数 ...
- Mysql中DDL, DML, DCL, 和TCL是什么?
在一些公司中提交给测试团队的SQL脚本会划分为DDL.DML等,但这些概念到底是如何定义的呢? SQL(Structure Query Language)是数据库操作的的核心语言,接下来我们通过一张图 ...
- 【MySQL作业】DDL 和 DML——美和易思使用 DML 删除表数据应用习题
点击打开所使用到的数据库>>> 删除客户"刘一鸣". 执行 SQL 代码"delete from customer where cName=' 刘一鸣 ...
- 【MySQL作业】DDL 和 DML——美和易思使用 DML 新增和更新表数据应用习题
点击打开所使用到的数据库>>> 1.添加 easyShopping 客户数据. insert into customer values('abc111','111',' 刘一鸣 ', ...
随机推荐
- notifix测试
成功 失败 警告 提示
- [题解] UVA11426 GCD - Extreme (II)
题面 莫反是不可能莫反的,这辈子都不可能莫反了 题目要求的是 \[ \sum\limits_{i=1}^n \sum\limits_{j=i+1}^n \gcd(i,j) \] 稍微变个亚子 \[ \ ...
- HDU - 6205 card card card (尺取法)
题意:有n堆牌,ai表示每堆牌的牌数,bi表示每堆牌的penaltyvalue,操作开始前,可以重复进行将第一堆牌挪到最后一堆这一操作.然后,对于挪完后的牌,从第一堆开始,依次取.对于每一堆牌,首先将 ...
- 文本编辑器vim/vi——命令模式
一个完整的指令的标准格式: Linux通用的格式——#指令主体(空格) [选项](空格) [操作对象] 一个指令可以包含多个选项,操作对象也可以是多个. vim指令: 指令:vim (vim是一款 ...
- bugku - pwn wp
一. PWN1 题目:nc 114.116.54.89 10001 1. 直接kali里面跑nc 2.ls看看有啥 3.明显有一个flag cat查看一下 搞定 二 . PWN2 题目:给了nc 1 ...
- 2.14 Java web 复习总结
1.空指针异常原因(NullPointerExceptio)之一: 在Dao层里边 声明 Connection conn = DBUtil.getConn(); //不能少 Statement sta ...
- 记录一次SQLServer 2019 MDS问题的排查
问题表象: MDS网页里看不到任何建立的模型和实体. 用Excel add in连接,提示SQLServer授权过期. 但实际上SQLServer是企业版,目前并没有过期. 背景分析: 我们的环境是从 ...
- maven详解之仓库
在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件. Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库.(仓库就是存放依赖和插件的地方) 任何的 ...
- Essay写作没逻辑不要慌,掌握这几点即可
今天文章的内容,真的是很多很多留学生的最大的问题,没有之一:逻辑.是的,你没有看错,也不用惊讶.大家的essay写作得分不高,很多时候不是因为语言问题.排除很多细节表达的不足,更让教授头疼的居然是:内 ...
- HZNU-ACM寒假集训Day12小结 数论入门 题解
算不出的等式 BJOI2012 看到这题 真没什么办法 无奈看题解 1.注意到p/q 联想到斜率 2.注意到 [ ] 联想到整点 注意到k在变化,构造一次函数 f(x)=p/q*x ,g(x)=q/p ...