1-1 数据库是什么
一、我们身边的数据库
1、DB(Database):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合称为数据库。
2、用来管理数据库的计算机系统称为数据库管理系统(Database Management System,DBMS)。
二、为什么DBMS这么重要
DBMS能够实现多个用户可以同时安全简单的操作大量数据。
三、DBMS种类
1、层次数据库(Hierarchical Database,HDB)
2、关系数据库(Relational Database,RDB)
RDB采用由行和列组成的二维表来管理数据,同时还使用专门的SQL(Structured Query Language,结构化查询语言)对数据进行操作。
RDBMS:①Oracle Datebase ②SQL Server ③DB2 ④PostgerSQL(开源)⑤MySQL(开源)
3、面向对象数据库(Object Oriented Database,OODB)
4、XML数据库(XML Database,XMLDB)
5、键值存储系统(Key-Value Store,KVS)
1-2 数据库的结构
一、RDBMS的常见系统结构
最常见的系统结构是客户端/服务器类型(C/S类型)。
二、表的结构
1、用来管理数据库的二维表在关系数据库中简称表。
2、一个数据库中可以存储多个表。
根据 SQL 语句的内容返回的数据同样必须是二维表的形式
3、表的列(垂直方向)称为字段,它代表了保存在表中的数据项目。
表的行(水平方向)称为记录,它相当于一条数据。关系数据库必须以行为单位进行数据读写
行和列交汇的方格称为单元格。 一个单元格中只能输入一个数据。
1-3 SQL概要
一、标准SQL
学会标准SQL就可以在各种RDBMS中书写SQL语句了。
二、SQL语句及其种类
1、DDL
DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表等对象。
CREATER:创建数据库和表等对象;DROP:删除数据库和表等对象;
ALTER:修改数据库和表等对象的结构。
2、DML
DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录。
SELECT:查询表中的数据;INSERT:向表中插入新数据;UPDATE:更新表中的数据;
DELETE:删除表中的数据。
3、DCL
DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。
COMMIT:确认对数据库中的数据进行的变更;ROLLBACK:取消对数据库中的数据进行的变更; GRANT:赋予用户操作权限; REVOKE:取消用户的操作权限。
三、SQL的基本书写规则
1、SQL语句以分号( ;)结尾。
2、SQL不区分关键字的大小写;插入到表中的数据是区分大小写的。
3、字符串和日期常数需要使用单引号(')括起来。如:'abc'、'2019-02-17'
数字常数无需加注单引号(直接书写数字即可)。如:1000
4、单词之间需要使用半角空格或者换行符进行分隔。
1-4 表的创建
一、数据库的创建(CREATE DATABASE 语句)
书本中的PostgerSQL是利用语句来创建的,SQLServer2012中直接右击数据库---新建数据库shop。
二、表的创建(CREATE TABLE语句)
书本中的PostgerSQL是利用语句来创建的,SQLServer2012中直接点击数据库shop,然后右键点击表--新建表即可。
三、命名规则
1、数据库名称、表名和列名等可以使用以下三种字符。
● 半角英文字母 ● 半角数字 ● 下划线(_)
2、名称必须以半角英文字母开头。
3、名称不能重复。在同一个数据库中不能创建两个相同名称的表,在同一个表中也不能创建两个名称相同的列。
四、数据类型的指定
所有的列都必须指定数据类型,数据类型包括数字型、字符型和日期型等。
1、INTEGER型
用来指定存储整数的列的数据类型(数字型),不能存储小数。
2、CHAR型(定长字符串的形式存储)
CHAR 是 CHARACTER(字符)的缩写,是用来指定存储字符串的列的数据类型(字符型)。
CHAR(20)说明字符串的长度为20,如果输入的内容是'abc',后面空的内容用半角的空格填充。
3、VARCHAR型(可变长字符串的形式存储)
VARCHAR(8),如果输入的内容是'abc',存储的就是这个内容,后面不会用空格填充。
4、DATE型
用来指定存储日期(年月日)的列的数据类型(日期型)。
五、约束的设置
约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能。
如:NULL/NOT NULL。
PRIMARY KEY 主键,此列的内容可以唯一的识别该列。
创建Product表
Product表
1-5 表的删除和更新
一、表的删除(DROP TABLE语句)
删除了的表是无法恢复的。在执行DROP TABLE语句之前请务必仔细确认。
SQLServer2012中直接右击--删除即可。
二、表定义的更新(ALTER TABLE语句)
SQL Server添加列:
alter table Product add Product_name_pinyin Varchar(1000);
SQL Server删除列:
alter table Product drop column Product_name_pinyin;
SQL Server中添加列不用写column,删除的时候需要加column。
表定义变更之后无法恢复。在执行ALTER TABLE语句之前请务必考虑清楚。
三、向Produt表中插入数据
begin transaction
insert into Product values('0001','T恤衫','衣服',1000,500,'2009-09-20');
insert into Product values('0002','打孔器','办公用品',500,320,'2009-09-11');
insert into Product values('0003','运动T恤','衣服',4000,2800,'');
insert into Product values('0004','菜刀','厨房用具',3000,2800,'2009-09-20');
insert into Product values('0005','高压锅','厨房用具',6800,5000,'2009-01-15');
insert into Product values('0006','T叉子','厨房用具',500,NULL,'2009-09-20');
insert into Product values('0007','擦菜板','厨房用具',880,790,'2008-04-28');
insert into Product values('0008','圆珠笔','办公用品',100,NULL,'2009-11-11');
commit;
开头的 BEGIN TRANSACTION 语句是开始插入行的指令语句,结尾的 COMMIT 语句是确定插入行的指令语句。
上面语句中的begin transaction/commit,在SQLServer中可以不用。
Productid='0003'的那条记录,日期是null,第一遍写语句的时候直接''代替,查询的时候会发现,regist_date=1900-01-01即excel表中默认的日期。此时可以用Update语句进行更新一下:update product
set regist_date=NULL
where Product_id='0003';
如果插入一行数据:insert Product values('0009','笔记本','办公用品',20,10,'2009-12-20');
此时不需要了,可以用delete语句进行删除:
delete from product
where Product_id='0009';
四、更改数据库中的表名
sp_rename 'product','products';