SQL基础篇1(MICK)

Posted evian-jeff

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL基础篇1(MICK)相关的知识,希望对你有一定的参考价值。

数据库和SQL

C:\PostgreSQL\9.5\bin\psql.exe -U postgres -d shop

数据库的基本概念

数据库(DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合
数据库管理系统(DBMS):用来管理数据库的计算机系统
DBMS的重要性:(文本文件和电子表格无法做到)

  • 无法多人共享数据
  • 无法提供操作大量数据所需的格式
  • 实现读写自动化需要编程能力
  • 无法应对突发事故
    DBMS的种类
  • 层次数据库:Hierarchical DB
  • 关系数据库:Relational DB 使用SQL(Structured Query Language)查询
    • 关系数据库管理系统:Relational Database Management System
      • Oracle
      • SQL Server
      • DB2
      • Postgresql
      • mysql
  • 面向对象数据库:Object Oriented DB
  • XML数据库:XMLDB
  • 键值存储系统:Key_Value Store

    数据库的结构

    RDBMS的常见系统结构
    客户端、服务器,客户端通过SQL调用数据
    表的结构
  • 表:由行列组成的二维表
  • 根据SQL语句的内容返回的数据必须是二维表的形式
  • 字段、记录 关系数据库以行为单位进行数据读写
  • 列(垂直方向)和行(水平方向)交叉的方格称为单元格,一个单元格中只能输入一个数据

    SQL概要

  • SQL是用来操作关系数据库的语言
  • SQL语句的种类
    • DDL(Data Definition Language) 用来创建或删除存储数据用的数据库以及数据库中的表等对象
      • CREATE:创建数据库和数据表
      • DROP:删除数据库和数据表
      • ALTER:修改数据库和表的结构
    • DML(Data Manipulation Language) 用来查询或者变更表中的记录
      • SELECT:查询表中的数据
      • INSERT:向表中插入新数据
      • UPDATE:更新表中的数据
      • DELETE:删除表中的数据
    • DCL(Data Control Language) 用来确认或者取消对数据库中的数据进行的变更
      • COMMIT:确认对数据库中的数据进行的变更
      • ROLLBACK:取消对数据库中的数据进行的变更
      • GRANT:赋予用户操作权限
      • REVOKE:取消用户的操作权限
  • SQL的基本书写规则
    • SQL语句要以分号(;)结尾 一个SQL语句可以描述一个数据库操作
    • SQL语句不区分大小写 为便于理解 统一规则
      • 关键字大写
      • 表名的首字母大写
      • 列名小写
      • 插入到数据表中的数据是区分大小写的,在单元格里Computer、COMPUTER、computer是不一样的
    • 常数的书写方式是固定的
      • 日期需要单引号括起来 建议统一‘2010-01-26‘格式
      • 数字常数无需加注单引号
      • 单词需要用半角空格或者换行来分隔

        表的创建

  • 数据库的创建
CREATE DATABASE <数据库名>;
CREATE DATABASE shop;
  • 表的创建
CREATE TABLE <表名>
                    (<列名1><数据类型><该列的约束>
                     <列名2><数据类型><该列的约束>
                     <列名3><数据类型><该列的约束>
                     ...
                     <该表的约束1><该表的约束2>);
CREATE TABLE Product
                     (product_id CHAR(4) NOT NULL,
                      product_name VARCHAR(10) NOT NULL,
                      product_type VARCHAR(32) NOT NULL,
                      sale_price INTEGER ,
                      purchase_price INTEGER ,
                      regist_date DATE ,
                      PRIMARY KEY (product_id)
                     );  --Postgresql通过 \dt来查看数据库里的表 \dt <表名>来查看表的定义
  • 命名规则
    • 只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称
    • 名称必须以半角英文字母开头
    • 同一个数据库中不能创建两个相同名称的表
  • 数据类型
    • 所有的列都必须指定数据类型
      数据类型表示数据的种类,包括数字型、字符型和日期型 - INTEGER 用来存储整数,不能存储小数
      • CHAR 用来指定存储字符串 定长字符串 区分大小写
      • VARCHAR 用来指定存储字符串 可变字符串 区分大小写 -- Oracle中使用VARCHAR2
      • DATE 用来指定存储日期
  • 约束的设置:除了数据类型外,对列中存储的数据进行限制或追加条件的功能
    • NOT NULL 非空
    • PRIMARY KEY 主键(非空不重复)

      表的删除和更新

  • 表的删除
     DROP TABLE <表名>;
     DROP TABLE <Product>; --无法恢复           
  • 表的更新
  1. 增加列
ALTER TABLE <表名> ADD COLUMN <列名>;
-- Oracle和MS SQL 可以不写COLUMN
-- Oracle添加多列:ALTER TABLE <表名> ADD (<列名1>,<列名2>,...);
  1. 删除列
ALTER TABLE <表名> DROP COLUMN <列名>;
-- Oracle不用写COLUMN
-- Oracle删除多列:ALTER TABLE <表名> DROP (<列名1>,<列名2>,...); --无法恢复
  1. 向表中插入数据
-- DML:插入数据
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,NULL);
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','叉子','厨房用具',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;  
-- MySQL改为:START TRANSACTION -- Oracle和DB2中不用BEGIN TRANSACTION
  1. 表名的修改
ALTER TABLE Poduct RENAME TO Product; -- Oracle/PostgreSQL
RENAME TABLE Poduct TO Product; -- DB2:
sp_rename 'Poduct','Product'; -- SQL SEVER:
RENAME TABLE Poduct TO Product; --MySQL:

以上是关于SQL基础篇1(MICK)的主要内容,如果未能解决你的问题,请参考以下文章

SQL基础教程的内容简介

Oracle PL/SQL学习之基础篇

SQL简单使用-进阶篇

sql基础篇

SQL必知必会|SQL基础篇

SQL书籍推荐