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
- 关系数据库管理系统:Relational Database Management System
- 面向对象数据库: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:取消用户的操作权限
- DDL(Data Definition Language) 用来创建或删除存储数据用的数据库以及数据库中的表等对象
- 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>; --无法恢复
- 表的更新
- 增加列
ALTER TABLE <表名> ADD COLUMN <列名>;
-- Oracle和MS SQL 可以不写COLUMN
-- Oracle添加多列:ALTER TABLE <表名> ADD (<列名1>,<列名2>,...);
- 删除列
ALTER TABLE <表名> DROP COLUMN <列名>;
-- Oracle不用写COLUMN
-- Oracle删除多列:ALTER TABLE <表名> DROP (<列名1>,<列名2>,...); --无法恢复
- 向表中插入数据
-- 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
- 表名的修改
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)的主要内容,如果未能解决你的问题,请参考以下文章