1、数据库和SQL
1-1:数据库是什么
1、数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。
2、用来管理数据库的计算机系统称为数据库管里系统(DBMS)。
3、通过使用DBMS,多个用户可以安全、简单地操作大量数据。
4、关系型数据库通过关系型数据库管理系统(RDBMS)进行管理。
1-1-1:DBMS种类
1、层次型数据库(HDB),树型结构。
2、关系型数据库(RDB),应用最广的,采用二维表结构。
3、面向对象数据库(OODB)。
4、XML数据库(XMLDB)。
5、键值存储系统(KVS)。
1-2:数据库结构
1、RDBMS通常使用客户端/服务器这样的系统结构。
2、通过从客户端向服务器端发送SQL语句来实现数据库的读写操作。
3、关系数据库采用数据库表的二维表来管理数据。
4、数据库表由表示数据项目的列(字段)和表示一条数据的行(记录)所组成,以记录为单位进行数据读写。
5、将行和列交汇的方格称为单元格,每个单元格只能输入一个数据。
法则1-1:关系数据库以行为单位读写数据。
法则1-2:一个单元格只能输入一个数据。
1-3:SQL概要
1、SQL是为操作数据库而开发的语言。
2、虽然SQL也有标准,但实际上根据RDBMS的不同SQL也不尽相同。
3、SQL通过一条语句来描述想要进行的操作,发送给RDBMS。
4、原则上SQL语句都会使用分号结尾。
5、SQL根据操作目的可以分为DDL、DML和DCL。
法则1-3:学会标准的SQL就可以在各种RDBMS中书写SQL语句了。
1-3-1:SQL语句及其种类
1、DDL(数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表等对象,包括以下几种指令。
CREATE:创建数据库和表等对象
DROP:删除数据库和表等对象
ALTER:修改数据库和表等对象的结构
2、DML(数据操作语言)用来查询或者变更表中的记录,DML包含以下几种指令。
SELECT:查询表中的数据
INSERT:向表中插入新数据
UPDATE:变更表中的数据
DELETE:删除表中的数据
3、DCL(数据控制语言)用来确认或者取消对数据库中数据进行的变更,还可以对RDBMS的用户是否有权限操作数据库中的对象进行设定,DCL包含以下几种指令。
COMMIT:确认对数据库中的数据进行的变更
ROLLBACK:取消对数据库中的数据进行的变更
GRANT:赋予用户打操作权限
REVOKE:取消用户的操作权限
法则1-4:SQL根据功能不同可以分为三类,其中使用最多的是DML。
1-3-2:SQL的基本书写规则
法则1-5:SQL语句以分号(;)结尾。
法则1-6:SQL关键词不区分大小写,但建议大写。
法则1-7:SQL字符串和日期常数需要使用单引号('')括起来,数字常数直接书写。
法则1-8:SQL单词之间以空格或者换行进行分隔。
1-4:表的创建
1、表通过CREATE TABLE语句创建
2、表和列的命名要有意义
3、指定列的数据类型
4、可以在表中设置约束
1-4-1:数据库的创建
语法1-1:CREATE DATABASE <数据库名称>;
-- 创建数据库shop CREATE DATABASE shop;
1-4-2:表的创建
语法1-2:CREATE TABLE <表名>
(<列名1> <数据类型> <约束>,
<列名2> <数据类型> <约束>,
<列名3> <数据类型> <约束>,
<列名4> <数据类型> <约束>,
.......
<表的约束1><表的约束2>,.....);
-- 创建Shohin表 CREATE TABLE Shohin (shohin_id CHAR(4) NOT NULL, shohin_mei VARCHAR(100) NOT NULL, shohin_bunrui VARCHAR(32) NOT NULL, hanbai_tanka INTEGER, shiire_tanka INTEGER, torokubi DATE, PRIMARY KEY(shoin_id));
1-4-3:命名规则
法则1-9:数据库名称、表名和列名等使用英文字母、数字和下划线。
法则1-10:名称必须以字母开头。
法则1-11:名称不能重复。
1-4-4:数据类型的指定
1、INTEGER型:用来存储整数的列的数据类型,不能存小数。
2、CHAR型:用来存储指定长度的字符串的列的数据类型。定长是指字符串达不到最大长度时用空格补全。如CHAR(10),存'abc'会补7个空格,长度为10。
3、VARCHAR型:用来存储不定长度的字符串列的数据类型。不定长度是指字符串达不到最大长度时不会用空格补全。如VARCHAR(10),存'abc'不会补空格,长度为3。
4、DATE型:用来存日期(年月日)的列的数据类型。
1-4-5:约束的设置
1、NOT NULL不能为空
2、NULL可以为空
3、PRIMARY KEY(列名)主键
1-5:表的的删除和更新
1、使用DROP TABLE语句来删除表
2、使用ALTER TALBE语句向表中添加或从表中删除列
1-5-1:表的删除
语法1-3:DROP TABLE <表名>;
-- 删除Shohin表 DROP TABLE Shohin;
法则1-12:删除的表是无法恢复的,执行DROP TABLE语句前必须仔细确认。
1-5-2:表的更新
1、添加列
语法1-4:ALTER TABLE <表名> ADD COLUMN <列的定义>;
-- 添加100位可变长度字符串的shohin_mei_kana列 -- MySQL ALTER TABLE Shohin ADD COLUMN shohin_mei_kana VARCHAR(100); -- Oracle ALTER TABLE Shohin ADD(shohin_mei_kana VARCHAR(100));
2、删除列
语法1-5:ALTER TABLE <表名> DROP COLUMN <列名>;
1 -- Mysql 2 ALTER TABLE Shohin DROP COLUMN shohin_mei_kana; 3 4 -- Oracle 5 ALTER TABLE Shohin DROP (shohin_mei_kana);
法则1-12:删除的列是无法恢复的,执行ALTER TABLE语句前必须仔细确认。
1-6:向Shohin表中插入数据
-- SQL Server PostgreSQL BEGIN TRANSACTION-- START TRANSACTION; 使用Mysql -- Oracle 什么都不用 INSERT INTO Shohin VALUES('0001','T恤衫','衣服',1000,500,'2009-09-20'); INSERT INTO Shohin VALUES('0002','打孔器','办公用品',500,320,'2009-09-11'); INSERT INTO Shohin VALUES('0003','运动T恤','衣服',4000,2800,NULL); INSERT INTO Shohin VALUES('0004','菜刀','厨房用具',3000,2800,'2009-09-20'); INSERT INTO Shohin VALUES('0005','高压锅','厨房用具',6800,5000,'2009-01-15'); INSERT INTO Shohin VALUES('0006','叉子','厨房用具',500,NULL,'2009-09-20'); INSERT INTO Shohin VALUES('0007','擦菜板','厨房用具',880,790,'2008-04-28'); INSERT INTO Shohin VALUES('0008','圆珠笔','办公用品',100,NULL,'2009-11-11'); COMMIT;
1-7:表名修改
-- Mysql RENAME TABLE Sohin to Shohin; -- SQL Server sp_rename 'Sohin', 'Shohin'; -- DB2 RENAME TABLE Sohin TO Shohin; -- Oracle ALTER TABLE Sohin RENAME TO Shohin;