TASK01 初识数据库
初识数据库
数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。该数据集合称为数据库(Database,DB)。用来管理数据库的计算机系统称为数据库管理系统(Database Management System,DBMS)。
我们学习的主要是关系数据库管理即RDBMS(R指Rational),最常见的系统结构就是客户端 / 服务器类型(C/S类型)
初识SQL
DDL(Data Definition Language,数据定义语言)
操作对象:库和表
1.CREATE : 创建数据库和表等对象
注意区分CHAR 型和VARCHAR 型;
PRIMARY KEY是主键约束,代表该列是唯一值,可以通过该列取出特定的行的数据。
可以设置默认值如default 0
2.DROP : 删除数据库和表等对象
3.ALTER : 修改数据库和表等对象的结构
不可逆,删除后需要重新建立
ALTER TABLE 语句和 DROP TABLE 语句
快速清除表内容:相比drop和delete,truncate用来清除数据时,速度最快。
DML(Data Manipulation Language,数据操纵语言)
操作对象:数据
1.UPDATE : 更新数据
UPDATE product
SET sale_price = sale_price * 10,
purchase_price = purchase_price / 2
WHERE product_type = '厨房用具';
2.INSERT : 插入数据
-- 包含列清单
INSERT INTO ProductIns (product_id, product_name, product_type,
sale_price, purchase_price, regist_date)
VALUES ('0005', '高压锅',
'厨房用具', 6800, 5000, '2009-01-15');
-- 省略列清单
INSERT INTO ProductIns
VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
复制其他表格来插入:
INSERT INTO ProductCopy (product_id, product_name, product_type, sale_price, purchase_price, regist_date)
SELECT product_id, product_name, product_type, sale_price,
purchase_price, regist_date
FROM Product;
DCL(Data Control Language,数据控制语言)
COMMIT : 确认对数据库中的数据进行的变更
ROLLBACK : 取消对数据库中的数据进行的变更
GRANT : 赋予用户操作权限
REVOKE : 取消用户的操作权限
- DML :插入数据,COMMIT的例子
STARTTRANSACTION;
INSERT INTO product VALUES('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
INSERT INTO product VALUES('0008', '圆珠笔', '办公用品', 100, NULL, '2009-11-11');
COMMIT;
练习1~4
建表
编写一条 CREATE TABLE 语句,用来创建一个包含表 1-A 中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束
CREATE TABLE Addressbook
(regist_no INTEGER NOT NULL,
na_me VARCHAR(128) NOT NULL,
address VARCHAR(256) NOT NULL,
tel_no CHAR(10),
mail_address CHAR(20),
PRIMARY KEY (regist_no));
添加列
假设在创建练习1.1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请把此列添加到 Addressbook 表中。
列名 : postal_code
数据类型 :定长字符串类型(长度为 8)
约束 :不能为 NULL
ALTER TABLE Addressbook ADD COLUMN postal_code CHAR(8) NOT NULL;
删表
DROP TABLE Addressbook;
恢复删掉的表
删除不可逆,只能重新建表,注意和第一步不一样,要添加多一列
CREATE TABLE Addressbook
(regist_no INTEGER NOT NULL,
na_me 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));