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语句的更多相关文章

  1. (6)MySQL进阶篇SQL优化(MyISAM表锁)

    1.MySQL锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源 (如 CPU.RAM.I/O 等)的抢占以外,数据也是一种供许多用户共享的资源.如何保证数 据并 ...

  2. (4)MySQL进阶篇SQL优化(常用SQL的优化)

    1.概述 前面我们介绍了MySQL中怎么样通过索引来优化查询.日常开发中,除了使用查询外,我们还会使用一些其他的常用SQL,比如 INSERT.GROUP BY等.对于这些SQL语句,我们该怎么样进行 ...

  3. 第二篇 SQL Server安全验证

    本篇文章是SQL Server安全系列的第二篇,详细内容请参考原文. 验证是检验主体的过程.主体需要唯一标识,那样SQL Server可以确定主体有哪些权限.正确的验证是提供安全访问数据库对象的必要的 ...

  4. 第二篇 SQL Server代理作业步骤和子系统

    本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...

  5. 【译】第二篇 SQL Server安全验证

    本篇文章是SQL Server安全系列的第二篇,详细内容请参考原文. 验证是检验主体的过程.主体需要唯一标识,那样SQL Server可以确定主体有哪些权限.正确的验证是提供安全访问数据库对象的必要的 ...

  6. 【译】第二篇 SQL Server代理作业步骤和子系统

    本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...

  7. (2)MySQL进阶篇SQL优化(show status、explain分析)

    1.概述 在应用系统开发过程中,由于初期数据量小,开发人员写SQL语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多SQL语句开始逐渐显露出性能问题,对生产环境的影响也 ...

  8. (3)MySQL进阶篇SQL优化(索引)

    1.索引问题 索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数 的SQL性能问题.本章节将对MySQL中的索引的分类.存储.使用方法做详细的介绍. 2.索引的存储分类 ...

  9. Java并发包下锁学习第二篇Java并发基础框架-队列同步器介绍

    Java并发包下锁学习第二篇队列同步器 还记得在第一篇文章中,讲到的locks包下的类结果图吗?如下图: ​ 从图中,我们可以看到AbstractQueuedSynchronizer这个类很重要(在本 ...

随机推荐

  1. ASP.NET Core 2.2 : 二十六. 应用JWT进行用户认证及Token的刷新

    来源:https://www.cnblogs.com/FlyLolo/p/ASPNETCore2_26.html 本文将通过实际的例子来演示如何在ASP.NET Core中应用JWT进行用户认证以及T ...

  2. 初入vue.js(1)

    本文章属于个人在学习vue的随笔,留作与大家分享,技术交流之用,如果有错误,请大家多多指正.谢谢 首先说一下vue的使用方式: vue的使用方式一共有两种,第一种是直接在官网上下载vue.js的文件, ...

  3. 第一个chrome extension

    如今,chrome浏览器的使用如越来越流行,chrome extension往往能提供更多很丰富的功能.以前一直想了解这方面的东西,可是又担心很复杂.前段时间,在斗鱼看一个直播,想刷弹幕,但是每次自己 ...

  4. slot-scope 插槽 的使用 ——'<template slot-scope="page">'

    slot-scope="page"slot-scope 是一个插槽,拿外面的数据,可以获取当前一行的数据page.row.pageId 拿到当前行数据的pageId注意:slot- ...

  5. mui实现分页上拉加载更多 下拉刷新数据的简单实现 移动端下拉上拉

    空下来把mui上拉加载更多,下拉刷新数据做了一个简单的实现,希望可以帮助到需要的朋友 demo项目的结构 <!DOCTYPE html> <html> <head> ...

  6. linux相关认证和权限配置

    [root@rsync-server-1 /]# echo 'rsync_backup:redhat' > /etc/rsync.password [root@rsync-server-1 /] ...

  7. Sql在Group by的select中包含多列

    SELECT A , B , COUNT(Id) AS '数量' FROM dbo.[Table] GROUP BY A , B

  8. leetcode x进制数 python3

    不少题目都是实现吧10进制数转换成x进制数,实际上都是一个套路,下面是7进制的,想换成什么进制,把7替换成相应数字即可,输出的是字符串 16,32进制这种有特殊要求的转不了,其他的应该通用 class ...

  9. python-使用list和tuple

    list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...

  10. AOP技术介绍--(.Net中关于AOP的实现)

    一.AOP实现初步       AOP将软件系统分为两个部分:核心关注点和横切关注点.核心关注点更多的是业务逻辑,关注的是系统核心的业务:而横切关注点虽与核心的业务实现无关,但它却是一种更通用的业务, ...