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,数据操作语言)语句:关键字有insertupdatedelete

   3》DDL(Data Definition Language,数据定义语言)语句:关键字有createalterdroptruncate

   4》DCL(Data Control Language,数据控制语言)语句:关键字有grantrevoke

   5》事务控语句:关键字有commitrollbacksavepoint

   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语句是数据库对象操作语句,包括createalterdroptruncate数据库对象。常见的数据库对象有:

对象名称 对应关键字段 描述
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