SQL基础教程第一章笔记

三世轮回 提交于 2020-02-13 22:37:16

第一章 数据库和SQL

1.1 数据库

       数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。

       用来管理数据库的计算机系统统称为数据库管理系统(DBMS)

       DBMS在现阶段主要有5种:层次型数据库(Hierarchical Database, HDB),关系型数据库(Relational Database,RDB),面向对象数据库(Object Oriented Database,OODB),XML数据库(XML Database,XMLDB),键值存储系统(Key-value Store,KVS)

 

1.2 数据库结构

1.2.1 RDBMS最常见的结构是客户端/服务器(C/S类型)

1.2.2 表的结构

          根据SQL语句的内容返回的数据,必须是二维表的形式。

          表的列称为字段,代表了保存在表中的数据项目。

          表的行成为记录,相当于一条数据。

          行列交汇处称为单元格,一个单元格只能输入一个数据。

1.3 SQL概要

1.3.1 SQL是为了操作数据库而开发的语言

1.3.2 SQL语言的种类可分为三种:DDL(Data Definition Language,数据定义语言),DML(Data Manipulation Language,数据操作语言),DCL(Data Control Language,数据控制语言)

          DDL: CREATE(创建数据库和表等对象),DROP(删除数据库和表等对象),ALTER(修改数据库和表等对象结构)

          DML:SELECT(查询表中数据),INSERT(向表中插入新的数据),UPDATE(变更表中的数据),DELETE(删除表中的数据)       --->  使用最多

          DCL:COMMIT(确认对数据库中的数据进行变更),POLLBACK(取消对数据库中的数据进行变更),CRANT(赋予用户操作权限),REMOVE(取消用户操作权限)

1.3.3 SQL的基本书写规则

          SQL语句要以分号(;)结尾

          SQL语句不区分大小写(本文规则:关键字大写,表名的首个字大写,其余(列名等)小写),但是插入到表中的数据是区分大小写的。

          常数的书写方式是固定的:字符串和日期常数需要使用单引号(')括起来;数字常数无需加注单引号(直接书写数字即可)

           SQL语句的单词之间需要使用半角空格或换行符来进行分隔

 

1.4 表的创建

1.4.1 表的内容的创建

1.4.2 数据库的创建

代码1.语法规则及例子  

CREATE DATABASE <数据库名称>

eg.

CREATE DATABASE shop

1.4.3 表的创建

代码2.语法规则

CREATE TABLE <表名>
(<列名1> <数据类型> <该列所需约束>
<列名2> <数据类型> <该列所需约束>
<列名3> <数据类型> <该列所需约束>
<列名4> <数据类型> <该列所需约束>)

1.4.4 命名规则

       只能使用半角英文字母,数字,下划线作为数据库,表和列的名称,名称必须以半角英文字母开头

       名称不能重复

1.4.5 数据类型的指定

        四种数据类型:INTEGERZ(整数型),CHAR(字符型),VARCHAR(字符串),DATE(日期)

        区分CHAR和VARCHAR:CHAR是字符串以定长字符串的形式存储,而VARCHAR是指以可变长字符串的形式存储

1.4.6 约束的设置

        约束是除了数据类型外,对列中存储的数据进行限制或者追加条件的功能。

代码3.NOT NULL 是指不能输入空白,也就是必须输入的约束

PRIMARY KEY (shohin_id)

   上面这条语句是给shohid_id列设定主键约束的。所谓的键值,就是在指定特定数据时所使用的列组合。主键就是可以特定一行数据的列。也就是说,如果把shohid_id列为主键,就可以通过该列取出特定的商品数据了。

1.5 表的删除和更新

1.5.1 表的删除(DROP TABLE语句)

代码4.删除表时所用的语句及案例

DROP TABLE <表名>;

eg.
DROP TABLE Shohin;

       删除了的表是无法恢复的

       在执行DROP TABLE语句之前请务必仔细确认

1.5.2 表定义的更新(ALTER TABLE语句)

        ALTER语句应用于在创建表后发现表少了几列这种情况

               

代码5.添加列时所使用的语法

ALTER TABLE <表名> ADD COLUMN <列定义>;

              

代码6.特定的SQL,Oracle和SQL Server中不用写COLUMN

ALTER TABLE <表名> ADD <列名>;

          

代码7. 另外,在Oracle中同时添加多列的时候可以使用像下面这样的括号

ALTER TABLE  <表名> ADD (<列名>,<列名>,<列名>,.......);

     

代码8.添加一列可以存储100位可变长度字符串的shohin_mei_kana列

--DB2 PostgreSQL MySQL

ALTER TABLE Shohin ADD COLUMN shohin_mei_kana VARCHAR(100);

--Oracle

ALTER TABLE Shohin ADD (Shohin_mei_kana VARCHAR2(100));

--SQL Server

ALTER TABLE Shohin ADD shohin_mei_kana VARCHAR(100);

  

代码9.删除时ALTER TABLE语句

ALTER TABLE <表名> DROP COLUMN <列名>;

  

代码10.在Oracle和SQL Server中不用写COLUMN

ALTER TABLE <表名> DROP <列名>;

  

代码11.在Oracle中同时删除多列的时候,可以像下面这样是用括号来实现

ALTER TABLE <表名> DROP (<列名>,<列名>,<列名>,......);

  

代码12.删除shohin_mei_kana列

--SQL Server DB2 PostgreSQL MySQL

ALTER TABLE Shohin DROP COLUMN shohin_mei_kana;

--Oracle

ALTER TABLE Shohin DROP  (shohin_mei_kana);

 

1.5.3 向Shohin表中插入数据

代码13.向Shohin表中插入数据的SQL语句

--SQL Server、PostgreSQL

--DML:插入数据

BEGIN TRANSACTION;

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.1 代码

CREATE TABLE Jyushoroku
( toroku_bangu INTEGER NOT NULL,
  name VARCHAR(128) NOT NULL,
  jyusho VARCHAR(256) NOT NULL,
  tel_no CHAR(10),
  mail_address CHAR(20), 
 PRIMARY KEY (toroku_bangu) );

 输出结果:

 

1.2 代码

--PostgreSQL、MySQL

ALTER TABLE Jyushoroku ADD COLUMN yubin_bango CHAR(8) NOT NULL;

--Oracle

ALTER TABLE Jyushoroku ADD (yubin_bango   CHAR(8))  NOT NULL;

--SQL Server

ALTER TABLE Jyushoroku ADD yubin_bango CHAR(8) NOT NULL;

  

 输出结果:

 

1.3 代码

DROP TABLE Jyushoroku;

  

 1.4 代码(DROP TABLE 后是无法恢复的,只能按照1.1 代码重建)

CREATE TABLE Jyushoroku
( toroku_bangu INTEGER NOT NULL,
  name VARCHAR(128) NOT NULL,
  jyusho VARCHAR(256) NOT NULL,
  tel_no CHAR(10),
  mail_address CHAR(20), 
 PRIMARY KEY (toroku_bangu) );

  

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!