SQL基础-第1章 数据库和SQL

1-1 数据库是什么

我们身边的数据库

像这样将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合称为数据库(Database, DB)。将姓名、住址、电话号码、邮箱地址、爱好和家庭构成等数据保存到数据库中,就可以随时迅速获
取想要的信息了。

用来管理数据库的计算机系统称为数据库管理系统(Database Management System, DBMS)

为什么DBMS那么重要

  • 多人共享数据
  • 提供操作大量数据所需的格式
  • 实现读写自动化不需要编程能力
  • 应对突发事故

DBMS的种类

  • 层次数据库(Hierarchical Database, HDB)
  • 关系数据库(Relational Database, RDB)
    • Oracle Database:甲骨文公司的RDBMS
    • SQL Server:微软公司的RDBMS
    • DB2:IBM公司的RDBMS
    • PostgreSQL: 开源的RDBMS
    • MySQL:开源的RDBMS
  • 面向对象数据库(Object Oriented Database, OODB)
  • XML数据库(XML Database, XMLDB)
  • 键值存储系统(Key-Value Store, KVS)

1-2 数据库的结构

RDBMS的常见系统结构

image

表的结构

image
image

关系数据库以行为单位读写数据,一个单元格中只能输入一个数据

1-3 SQL概要

标准SQL

国际标准化组织(ISO)为 SQL 制定了相应的标准,以此为基准的SQL 称为标准 SQL

SQL语句及其种类

  • DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表等对象。
    • CREATE: 创建数据库和表等对象
    • DROP: 删除数据库和表等对象
    • ALTER: 修改数据库和表等对象的结构
  • DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录。 DML 包含以下几种指令。
    • SELECT:查询表中的数据
    • INSERT:向表中插入新数据
    • UPDATE:更新表中的数据
    • DELETE:删除表中的数据
  • DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。 DCL 包含以下几种指令。
    • COMMIT: 确认对数据库中的数据进行的变更
    • ROLLBACK: 取消对数据库中的数据进行的变更
    • GRANT: 赋予用户操作权限
    • REVOKE: 取消用户的操作权限

SQL的基本书写规则

  • SQL语句要以分号( ;)结尾
  • SQL语句不区分大小写
  • 常数的书写方式是固定的
    • 字符串和日期常数需要使用单引号(')括起来。
    • 数字常数无需加注单引号(直接书写数字即可)。
  • 单词需要用半角空格或者换行来分隔

1-4 表的创建

表的内容的创建

数据库的创建(CREATE-DATABASE语句)

CREATE DATABASE <数据库名称>;

表的创建(CREATE-TABLE语句)

CREATE TABLE <表名>(
<列名1> <数据类型> <该列所需约束>,
<列名2> <数据类型> <该列所需约束>,
<列名3> <数据类型> <该列所需约束>,
<列名4> <数据类型> <该列所需约束>,
...

<该表的约束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型(CHARACTER):是用来指定存储字符串的列的数据类型(字符型)
  • VARCHAR型:同 CHAR 类型一样, VARCHAR 型也是用来指定存储字符串的列的数据类型(字符串类型),也可以通过括号内的数字来指定字符串的长度(最大长度)
  • DATE型:用来指定存储日期(年月日)的列的数据类型(日期型)。

约束的设置

约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能

1-5 表的删除和更新

表的删除(DROP-TABLE语句)

DROP TABLE <表名>;
DROP TABLE Product;

删除了的表是无法恢复的。

表定义的更新(ALTER-TABLE语句)

ALTER TABLE <表名> ADD COLUMN <列的定义>;
<!--添加一列可以存储100位的可变长字符串的product_name_pinyin列-->
ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);
<!--删除列的ALTER TABLE语句-->
ALTER TABLE <表名> DROP COLUMN <列名>;

表定义变更之后无法恢复。

向Product表中插入数据

-- DML :插入数据
START TRANSACTION;
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 Poduct to Product;

练习题

CREATE TABLE `Addressbook` (
`regist_no` int NOT NULL PRIMARY KEY COMMENT '注册编号',
`name` VARCHAR(128) NOT NULL COMMENT '姓名',
`address` VARCHAR(256) NOT NULL COMMENT '住址',
`tel_no` CHAR(10)  COMMENT '电话号码 ',
`mail_address` CHAR(20) COMMENT '邮箱地址'
)DEFAULT CHARSET=utf8;


ALTER TABLE `Addressbook` ADD COLUMN postal_code int(8) NOT NULL;

DROP TABLE `Addressbook`;

删除后的表无法使用命令进行恢复。使用CREATE TABLE语句再次创建所需的表

posted @ 2021-11-19 15:45  小沈曰  阅读(42)  评论(0编辑  收藏  举报