初识数据库

本文参考于 DataWhale 教程:
https://github.com/datawhalechina/wonderful-sql

初识数据库

数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。该数据集合称为数据库(Database,DB)。用来管理数据库的计算机系统称为数据库管理系统(Database Management System,DBMS)。

在这里插入图片描述

  • 层次数据库:该数据库系统最早使用的一种模型,它的数据结构是一棵“有向树”。根结点在最上端,层次最高,子结点在下,逐层排列。

  • 关系数据库:该数据库系统把数据看作是一个二维表格,任何数据都可以通过行号 + 列号来唯一确定,它的数据模型看起来就是一个 Excel 表。

    常见的关系数据库管理系统有 Mysql、SQL Server、Oracle、DB2、PostgreSQL 等等。

  • 面向对象数据库:该数据库系统是基于面向对象编程语言 (OOP) 的数据库,其数据都是以对象/类的形式表示并存储在面向对象数据库。

  • XML数据库:该数据库系统是支持对XML格式文档进行存储和查询等操作的数据管理系统。

  • 键值存储系统:该数据库系统支持获取摸个范围内的数值,求交、并、补集。代表有Redis。

RDBMS 主要是 C/S 类型,如下图

在这里插入图片描述

使用 Navicat 连接数据库

效果如下:

在这里插入图片描述

SQL 语法规范:

  1. MySQL本身不区分大小写,但强烈要求关键字大写,表名、列名用小写;
  2. 创建表时,使用统一的、描述性强的字段命名规则保证字段名是独一无二且不是保留字的,不要使用连续的下划线,不用下划线结尾;最好以字母开头
  3. 关键字右对齐,且不同层级的用空格或缩进控制,使其区分开,见样例二;
  4. 列名少的时候写在一行里无伤大雅;多的时候以及涉及到CASE WHEN 或者聚合计算的时候,建议分行写;个人习惯是逗号在列名前面,方便之后删除某些列,放列名后亦可;
  5. 表别名和列别名尽量用有具体含义的词组,不要用a b c,不然以后review的时候会非常痛苦;
  6. 运算符前后都加一个空格;
  7. 当用到多个表时,请在所有列名前写上引用的表别名,不要嫌麻烦;
  8. 每条命令用分号结尾;
  9. 养成随手写注释的习惯

参考:
SQL编程风格

SQL Style Guide

SQL 基本语法

数据库的创建

语法:

CREATE DATABASE shop;

表的创建

现在我们创建 product 表,语句如下:

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));

在这里插入图片描述

数据类型

定义字段需要定义的类型,常见有 4 种数据类型,如下:

  • INTEGER 型

  • CHAR 型

  • VARCHAR 型

  • DATE 型

表的更新和删除

修改表只需要用 alter 关键字就行,以下有新增列和删除列两句 sql 语句:

ALTER TABLE product ADD COLUMN product_name_pinyin VARCHAR(100);
ALTER TABLE product DROP COLUMN product_name_pinyin;

现在我们删除之前创建的表,语句如下:

DROP TABLE product;

注意:

需要特别注意的是,删除的表是无法恢复的,只能重新插入。
ALTER TABLE 语句和 DROP TABLE 语句一样,执行之后无法恢复。误添加的列可以通过 ALTER TABLE 语句删除,或者将表全部删除之后重新再创建。

  • 清空表内容
TRUNCATE TABLE TABLE_NAME;

索引

  • 索引的作用

MySQL 索引的建立对于 MySQL 的高效运行是很重要的,索引可以大大提高 MySQL 的检索速度。

  • 创建索引
-- 方法1
CREATE INDEX indexName ON table_name (column_name)

-- 方法2
ALTER table tableName ADD INDEX indexName(columnName)

练习题

1.1
编写一条 CREATE TABLE 语句,用来创建一个包含表 1-A 中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束

表1-A 表 Addressbook (地址簿)中的列

在这里插入图片描述

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
假设在创建练习1.1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请编写 SQL 把此列添加到 Addressbook 表中。

列名 : postal_code

数据类型 :定长字符串类型(长度为 8)

约束 :不能为 NULL

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

1.3 填空题

请补充如下 SQL 语句来删除 Addressbook 表。

(Drop) table Addressbook;

1.4 判断题

是否可以编写 SQL 语句来恢复删除掉的 Addressbook 表?
答:不能,除非用辅助工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值