阿里云天池——SQL训练计划_task1

@wheaesong

2020-2-13

1 数据库简介

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

1.1 DBMS的种类
DBMS 主要通过数据的保存格式(数据库的种类)来进行分类,现阶段主要有以下 5 种类型.

层次数据库(Hierarchical Database,HDB)
关系数据库(Relational Database,RDB)
这种类型的 DBMS 称为关系数据库管理系统(Relational Database Management System,RDBMS)。比较具有代表性的 RDBMS 有如下 5 种。

  • 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),举例:MongoDB redis
    数据库具有很好的兼容性,我主要使用的是centos从的云服务器,以及日常使用的ubuntu,windows也有使用,只是用到的地方比较少,跟多只是用来javeEE的测试用。
    因为接触数据库的时间也不短,有系统的学习过Oracle和mysql,也在课余自学过非关系型数据库Mongodb和redis,所以数据库的安装也算是比较熟练,在这里就没有记录。
    1.2 sql语言
    SQL数据库语言有国际标准,但每个数据库都有差异,比如Oracle中有varchar2类型,而mysql中就没有类似的定义。这只是其中很小的一部分差异。相比mysql,Oracle更多的用在安全性能要求更高的企业或银行等方面,但其实日常的使用的话,msyql运用的更为广泛。
    根据对 RDBMS 赋予的指令种类的不同,SQL 语句可以分为以下三类.

DDL
DDL(Data Definition Language,数据定义语言) 用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL 包含以下几种指令。

CREATE : 创建数据库和表等对象

DROP : 删除数据库和表等对象

ALTER : 修改数据库和表等对象的结构

DML
DML(Data Manipulation Language,数据操纵语言) 用来查询或者变更表中的记录。DML 包含以下几种指令。

SELECT :查询表中的数据

INSERT :向表中插入新数据

UPDATE :更新表中的数据

DELETE :删除表中的数据

DCL
DCL(Data Control Language,数据控制语言) 用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL 包含以下几种指令。

COMMIT : 确认对数据库中的数据进行的变更

ROLLBACK : 取消对数据库中的数据进行的变更

GRANT : 赋予用户操作权限

REVOKE : 取消用户的操作权限

实际使用的 SQL 语句当中有 90% 属于 DML,本课程会以 DML 为中心进行讲解。

SQL的基本书写规则
SQL语句要以分号( ; )结尾
SQL 不区分关键字的大小写,但是插入到表中的数据是区分大小写的
win 系统默认不区分表名及字段名的大小写
linux / mac 默认严格区分表名及字段名的大小写
常数的书写方式是固定的

2 打卡作业

打卡作业要求:

阿里云天池——SQL训练计划_task1_第1张图片

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

代码实现:
create table addressbook(
regist_no integer(20) not noll primary key,
name varchar(128) not null,
address varchar(256) not null,
tel_no char(10),
mail_address char(20)
);

3.2
假设在创建练习1.1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请把此列添加到 Addressbook 表中。

列名 : postal_code

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

约束 :不能为 NULL

代码实现
--语法规则: 
ALTER TABLE < 表名 > ADD COLUMN < 列的定义 >;
--代码实现:
alter table addressbook add column postal_code char(8) not null;

3.3
编写 SQL 语句来删除 Addressbook 表。

--删除表的语法:
DROP TABLE < 表名 > ;
--代码实现
drop table addressbook;

3.4
编写 SQL 语句来恢复删除掉的 Addressbook 表。

--备份
mysqldump -uroot -p111111 -B drop_test >drop_test.sql
--恢复
/*执行命令*/ 转换binlog日志为sql
mysqlbinlog -d drop_test mysql-bin.000001 >001bin.sql

你可能感兴趣的:(mysql)