第一章 数据库和SQL

数据库是什么

  • 数据库(DB):数据构成的集合
  • 数据库管理系统(DBMS):用来管理数据库的计算机系统
  • DBMS的种类
    • 层次数据库
    • 关系数据库(当今应用最广):
    • 面向对象数据库
    • XML数据库
    • 键值存储系统

数据库的结构

  • 客户端/服务器系统(C/S类型)是最常见的。
  • 一个数据库中可以存储多个表
  • 字段:表的列
  • 记录:表的行(关系数据库以行为单位进行数据读写)
  • 单元格:行与列的交汇,只能输入一个数据

SQL概要

  • 标准SQL:符合ISO标准
  • SQL语句:关键字、表名、列名等组合而成的一条语句。
    • DDL:数据定义语言,用来创建或删除,如 create、drop、alter
    • DML:数据操纵语言,用来查询或变更,如 select、insert、update、delete
    • DCL:数据控制语言,用来确认或授权,如 commit、rollback、grant、revoke
  • SQL基本书写规则
    • SQL语句以分号结尾
    • SQL语句不区分大小写(但表中的数据是区分大小写的)
    • 字符串和日期用单引号括起来,数字不用
    • 单词以半角空格或者换行来分隔

表的创建

  • 数据库的创建:
    • 格式: CREATE DATABASE <数据库名称>;
    • 实例: CREATE DATABASE shop;
    • MYSQL选择数据库: use shop;
  • 表的创建:
    • 格式:
      CREATE TABLE <表名> (
          <列名1> <数据类型> <该列所需约束>,
          <列名2> <数据类型> <该列所需约束>,
          ...
          <该表的约束1>, <该表的约束2>, ...
      );
      
    • 实例:
      CREATE TABLE Product(
          product_id      CHAR(4)      NOT NULL,
          product_name    VARCHAR(100) NOT NULL,
          product_type    VARCHAR(32)  NOT NULL,
          sale_price      INTEGER ,
          purchase_price  INTEGER ,
          regist_date     DATE ,
          PRIMARY KEY (product_id)
      );
      
  • 命名规则:英文字母(开头)、数字、下划线
  • 数据类型:
    • INTEGER:整数
    • CHAR:在存储中是定长字符串,在括号中指定最大长度
    • VARCHAR:在存储中是可变长字符串,在括号中指定最大长度
    • DATE:日期(年月日)
  • 约束:NOT NULL(非空约束)、PRIMARY KEY(主键约束)

表的删除和更新

  • 表的删除
    • 格式: DROP TABLE <表名>;
    • 实例: DROP TABLE Product;
  • 表定义的更新
    • 添加列 ALTER TABLE <表名> ADD COLUMN <列的定义>;
    • ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);
    • 删除列 ALTER TABLE <表名> DROP COLUMN <列名>;
    • ALTER TABLE Product DROP COLUMN product_name_pinyin;
  • 插入数据
    • 在 MySQL 中,插入数据前使用 START TRANSACTION; 插入数据后使用 COMMIT;
    • 实例:
      INSERT INTO Product VALUES (\'0001\', \'T恤\' ,\'衣服\', 1000, 500, \'2009-09-20\');
      INSERT INTO Product VALUES (\'0002\', \'打孔器\', \'办公用品\', 500, 320, \'2009-09-11\');
      INSERT INTO Product VALUES (\'0003\', \'运动T恤\', \'衣服\', 4000, 2800, NULL);
      INSERT INTO Product VALUES (\'0004\', \'菜刀\', \'厨房用具\', 3000, 2800, \'2009-09-20\');
      INSERT INTO Product VALUES (\'0005\', \'高压锅\', \'厨房用具\', 6800, 5000, \'2009-01-15\');
      INSERT INTO Product VALUES (\'0006\', \'叉子\', \'厨房用具\', 500, NULL, \'2009-09-20\');
      INSERT INTO Product VALUES (\'0007\', \'擦菜板\', \'厨房用具\', 880, 790, \'2008-04-28\');
      INSERT INTO Product VALUES (\'0008\', \'圆珠笔\', \'办公用品\', 100, NULL, \'2009-11-11\');
      
      COMMIT;
      
  • 修改表名:RENAME TABLE <原表名> to <目标表名>; (仅限MySQL使用)

练习题

-- 1.1
CREATE TABLE Addressbook (
    regist_no       INTEGER         NOT NULL,
    name            VARCHAR(128)    NOT NULL,
    Address         VARCHAR(256)    NOT NULL,
    tel_no          CHAR(10),
    mail_address    CHAR(20),
    PRIMARY KEY (regist_no)
);

-- 1.2
ALTER TABLE Addressbook ADD COLUMN postal_code CHAR(8) NOT NULL;

-- 1.3
DROP TABLE Addressbook;

-- 1.4
(?_?)

版权声明:本文为by-sknight原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/by-sknight/articles/12726072.html