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这个类很重要(在本 ...
随机推荐
- ASP.NET Core 2.2 : 二十六. 应用JWT进行用户认证及Token的刷新
来源:https://www.cnblogs.com/FlyLolo/p/ASPNETCore2_26.html 本文将通过实际的例子来演示如何在ASP.NET Core中应用JWT进行用户认证以及T ...
- 初入vue.js(1)
本文章属于个人在学习vue的随笔,留作与大家分享,技术交流之用,如果有错误,请大家多多指正.谢谢 首先说一下vue的使用方式: vue的使用方式一共有两种,第一种是直接在官网上下载vue.js的文件, ...
- 第一个chrome extension
如今,chrome浏览器的使用如越来越流行,chrome extension往往能提供更多很丰富的功能.以前一直想了解这方面的东西,可是又担心很复杂.前段时间,在斗鱼看一个直播,想刷弹幕,但是每次自己 ...
- slot-scope 插槽 的使用 ——'<template slot-scope="page">'
slot-scope="page"slot-scope 是一个插槽,拿外面的数据,可以获取当前一行的数据page.row.pageId 拿到当前行数据的pageId注意:slot- ...
- mui实现分页上拉加载更多 下拉刷新数据的简单实现 移动端下拉上拉
空下来把mui上拉加载更多,下拉刷新数据做了一个简单的实现,希望可以帮助到需要的朋友 demo项目的结构 <!DOCTYPE html> <html> <head> ...
- linux相关认证和权限配置
[root@rsync-server-1 /]# echo 'rsync_backup:redhat' > /etc/rsync.password [root@rsync-server-1 /] ...
- Sql在Group by的select中包含多列
SELECT A , B , COUNT(Id) AS '数量' FROM dbo.[Table] GROUP BY A , B
- leetcode x进制数 python3
不少题目都是实现吧10进制数转换成x进制数,实际上都是一个套路,下面是7进制的,想换成什么进制,把7替换成相应数字即可,输出的是字符串 16,32进制这种有特殊要求的转不了,其他的应该通用 class ...
- python-使用list和tuple
list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...
- AOP技术介绍--(.Net中关于AOP的实现)
一.AOP实现初步 AOP将软件系统分为两个部分:核心关注点和横切关注点.核心关注点更多的是业务逻辑,关注的是系统核心的业务:而横切关注点虽与核心的业务实现无关,但它却是一种更通用的业务, ...