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性能好。
MySQL-第二篇SQL语句基础(1)语句分类及DDL语句的更多相关文章
- (6)MySQL进阶篇SQL优化(MyISAM表锁)
1.MySQL锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源 (如 CPU.RAM.I/O 等)的抢占以外,数据也是一种供许多用户共享的资源.如何保证数 据并 ...
- (4)MySQL进阶篇SQL优化(常用SQL的优化)
1.概述 前面我们介绍了MySQL中怎么样通过索引来优化查询.日常开发中,除了使用查询外,我们还会使用一些其他的常用SQL,比如 INSERT.GROUP BY等.对于这些SQL语句,我们该怎么样进行 ...
- 第二篇 SQL Server安全验证
本篇文章是SQL Server安全系列的第二篇,详细内容请参考原文. 验证是检验主体的过程.主体需要唯一标识,那样SQL Server可以确定主体有哪些权限.正确的验证是提供安全访问数据库对象的必要的 ...
- 第二篇 SQL Server代理作业步骤和子系统
本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...
- 【译】第二篇 SQL Server安全验证
本篇文章是SQL Server安全系列的第二篇,详细内容请参考原文. 验证是检验主体的过程.主体需要唯一标识,那样SQL Server可以确定主体有哪些权限.正确的验证是提供安全访问数据库对象的必要的 ...
- 【译】第二篇 SQL Server代理作业步骤和子系统
本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...
- (2)MySQL进阶篇SQL优化(show status、explain分析)
1.概述 在应用系统开发过程中,由于初期数据量小,开发人员写SQL语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多SQL语句开始逐渐显露出性能问题,对生产环境的影响也 ...
- (3)MySQL进阶篇SQL优化(索引)
1.索引问题 索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数 的SQL性能问题.本章节将对MySQL中的索引的分类.存储.使用方法做详细的介绍. 2.索引的存储分类 ...
- Java并发包下锁学习第二篇Java并发基础框架-队列同步器介绍
Java并发包下锁学习第二篇队列同步器 还记得在第一篇文章中,讲到的locks包下的类结果图吗?如下图: 从图中,我们可以看到AbstractQueuedSynchronizer这个类很重要(在本 ...
随机推荐
- Python之路-Python常用模块-time模块
一.time模块 常用的一种获取当前时间以及时间格式化的模块,模块名称:time time模块在Python原生安装中就存在所以不需要进行任何安装操作,直接使用即可. 导入方式: import tim ...
- Raven2
Raven2实验 0x01 寻找IP 本机IP:56.130 1. 使用 nmap -sn "ip6"#主机发现(不进行端口扫描) https://cloud.tencent.c ...
- paste - 合并文件各行
总览 (SYNOPSIS) ../src/paste [OPTION]... [FILE]... 描述 (DESCRIPTION) 连续 依次 从 各个 文件 FILE 中 读取 一行 然后 合并成 ...
- Jupyter Notebook 安装与使用
Ref: https://jupyter.org/install Installing Jupyter Notebook with pip python -m pip install --upgrad ...
- Centos7搭建日志服务器rsyslog+loganalyzer
一.系统环境 Rsyslog Server OS:CentOS 7 Rsyslog Server IP:172.28.194.118 Rsyslog Version: rsyslog-7.4.7-12 ...
- mysql数据同步到Elasticsearch
1.版本介绍 Elasticsearch: https://www.elastic.co/products/elasticsearch 版本:2.4.0 Logstash: https://www ...
- AOP技术介绍--(.Net中关于AOP的实现)
一.AOP实现初步 AOP将软件系统分为两个部分:核心关注点和横切关注点.核心关注点更多的是业务逻辑,关注的是系统核心的业务:而横切关注点虽与核心的业务实现无关,但它却是一种更通用的业务, ...
- Android SDK说明(图)
- hdu 6152 : Friend-Graph (2017 CCPC网络赛 1003)
题目链接 裸的结论题.百度 Ramsey定理.刚学过之后以为在哪也不会用到23333333333,没想到今天网络赛居然出了.顺利在题面更改前A掉~~~(我觉得要不是我开机慢+编译慢+中间暂时死机,我还 ...
- IT 技术人需要思考的 15 个问题
行内的人自嘲是程序猿.屌丝和码农,行外的人也经常拿IT人调侃,那么究竟是IT人没有价值,还是没有仔细思考过自身的价值? 1.搞 IT 的是屌丝.码农.程序猿? 人们提到IT人的时候,总会想到他们呆板. ...