MySQL-第二篇SQL语句基础(1)语句分类及DDL语句
1、什么是SQL语句
SQL是Structed Query Language的缩写,即结构化查询语言。SQL是操作和检索数据库的标准语言,标准的SQL语句可以操作任何关系数据库。
2、标准的SQL语句有有以下几种分类(M->D->C,数据->库对象->用户)
1》查询语句:查询语句是SQL语句中最复杂、功能最丰富的的语句,关键字有select。
2》DML(Data Manipulation Language,数据操作语言)语句:关键字有insert、update、delete。
3》DDL(Data Definition Language,数据定义语言)语句:关键字有create、alter、drop、truncate。
4》DCL(Data Control Language,数据控制语言)语句:关键字有grant、revoke。
5》事务控语句:关键字有commit、rollback、savepoint。
SQL语句的关键字不区分大小写,即select和SELECT,或者selEct都是等效的,只要是那个关键字。
还有一点:truncate是一个特殊的DDL关键字,它相当于先删除指定的数据表,然后再重建该数据表该数据表。如果使用MySQL的普通存储机制,它确实是这样的。但如果使用InnoDB存储机制,则比较复杂,MySQL5.0.3之前,truncate和delete完全一样;5.0.3之后,truncate table比delete效率高,但如果该表被外键约束参照,则依然被映射成delete操作。当使用快速truncate时,该操作会重设自动增长计数器。在5.0.13之后,快速truncate总是可用(即比delete性能要好)。
3、DDL语句
1》DDL语句是数据库对象操作语句,包括create、alter、drop、truncate数据库对象。常见的数据库对象有:
对象名称 | 对应关键字段 | 描述 |
表 | table | 存储数据的逻辑单元,以行和列的形式存在 |
数据字典 |
即系统表,存放数据库相关信息的表,系统表里的数据通常由数据库系统维护,程序员通常不应该 手动修改系统表及系统表数据,只可查看系统表数据 |
|
约束 | constraint | 执行数据校验的规则,用于保证数据完整性的规则 |
视图 | view | 一个或者多个数据表里数据的逻辑显示。视图并不存储数据 |
索引 | index | 用于提高查询性能,相当于书的目录 |
函数 | function | 用于完成一次特定的计算,具有一个返回值 |
存储过程 | procedure | 用于完成一次完整的业务处理,没有返回值,但可通过传出参数将多个值传给调用环境 |
触发器 | trigger | 相当于一个事件监听器,当数据库发生特定事件后,触发器触发,完成相应的处理 |
针对这些对象,DDL关键字可以直接把这些对象紧接着它们书写,如create table ...、create index ...等
2》创建数据库的语法
create database mybatis;
3》增加表的语法
1>create table语句只创建空表
create table [模式名.]表名 (--列定义columnName1 datatype [default expr],... )
列字段类型如下:
2>create table使用子查询语句
create table [模式名.]表名 [column[,column...]] as subquery;
4》修改表结构的语法
修改表结构使用alter table,修改表结构包括增加列定义、修改列定义、删除列、重命名列等操作。
1>增加列。如果只增加一列,圆括号可以省略。已有数据的表新增加列,则新增列不能为没有默认值且非空属性,否则添加失败。
alter table 表名 add (多个列定义);
2>删除列。删除列总是可以成功的,删除列将从每行数据删除指定列,以及回收该列的空间,故删除大表的列的时候,比较花费时间。
alter table 表名 drop column_name;
3>修改列定义。first|after col_name 指定需要将目标修改到指定位置。alter table 后可以跟多个modify,实现多字段的修改。
alter table 表名 modify column_name datatype [default expr] [first|after col_name];
修改列的默认值,只会影响以后数据的添加操作,不会影响已存在的数据。
4>MySQL特提供的:重命名表和完全修改列定义
重命名表:
alter table 表名 rename to 新表名;
修改列定义:change关键字
alter table 表名 change old_column new_column type [default expr] [first|after col_name];
5》删除表的语法
drop table 表名;
drop删除表的效果:
1>表结构被删除,表对象不再存在。
2>表中数据被删除。
3>该表所有相关的索引、约束被删除。
truncate 表名;
truncate(截断)删除的效果:
1>删除表中的所有数据,但保留表结构。
2>效率比delete高得多,但不能删除指定行记录。
3>如果使用非InnoDB存储机制,truncate比delete速度快;如果使用InnoDB存储机制,MySQL5.0.3之前,truncate和delete完全一样,5.0.3之后,truncate比delete效率高,但如果该表被外键约束所参照,truncate又变为delete操作。5.0.13后,快速truncate总是可用,即比delete性能好。
转载于:https://www.cnblogs.com/ZeroMZ/p/11366891.html
MySQL-第二篇SQL语句基础(1)语句分类及DDL语句相关推荐
- 第二篇:Go基础入门
第二篇:Go基础入门 2.1.第一个Go语言程序 下面我们就要正式进入Go语言的学习了. 首先还是一个传统的仪式:用程序在屏幕上输出"hello world" 步骤: 1.新建一个 ...
- MySQL 第二篇:增删改查
我把MySQL的内容整理成9篇博客,学完这9篇博客虽不能说能成为大神,但是应付一般中小企业的开发已经足够了,有疑问或建议的欢迎留言讨论. 一.新增数据 1.语法:insert [into] <表 ...
- mysql中ddl语句有哪些_SQL中常用DDL语句
DDL:对数据库以及数据库内部的对象进行创建.删除.修改等操作的语言,DDL语句更多的是由数据库管理员(DBA)使用,开发人员一般很少使用. 一.数据库: 1.查看数据库列表:show databas ...
- MySQL查询建表语句ddl_oracle之 获取建表ddl语句
在使用DIP工具初始化时遇到大量分区表,无法正常使用全同步功能,故先提取表结构,后同步数据. 以下内容转载自:http://www.cnblogs.com/andy6/p/8029334.html 经 ...
- mysql的ddl的语句有_Mysql操作之部分DDL语句
DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段,数据库,表,列,索引等数据库对象.常用的语句关键字主要包括create,drop,alter ...
- mysql获取ddl的语句,获取数据库或SHEME的DDL语句
获取数据库或SHEME的DDL语句 1. 获取单个的建表.视图和建索引的语法 1 set pagesize 0 2 set long 90000 3 set feedback off 4 set ec ...
- 第二篇:python基础之核心风格
第三篇:python基础之数据类型与变量 阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整 ...
- SQL语言基础:常用的数据查询语句
1.创建表 语法格式: creat table <表名> ( <,列名><数据类型>[列级完整性约束条件] <,列名><数据类型>[列级完整 ...
- ios入门攻略 07篇 C语言基础【循环结构之for语句,打印九九乘法表】
for循环 语法: for(表达式1;表达式2;表达式3){ 循环体; } 语义:1.先执行表达式1,跳转到2 2.判断表达式2的结果是否为真,如果为真,跳转到3,否则跳转到5 3.执行循环体,执行完 ...
- Python开发【第二篇】:基础数据类型
内容概要 格式化输出 运算符 编码 基本数据类型 深浅拷贝.小数据池 1.格式化输出 # %s 占位字符串. 实际上可以占位任何东西(用的最多的) # %d 占位整数. 只能占位数字 # name = ...
最新文章
- 网页瀑布流效果实现的几种方式
- 微信小程序直播自己的服务器,使用微信小程序和腾讯云实现直播功能
- 数据库ORA-00600 [15160]处理
- 你可能从未听过的 Linux 发行版
- Java 中的日期与时间
- HTML5 Canvas专题
- 微信小程序的提交审核流程
- 条目十四《使用reserve来避免不必要的重新分配》
- Genymotion安装apk问题,不能部署Genymotion-ARM-Translation_v1.zip
- AR.js专题-图片匹配
- java通过十字路口_如何正确通过十字路口 老司机教你怎么走
- HDU:1222wolfnbsp;andnbsp;habbit解题报告
- 稍纵即逝的烟花蓄势于纸
- 干货 | SQL 外部联接 Outer Join
- ubuntu / linuxmint 搜狗输入法安装后 fcitx configure找不到的解决办法
- nltk学习之统计词频和分词nltk.word_tokenize nltk.FreqDist
- CSDN联合安恒信息 共同发布安全开发工程师能力标准
- 基于STM32的智能风扇的制作
- 作为一名网络工程师,分享下IT从业经验!
- 人生所谓的成功是更好的生活!
热门文章
- VirtualBox虚拟机如何选中“启用嵌套 VT-x/AMD-V”
- error: invalid argument ‘-std=gnu++98‘ not allowed with ‘C‘
- 有的字体,用黑色渲染,效果是灰色
- unsatisfied condition: __STDC_VERSION__ = 201112L
- JAVA interface报错:abstract methods do not specify a body
- 文件的长度,跟FileReader读到的长度,不一样
- html5 小车动画_HTML5 实现小车动画效果(Canvas/CSS3/JQuery)
- 2021年高考成绩查询梧州市,2021年梧州高考状元是谁分数多少分,历年梧州高考状元名单...
- mysql primary重复_mysql:键'PRIMARY'和奇怪的ID行为重复条目'0'
- c#使用正则表达式获取TR中的多个TD_Linux之正则表达式