数据库系统原理之SQL(三)


1. SQL的组成

1. 数据查询
2. 数据定义
3. 数据操作
4. 数据控制

2. 数据定义语言

  1. CREATE创建数据库或数据库对象

    1. 创建数据库

      ~~~
      CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARSET SET utf8 [DEFAULT] COLLATE utf8_general_ci
      ~~~
    2. 创建表

       ~~~
      #创建表并设置主键和索引
      CREATE TABLE table_name (id int not null AUTO_INCREMENT,name char(50) not null default "",age int null,PRIMARY KEY(id),INDEX index_age(age));
      ~~~
    3. 查看数据库

       ~~~
      #可以根据正则匹配或者where从句来获取想看到的数据库
      SHOW {DATABASES | SCHEMAS} [LIKE’pattern’ | WHERE expr]

  2. ALTER对数据库或数据库对象进行修改

    1. 修改数据库

      ALTER DATABASE db_name DEFAULT CHARACTER SET gb2312 DEFAULT COLLATE gb2312_chinese_ci;
    2. 更新表

      1. 在表中添加一个字段,并在原表的sex字段之后

         ALTER TABLE table_name
        ADD COLUMN city char(50) not null default "" after sex;
      2. 修改表中的列名或数据类型

      修改表table_name中的字段c_name为name,并设置字段类型

      ALTER TABLE table_name

      CHANGE COLUMN c_name name char(50) not null default "";

      ~~~

      1. 修改或删除指定列的默认值

        ALTER TABLE table_name
        ALTER COLUMN [drop default | set default "" ]
      2. 只修改指定列的数据类型,不会干涉它的列名

           #first 将此列设为表的第一列
        ALTER TABLE table_name
        MODIFY COLUMN name char(25) not null first;
      3. 删除表中多余的字段

        ALTER TABLE table_name
        DROP COLUMN name;
      4. 为表重新命名

        ALTER TABLE table_name
        RENAME TO back_table_name;
        RENAME TABLE table_name TO back_name;
  3. DROP删除数据库或数据库对象

    1. 删除数据库

      DROP{DATABASE|SCHEMA}[IF EXISTS]db_name
    2. 删除表

      DROP TABLE [IF EXISTS] table_name [,table_name2]
  4. 查看表

    SHOW [FULL] COLUMNS {FROM | IN} tbl_name[{FROM | IN} db_name]
    [LIKE’pattern’ | WHERE expr]
    {DESCRIBE | DESC} tbl_name [col_name | wild]

3. 数据操纵语言

  1. SELECT从表中或视图中检索数据(查)
  2. INSERT将数据插入插入到表或视图中(增)
  3. UPDATE修改表或视图中的数据(改)
  4. DELETE删除表或视图中的数据(删)

4. 数据控制语言

  1. GRANT授予权限
  2. REVOKE收回权限

5. 索引定义

​ 索引是提高数据文件访问效率的有效方法

  1. 弊端:
  • 索引是以文件的形式存储的,如果有大量的索引,索引文件可能比数据文件更快达到最大的文件尺寸;
  • 索引在提高查询速度的同时,会降低更新表的速度。
  1. 索引类型

    1. 普通索引(INDEX或KEY)
    2. 唯一性索引(UNIQUE)
    3. 主键(PRIMARY KEY)
  2. 创建索引(CREATE INDEX不能创建主键索引)

    #在table_name表上的column字段上创建唯一索引index_name,可设置长度和升序降序
    CREATE [UNIQUE] INDEX index_name ON table_name (column [(length)][ASC | DESC])
    #为表table_name添加索引index_name
    ALTER TABLE table_name ADD INDEX index_name(name);
  3. 查看索引

    SHOW {INDEX | INDEXES | KEYS} {FROM | IN} table_name [{FROM | IN} db_name] [WHERE expr]
  4. 删除索引

    DROP INDEX index_name ON table_name
    ALTER TABLE table_name DROP PRIMARY KEY,DROP INDEX index_name;

6. MySQL内置函数

函数 描述 示例
CURDATE() 返回当前日期 SELECT CURDATE()---- 2018-09-19
ABS(X) 返回X的绝对值 select ABS(-5) ---返回5
AVG(expression) 返回表达式的平均值 返回一个班年龄的平均值---SELECT AVG(age) from class
COUNT(expression) 返回记录数量 返回A表中的数据量---SELECT COUNT(*) from A
MAX(expression) 返回字段中的最大值 返回一个班中最大的年龄---SELECT MAX(age) from class
MIN(expression) 返回字段中的最小值 返回一个班中最小的年龄---SELECT MIN(age) from class
SUM(expression) 返回指定字段的总和 返回一个班的分数总和---SELECT SUM(fraction) from class

数据库系统原理之SQL(三)的更多相关文章

  1. 数据库系统原理之SQL(四)

    数据库系统原理之SQL(四) 1. 数据更新 插入数据 INSERT-VALUES语句 #插入多条数据 insert [into] table_name (column_name,...) value ...

  2. Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx

    Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx 1.1. 数据库的类型,网状,层次,树形数据库,kv数据库.oodb2 1.2. Er模型2 1.3. Sql2 ...

  3. php面试专题---Mysql索引原理及SQL优化

    php面试专题---Mysql索引原理及SQL优化 一.总结 一句话总结: 注意:只写精品 1.为表设置索引要付出代价 是什么? 存储空间:一是增加了数据库的存储空间 修改插入变动索引时间:二是在插入 ...

  4. 数据库系统原理——ER模型与关系模型

    原文链接: http://blog.csdn.net/haovip123/article/details/21614887 犹记得第一次看<数据库系统原理>时看天书的感觉,云里雾里:现在已 ...

  5. 基于Spark1.3.0的Spark sql三个核心部分

    基于Spark1.3.0的Spark sql三个核心部分: 1.可以架子啊各种结构化数据源(JSON,Hive,and Parquet) 2.可以让你通过SQL,saprk内部程序或者外部攻击,通过标 ...

  6. Linq to Sql : 三种事务处理方式

    原文:Linq to Sql : 三种事务处理方式 Linq to SQL支持三种事务处理模型:显式本地事务.显式可分发事务.隐式事务.(from  MSDN: 事务 (LINQ to SQL)).M ...

  7. JAVA-Unit01: 数据库原理 、 SQL(DDL、DML)

    Unit01: 数据库原理 . SQL(DDL.DML) SQL语句是不区分大小写的,但是行业里习惯将关键字与分关键字用大小写岔开以提高可读性. SELECT SYSDATE FROM dual DD ...

  8. WebSocket原理与实践(三)--解析数据帧

    WebSocket原理与实践(三)--解析数据帧 1-1 理解数据帧的含义:   在WebSocket协议中,数据是通过帧序列来传输的.为了数据安全原因,客户端必须掩码(mask)它发送到服务器的所有 ...

  9. 7.27实习培训日志-Oracle SQL(三)

    Oracle SQL(三) 视图 特性 简单视图 复杂视图 关联的表数量 1个 1个或多个 查询中包含函数 否 是 查询中包含分组数据 否 是 允许对视图进行DML操作 是 否 CREATE [OR ...

随机推荐

  1. [记录] Linux登录前后提示语

    Linux登录前后提示语 /etc/issue 本地(虚拟控制台KVM等)登录前提示语,支持转义字符 /etc/issue.net 远程(telnet,ssh)登录前提示语,不支持转义字符 /etc/ ...

  2. c语言进阶11-经典算法代码

    重要算法一览 #include "stdio.h" #include "stdio.h" void main() { int a,b,c,i,n; int x, ...

  3. 【ML入门】李宏毅机器学习笔记01-Learning Map

    版权声明:小博主水平有限,希望大家多多指导.本文仅代表作者本人观点,转载请联系知乎原作者——BG大龍. 目录 1 什么是机器学习? 2 机器学习的3个步骤 3 李宏毅老师的机器学习课程 4 按“模型的 ...

  4. python元组-字典-集合及其内置方法(下)

    列表补充 补充方法 清空列表 clear # clear 清空列表 l = [1, 2, 3, 4, 4] print(l.clear()) # clear没有返回值(None) print(l) # ...

  5. 在安装Openstack的keystone认证服务时,出现The request you have made requires authentication. (HTTP 401) (Request-ID: req-f94bebba-f0c5-4a92-85问题的处理

      创建openstack的keystone认证服务器报错: The request you have made requires authentication. (HTTP 401) (Reques ...

  6. 《VR入门系列教程》之2---VR头显

    什么是虚拟现实?     虚拟现实的目标:让人们相信真实地处于一个虚拟世界中.要达到这个目标就得让人们的大脑(负责视觉和运动感知部分)欺骗他们.不同技术合在一起才可以创造这种幻觉,包括:     全立 ...

  7. luogu题解 P3388 【【模板】割点(割顶)】

    外加定义:在一个无向图中,如果删掉点 x 后图的连通块数量增加,则称点 x 为图的割点. 外加图示 开始思路为割桥上的点为割点,后来证明的确正确. 不过可惜的是他的逆定理错了(gg了),不过数据很弱以 ...

  8. AIX7.1安装zabbix_agent3.4

    1.在zabbix官网https://www.zabbix.com/download下载Zabbix pre-compiled agents 2.Zabbix pre-compiled agents安 ...

  9. Vue项目的创建和UI资源

    Vue项目创建打包与UI资源 1.Vue项目创建 1.1 vue-cli脚手架 vue-cli是一个基于vue的构建工具,用于搭建vue项目的环境,有着兼容,方便,快速的优点,能够完全遵循前后端分离的 ...

  10. CTF杂项题解题思路

    下载压缩包解压 如果是图片就先查看图片信息 没有有用信息查看图片看是否是一个图片 如果不是图片就将文件进行还原 从还原文件中查找有用信息 例:这是一张单纯的图片 http://123.206.87.2 ...