数据库与数据管理系统
本笔记为阿里云天池龙珠计划SQL训练营的学习内容
数据库
数据库是数据集合的一个仓库,方便统一管理与使用。
数据库分为关系型数据库与非关系型数据库。
关系型数据库最为常见,本人现阶段学习的内容就是关系型数据库的sql语法。
DBMS:数据库管理系统
数据库管理系统,顾名思义,用来管理数据库的系统。
常见的RDBMS(relation database manager system)有以下几种:
- oracle database(甲骨文)
- sql server(微软)
- mysql
- DB2
数据库安装
以mysql为例
- 阿里云mysql服务器教程
- 本地mysql教程
1.1 到阿里云mysql服务器购买
1.2 到控制台配置用户
1.3 登陆管理,界面如下,详细教程查看阿里云相关文档
2.1 官网下载mysql,下载地址
2.2 安装教程,自行百度,现在下载的版本和以前安装方式有变,最好找最新的安装教程。
SQL 基本概况
主要语法
- DDL:数据定义语言
- DML:数据管理语言
- DCL:数据控制语言
DDL:create,alter,drop…
DML:select,insert,update,delete
DCL:commit,rollback,grant,revoke
书写规则
- SQL语句要以分号( ; )结尾
- SQL 不区分关键字的大小写,但是插入到表中的数据是区分大小写的
- win系统默认不区分表名及字段名的大小写
- linux / mac 默认严格区分表名及字段名的大小写
创建数据库 create
CREATE DATABASE shop; # 创建shop数据库
创建表create
DROP TABLE IF EXISTS product_1;
CREATE TABLE product_1(
product_id char(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INT,
purchase_price INT,
regist_date DATE,
PRIMARY KEY(product_id)
);
删除表
DROP TABLE product_1
添加列
ALTER TABLE product_1 ADD COLUMN product_name_pinyin VARCHAR(100);
删除列
ALTER TABLE product_1 DROP COLUMN product_name_pinyin;
清空表
TRUNCATE TABLE product_1;
truncate和drop的区别是,truncate只删除内容,保留表结构,即保留表名字段名索引等表结构,而drop是完完全全将表删除掉.
更新
UPDATE product_1
SET sale_price = sale_price * 10,
purchase_price = purchase_price / 2
WHERE product_type = '厨房用具';
插入
部分字段插入
INSERT INTO product_1(product_id,product_name,product_type)
VALUES('0005','高压锅','厨房用具');
全字段插入
INSERT INTO product_1
VALUES('0005','高压锅','厨房用具',6800,5000,'2009-01-15');
多行插入
INSERT INTO product_1 VALUES ('0002', '打孔器',
'办公用品', 500, 320, '2009-09-11'),
('0003', '运动T恤', '衣服', 4000, 2800, NULL),
('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
实战
3.1
DROP TABLE IF EXISTS Addressbook;
CREATE TABLE Addressbook(
regist_no INT NOT NULL,
name VARCHAR(128) NOT NULL,
address VARCHAR(256) NOT NULL,
tel_no CHAR(10),
mail_address CHAR(20),
PRIMARY KEY(regist_no));
3.2
假设在创建练习3.1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请把此列添加到
Addressbook 表中。列名 : postal_code
数据类型 :定长字符串类型(长度为 8)
约束 :不能为 NULL
ALTER TABLE addressbook ADD COLUMN postal_code CHAR(8) NOT NULL;
3.3
编写 SQL 语句来删除 Addressbook 表。
TRUNCATE TABLE Addressbook
3.4
编写 SQL 语句来恢复删除掉的 Addressbook 表。
解析:删除掉的表无法恢复,只能通过重写语句.
3.1语句+3.2字段
DROP TABLE IF EXISTS Addressbook;
CREATE TABLE Addressbook(
regist_no INT NOT NULL,
name VARCHAR(128) NOT NULL,
address VARCHAR(256) NOT NULL,
tel_no CHAR(10),
mail_address CHAR(20),
postal_code CHAR(8) NOT NULL,
PRIMARY KEY(regist_no));