SQL001 数据库整理笔记 (1) 准备环境

105 阅读10分钟

1. 数据库基本介绍

1.1 数据的处理

UI --> 语言业务逻辑处理 --> 数据的存储(文件、数据库)

1.2 二维表的基本概念

  • 行:表格的横向
  • 列:表格的纵向
  • 表头:表格的第一行
  • 字段名:表格的的表头下第一行中的每个属性
  • 字段值:表格中对应第一行中的每个属性的值
  • 记录:表格中的一行中字段值的集合是一条记录。

1.3 数据库及概念

  • 数据(data):数据库中存储对象,饮食数字、文字、图片、声音、影像等。
  • 数据库(DataBase) 就是存储管理数据的仓库,其本质是一个文件系统, 还是以文件的方式,将数据保存在电脑上。
  • DBMS:是数据库管理系统,它是管理数据库的软件。
  • RDB:关系型数据库(基于二维表的数据库
  • RDBMS:关系型数据库管理系统。

1.4 常见的关系型数据库

  • Oracle(甲骨文) oracle10g/oracle12c/21c/23ai
  • DB2(IBM)
  • SqlServer(微软) SqlServer2005/SqlServer2008
  • MySql(sun -> 甲骨文)
存储方式优点缺点
内存速度快不能够永久保存,数据是临时状态
文件数据是可以永久保存的使用IO流操作文件, 不方便
数据库1.数据可以永久保存
2.方便存储和管理数据
3.使用统一的方式操作数据库 (SQL)
占用资源,有些数据库需要付费(比如Oracle数据

2. 操作数据库的语言SQL (结构化查询语句)

2.1 什么是SQL

  • 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库

    查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

  • SQL的作用

    • 是所有关系型数据库的统一查询规范,不同的关系型数据库都支持SQL
    • 所有的关系型数据库都可以使用SQL
    • 不同数据库之间的SQL 有一些区别
  • SQL的通用方法

    • SQL语句可以单行 或者 多行书写,以分号 结尾
    • 可以使用空格和缩进来增加语句的可读性。
    • SQL不区分大小写,一般关键字大写,数据库名 表名列名 小写。

2.2 SQL的分类

  • DQL: 查询语句
  • DDL: 数据定义语句
    • create drop alert
  • DML: 数据操作语句
    • insert delete update
  • TCL: 事务控制语句
    • commit rollback savepoint
  • DCL: 用于授权、回收、创建用户 (DBA使用,与程序员关系不大)
    • grant revoke create user

2.3 SQL注释

  • sql中使用 -- 注释内容 表示单行注释, 注意符号和文字之间有空格
  • /* 注释内容*/

mysql 有一个独有的单行注释 #

注意 SQL中使用 '/' 表示重新执行当前SQL环境中的上一条SQL语句 SQL> /

3. 如何使用服务器上的数据库

3.1 oracle数据库

  • 1.远程登录:telnet IP地址 终端会提示你使用户名和密码

  • 2.使用输入数据库主机的用户名和密码

  • 3.使用sqlplus进入SQL环境

    • 数据库用户
    • 数据库密码
  • 4、SQL环境中使用Unix/Linux指令 SQL> !命令 (如!clear)

3.2 mysql数据库

  • 远程登录

    • 使用远程主机的账号和密码
  • 使用mysql指令进入数据库

    • $: mysql -u 用户名 -p密码
  • 进入sql

3.3 准备学习的环境

  • 已经分别准好三张表来学习查询语句

3.3.1 mysql_init

-- MYSQL 创建地区表
DROP TABLE s_region;
CREATE TABLE s_region (
    id INT NOT NULL,
    NAME VARCHAR(50) NOT NULL,
    CONSTRAINT s_region_id_pk PRIMARY KEY (id),
    CONSTRAINT s_region_name_uk UNIQUE (NAME)
);

-- 插入地区数据
INSERT INTO s_region VALUES (
   1, 'North America');
INSERT INTO s_region VALUES (
   2, 'South America');
INSERT INTO s_region VALUES (
   3, 'Africa / Middle East');
INSERT INTO s_region VALUES (
   4, 'Asia');
INSERT INTO s_region VALUES (
   5, 'Europe');
 

-- MYSQL 创建部门表
DROP TABLE s_dept;
CREATE TABLE s_dept (
    id INT NOT NULL,
    NAME VARCHAR(25) NOT NULL,
    region_id INT,
    
    CONSTRAINT s_dept_id_pk PRIMARY KEY (id),
    CONSTRAINT s_dept_name_region_id_uk UNIQUE (NAME, region_id)
);


-- 插入12条数据
INSERT INTO s_dept VALUES (
   10, 'Finance', 1);
INSERT INTO s_dept VALUES (
   31, 'Sales', 1);
INSERT INTO s_dept VALUES (
   32, 'Sales', 2);
INSERT INTO s_dept VALUES (
   33, 'Sales', 3);
INSERT INTO s_dept VALUES (
   34, 'Sales', 4);
INSERT INTO s_dept VALUES (
   35, 'Sales', 5);
INSERT INTO s_dept VALUES (
   41, 'Operations', 1);
INSERT INTO s_dept VALUES (
   42, 'Operations', 2);
INSERT INTO s_dept VALUES (
   43, 'Operations', 3);
INSERT INTO s_dept VALUES (
   44, 'Operations', 4);
INSERT INTO s_dept VALUES (
   45, 'Operations', 5);
INSERT INTO s_dept VALUES (
   50, 'Administration', 1);
   
   
-- 创建员工表
DROP TABLE s_emp;
CREATE TABLE s_emp (
    id INT(7) NOT NULL,
    last_name VARCHAR(25) NOT NULL,
    first_name VARCHAR(25),
    userid VARCHAR(8),
    start_date DATE,
    comments VARCHAR(255),
    manager_id INT(7),
    title VARCHAR(25),
    dept_id INT(7),
    salary DECIMAL(11, 2),
    commission_pct DECIMAL(4, 2),
    
    CONSTRAINT s_emp_id_pk PRIMARY KEY (id),
    CONSTRAINT s_emp_userid_uk UNIQUE (userid),
    CONSTRAINT s_emp_commission_pct_ck CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20))
);
   
-- 插入25条数据

INSERT INTO s_emp VALUES (
  1, 'Velasquez', 'Carmen', 'cvelasqu',
  '1990-03-03 08:30:00', NULL, NULL, 'President',
  50, 2500, NULL);

INSERT INTO s_emp VALUES (
  2, 'Ngao', 'LaDoris', 'lngao',
  '1990-03-08', NULL, 1, 'VP, Operations',
  41, 1450, NULL);

INSERT INTO s_emp VALUES (
  3, 'Nagayama', 'Midori', 'mnagayam',
  '1991-06-17', NULL, 1, 'VP, Sales',
  31, 1400, NULL);

INSERT INTO s_emp VALUES (
  4, 'Quick-To-See', 'Mark', 'mquickto',
  '1990-04-07', NULL, 1, 'VP, Finance',
  10, 1450, NULL);

INSERT INTO s_emp VALUES (
  5, 'Ropeburn', 'Audry', 'aropebur',
  '1990-03-04', NULL, 1, 'VP, Administration',
  50, 1550, NULL);

INSERT INTO s_emp VALUES (
  6, 'Urguhart', 'Molly', 'murguhar',
  '1991-01-18', NULL, 2, 'Warehouse Manager',
  41, 1200, NULL);

INSERT INTO s_emp VALUES (
  7, 'Menchu', 'Roberta', 'rmenchu',
  '1990-05-14', NULL, 2, 'Warehouse Manager',
  42, 1250, NULL);

INSERT INTO s_emp VALUES (
  8, 'Biri', 'Ben', 'bbiri',
  '1990-04-07', NULL, 2, 'Warehouse Manager',
  43, 1100, NULL);

INSERT INTO s_emp VALUES (
  9, 'Catchpole', 'Antoinette', 'acatchpo',
  '1992-02-09', NULL, 2, 'Warehouse Manager',
  44, 1300, NULL);

INSERT INTO s_emp VALUES (
  10, 'Havel', 'Marta', 'mhavel',
  '1991-02-27', NULL, 2, 'Warehouse Manager',
  45, 1307, NULL);

INSERT INTO s_emp VALUES (
  11, 'Magee', 'Colin', 'cmagee',
  '1990-05-14', NULL, 3, 'Sales Representative',
  31, 1400, 10);

INSERT INTO s_emp VALUES (
  12, 'Giljum', 'Henry', 'hgiljum',
  '1992-01-18', NULL, 3, 'Sales Representative',
  32, 1490, 12.5);

INSERT INTO s_emp VALUES (
  13, 'Sedeghi', 'Yasmin', 'ysedeghi',
  '1991-02-18', NULL, 3, 'Sales Representative',
  33, 1515, 10);

INSERT INTO s_emp VALUES (
  14, 'Nguyen', 'Mai', 'mnguyen',
  '1992-01-22', NULL, 3, 'Sales Representative',
  34, 1525, 15);

INSERT INTO s_emp VALUES (
  15, 'Dumas', 'Andre', 'adumas',
  '1991-10-09', NULL, 3, 'Sales Representative',
  35, 1450, 17.5);

INSERT INTO s_emp VALUES (
  16, 'Maduro', 'Elena', 'emaduro',
  '1992-02-07', NULL, 6, 'Stock Clerk',
  41, 1400, NULL);

INSERT INTO s_emp VALUES (
  17, 'Smith', 'George', 'gsmith',
  '1990-03-08', NULL, 6, 'Stock Clerk',
  41, 940, NULL);

INSERT INTO s_emp VALUES (
  18, 'Nozaki', 'Akira', 'anozaki',
  '1991-02-09', NULL, 7, 'Stock Clerk',
  42, 1200, NULL);

INSERT INTO s_emp VALUES (
  19, 'Patel', 'Vikram', 'vpatel',
  '1991-08-06', NULL, 7, 'Stock Clerk',
  42, 795, NULL);

INSERT INTO s_emp VALUES (
  20, 'Newman', 'Chad', 'cnewman',
  '1991-07-21', NULL, 8, 'Stock Clerk',
  43, 750, NULL);

INSERT INTO s_emp VALUES (
  21, 'Markarian', 'Alexander', 'amarkari',
  '1991-05-26', NULL, 8, 'Stock Clerk',
  43, 850, NULL);

INSERT INTO s_emp VALUES (
  22, 'Chang', 'Eddie', 'echang',
  '1990-11-30', NULL, 9, 'Stock Clerk',
  44, 800, NULL);

INSERT INTO s_emp VALUES (
  23, 'Patel', 'Radha', 'rpatel',
  '1990-10-17', NULL, 9, 'Stock Clerk',
  34, 795, NULL);

INSERT INTO s_emp VALUES (
  24, 'Dancs', 'Bela', 'bdancs',
  '1991-03-17', NULL, 10, 'Stock Clerk',
  45, 860, NULL);

INSERT INTO s_emp VALUES (
  25, 'Schwartz', 'Sylvie', 'sschwart',
  '1991-05-09', NULL, 10, 'Stock Clerk',
  45, 1100, NULL);


3.3.2 oracle_init


-- oracle 创建地区表
DROP TABLE s_region;
CREATE TABLE s_region (
	id NUMBER(7) CONSTRAINT s_region_id_nn NOT NULL,
	NAME  VARCHAR2(50)
	CONSTRAINT s_region_name_nn NOT NULL,
	CONSTRAINT s_region_id_pk PRIMARY KEY (id),
	CONSTRAINT s_region_name_uk UNIQUE (NAME)
 );
 
-- 插入地区数据
INSERT INTO s_region VALUES (
   1, 'North America');
INSERT INTO s_region VALUES (
   2, 'South America');
INSERT INTO s_region VALUES (
   3, 'Africa / Middle East');
INSERT INTO s_region VALUES (
   4, 'Asia');
INSERT INTO s_region VALUES (
   5, 'Europe');
 


-- oracle 创建部门表
DROP TABLE s_dept;
CREATE TABLE s_dept (
	id NUMBER(7) CONSTRAINT s_dept_id_nn NOT NULL,
	NAME  VARCHAR2(25)
	CONSTRAINT s_dept_name_nn NOT NULL,
	region_id  NUMBER(7),
     
	CONSTRAINT s_dept_id_pk PRIMARY KEY (id),
	CONSTRAINT s_dept_name_region_id_uk UNIQUE (NAME, region_id)
);

-- 插入数据

INSERT INTO s_dept VALUES (
   10, 'Finance', 1);
INSERT INTO s_dept VALUES (
   31, 'Sales', 1);
INSERT INTO s_dept VALUES (
   32, 'Sales', 2);
INSERT INTO s_dept VALUES (
   33, 'Sales', 3);
INSERT INTO s_dept VALUES (
   34, 'Sales', 4);
INSERT INTO s_dept VALUES (
   35, 'Sales', 5);
INSERT INTO s_dept VALUES (
   41, 'Operations', 1);
INSERT INTO s_dept VALUES (
   42, 'Operations', 2);
INSERT INTO s_dept VALUES (
   43, 'Operations', 3);
INSERT INTO s_dept VALUES (
   44, 'Operations', 4);
INSERT INTO s_dept VALUES (
   45, 'Operations', 5);
INSERT INTO s_dept VALUES (
   50, 'Administration', 1);
   
   
   
-- 创建员工表
DROPT TABLE s_emp;
CREATE TABLE s_emp (
	id NUMBER(7) CONSTRAINT s_emp_id_nn NOT NULL,
	last_name VARCHAR2(25) CONSTRAINT s_emp_last_name_nn NOT NULL,
	first_name	VARCHAR2(25),
	userid		VARCHAR2(8),
	start_date                 DATE,
	comments                   VARCHAR2(255),
	manager_id                 NUMBER(7),
	title                      VARCHAR2(25),
	dept_id                    NUMBER(7),
	salary                     NUMBER(11, 2),
	commission_pct             NUMBER(4, 2),
     
	CONSTRAINT s_emp_id_pk PRIMARY KEY (id),
	CONSTRAINT s_emp_userid_uk UNIQUE (userid),
	CONSTRAINT s_emp_commission_pct_ck CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20))
 );   



INSERT INTO s_emp VALUES (
  1, 'Velasquez', 'Carmen', 'cvelasqu',
   to_date('03-MAR-90 8:30', 'dd-mon-yy hh24:mi'), NULL, NULL, 'President',
   50, 2500, NULL);
INSERT INTO s_emp VALUES (
   2, 'Ngao', 'LaDoris', 'lngao',
   '08-MAR-90', NULL, 1, 'VP, Operations',
   41, 1450, NULL);
INSERT INTO s_emp VALUES (
   3, 'Nagayama', 'Midori', 'mnagayam',
   '17-JUN-91', NULL, 1, 'VP, Sales',
   31, 1400, NULL);
INSERT INTO s_emp VALUES (
   4, 'Quick-To-See', 'Mark', 'mquickto',
   '07-APR-90', NULL, 1, 'VP, Finance',
   10, 1450, NULL);
INSERT INTO s_emp VALUES (
   5, 'Ropeburn', 'Audry', 'aropebur',
   '04-MAR-90', NULL, 1, 'VP, Administration',
   50, 1550, NULL);
INSERT INTO s_emp VALUES (
   6, 'Urguhart', 'Molly', 'murguhar',
   '18-JAN-91', NULL, 2, 'Warehouse Manager',
   41, 1200, NULL);
INSERT INTO s_emp VALUES (
   7, 'Menchu', 'Roberta', 'rmenchu',
   '14-MAY-90', NULL, 2, 'Warehouse Manager',
   42, 1250, NULL);
INSERT INTO s_emp VALUES (
   8, 'Biri', 'Ben', 'bbiri',
   '07-APR-90', NULL, 2, 'Warehouse Manager',
   43, 1100, NULL);
INSERT INTO s_emp VALUES (
   9, 'Catchpole', 'Antoinette', 'acatchpo',
   '09-FEB-92', NULL, 2, 'Warehouse Manager',
   44, 1300, NULL);
INSERT INTO s_emp VALUES (
   10, 'Havel', 'Marta', 'mhavel',
   '27-FEB-91', NULL, 2, 'Warehouse Manager',
   45, 1307, NULL);
INSERT INTO s_emp VALUES (
   11, 'Magee', 'Colin', 'cmagee',
   '14-MAY-90', NULL, 3, 'Sales Representative',
   31, 1400, 10);
INSERT INTO s_emp VALUES (
   12, 'Giljum', 'Henry', 'hgiljum',
   '18-JAN-92', NULL, 3, 'Sales Representative',
   32, 1490, 12.5);
INSERT INTO s_emp VALUES (
   13, 'Sedeghi', 'Yasmin', 'ysedeghi',
   '18-FEB-91', NULL, 3, 'Sales Representative',
   33, 1515, 10);
INSERT INTO s_emp VALUES (
   14, 'Nguyen', 'Mai', 'mnguyen',
   '22-JAN-92', NULL, 3, 'Sales Representative',
   34, 1525, 15);
INSERT INTO s_emp VALUES (
   15, 'Dumas', 'Andre', 'adumas',
   '09-OCT-91', NULL, 3, 'Sales Representative',
   35, 1450, 17.5);
INSERT INTO s_emp VALUES (
   16, 'Maduro', 'Elena', 'emaduro',
   '07-FEB-92', NULL, 6, 'Stock Clerk',
   41, 1400, NULL);
INSERT INTO s_emp VALUES (
   17, 'Smith', 'George', 'gsmith',
   '08-MAR-90', NULL, 6, 'Stock Clerk',
   41, 940, NULL);
INSERT INTO s_emp VALUES (
   18, 'Nozaki', 'Akira', 'anozaki',
   '09-FEB-91', NULL, 7, 'Stock Clerk',
   42, 1200, NULL);
INSERT INTO s_emp VALUES (
   19, 'Patel', 'Vikram', 'vpatel',
   '06-AUG-91', NULL, 7, 'Stock Clerk',
   42, 795, NULL);
INSERT INTO s_emp VALUES (
   20, 'Newman', 'Chad', 'cnewman',
   '21-JUL-91', NULL, 8, 'Stock Clerk',
   43, 750, NULL);
INSERT INTO s_emp VALUES (
   21, 'Markarian', 'Alexander', 'amarkari',
   '26-MAY-91', NULL, 8, 'Stock Clerk',
   43, 850, NULL);
INSERT INTO s_emp VALUES (
   22, 'Chang', 'Eddie', 'echang',
   '30-NOV-90', NULL, 9, 'Stock Clerk',
   44, 800, NULL);
INSERT INTO s_emp VALUES (
   23, 'Patel', 'Radha', 'rpatel',
   '17-OCT-90', NULL, 9, 'Stock Clerk',
   34, 795, NULL);
INSERT INTO s_emp VALUES (
   24, 'Dancs', 'Bela', 'bdancs',
   '17-MAR-91', NULL, 10, 'Stock Clerk',
   45, 860, NULL);
INSERT INTO s_emp VALUES (
   25, 'Schwartz', 'Sylvie', 'sschwart',
   '09-MAY-91', NULL, 10, 'Stock Clerk',
   45, 1100, NULL);