SQL教程 注:所使用的练习表为oralce数据库scot用户下的bonus,dept,emp,salgrade四张表。 教程准备条件: 1.如果您的机器上有安装oralce,请使用scot/iger进入oracle进行学习 2.如果您的机器上没有安装oralce,那么可以使用 oralce_.scot_export_mysql.sql文件,在mysql中执行文件中的sql语句,创建练 习的bonus,dept,emp,salgrade四张表。 SQL全名是结构化查询语言(Structured Query Language),是用于数据 中的标准数据查询语言,BM公可最早使用在其开发的数据库系统中。1986年10 月,关国ANS!对SQL进行规范后,以此作为关系式数据库管理系统的标准语言 (ANSX3.135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各 种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以, 实际上不同数据库系统之间的SQL语言不能完全相互通用。 SQL语言包含4个部分: 米数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句, ※数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE (利除)要毁器9A :SELECT语句。 苏数馨营署续技验类期Y:等是文语言D0心,数 据操作语言(DM及数据控制语言(DCL)。 表3.1SQL语言的动词 S0L功能动词 数据定义 CREATE,DROP,ALTER 数据查询 SELECT 数据操纵 INSERT,UPDATE DELETE 数据控制GRANT,REVOKE 1 Mysql中创建bonus,dept,emp,salgrade四张表 1.1在mysql中创建数据库scott 使用命令:CREATE DATABASE database_,name Create database scott; /创建数据库scot Use scott; ∥选择操作的数据库
SQL 教程 注:所使用的练习表为 oralce 数据库 scott 用户下的 bonus,dept,emp,salgrade 四张表。 教程准备条件: 1.如果您的机器上有安装 oralce,请使用 scott/tiger 进入 oracle 进行学习。 2.如果您的机器上没有安装 oralce,那么可以使用 oralce_scott_export_mysql.sql 文件,在 mysql 中执行文件中的 sql 语句,创建练 习的 bonus,dept,emp,salgrade 四张表。 SQL 全名是结构化查询语言(Structured Query Language),是用于数据库 中的标准数据查询语言,IBM 公司最早使用在其开发的数据库系统中。1986 年 10 月,美国 ANSI 对 SQL 进行规范后,以此作为关系式数据库管理系统的标准语言 (ANSI X3. 135-1986),1987 年得到国际标准组织的支持下成为国际标准。不过各 种通行的数据库系统在其实践过程中都对 SQL 规范作了某些编改和扩充。所以, 实际上不同数据库系统之间的 SQL 语言不能完全相互通用。 SQL 语言包含 4 个部分: ※ 数据定义语言(DDL),例如:CREATE、DROP、ALTER 等语句。 ※ 数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE (删除)语句,COMMIT、ROLLBACK。 ※ 数据查询语言(DQL),例如:SELECT 语句。 ※ 数据控制语言(DCL),例如:GRANT、REVOKE、等语句。 SQL 语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数 据操作语言(DML)及数据控制语言(DCL)。 1 Mysql 中创建 bonus,dept,emp,salgrade 四张表 1.1 在 mysql 中创建数据库 scott 使用命令:CREATE DATABASE database_name Create database scott; //创建数据库 scott Use scott; //选择操作的数据库 表 3.1 SQL 语言的动词 SQL 功 能 动 词 数 据 定 义 CREATE,DROP,ALTER 数 据 查 询 SELECT 数 据 操 纵 INSERT,UPDATE DELETE 数 据 控 制 GRANT,REVOKE
注:可用drop database:oox为数据库)命令来删除数据库,SQL中关键字不区分大小 1.2在scot数据库中创建bonus,.dept,emp,salgrade四张表 如下为在oracle下对这几张表的解释,在oralce中的NUMBER在mysql中为NT 雇员表(EMIP) 类型 表示准员偏 VARCHAR2(10 表示工作职型 MG NUMBER 表示一个员的领号编号 RDA 表示麻佣日 NUMBER(2) NUMBER(7,2) 表示奖金。成者称为侧金 8 DEPTNO NUMBER(2) 部门表(dept) No 字段 类型 描述 DEPTNO 部门编号,是唯编号 DNAME VARCHAR2(14 部门名幕 3 LOC VARCHAR2(13) 部门位置 工资等级表(SALGRADE) No. 字段 类型 描述 1 GRADE NUMBER 等级名称 2 LOSAL NUMBER 此等级的最低工资 3 HISAL NUMBER 此等级的最高工资 奖金表(BONUS) No. 学段 类型 描述 ENAME VARCHAR2(10) 易姓多 IOB VARCHARYON 隆员作 3 SAL NUMBER 扇员工资 4 COMM NUMBER 宝系奖金《创金) 1.2.2创建表语句 CREATE TABLE语句 CREATE TABLE语句用于创建数据库中的表
注:可用 drop database xxxx ;(xxxx 为数据库)命令来删除数据库,SQL 中关键字不区分大小 写 1.2 在 scott 数据库中创建 bonus,dept,emp,salgrade 四张表 如下为在 oracle 下对这几张表的解释,在 oralce 中的 NUMBER 在 mysql 中为 INT 1.2.2 创建表语句 CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表
SQL CREATE TABLE语法 CREATE TABLE表名称 列名称1数据类型, 列名称2数据类型, 列名称3数据类型, CREATE TABLE DEPT DEPTNO INT PRIMARY KEY, DNAME VARCHAR(14), LOC VARCHAR13】 CREATE TABLE EMP EMPNO INT PRIMARY KEY, ENAME VARCHAR(10), VARCHAR(9), MGR INT HIREDATE DATE, SAL INT. COMM INT DEPTNO INT REFERENCES DEPT CREATE TABLE BONUS ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT CREATE TABLE SALGRADE ( GRADEINT HISAL INT
SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称 1 数据类型, 列名称 2 数据类型, 列名称 3 数据类型, . ) 1.2.3 bonus,dept,emp,salgrade 四张表创建语句: 1.3 在创建好的表中插入数据库 1.3.1 Insert into 语句 INSERT INTO 语句用于向表格中插入新的行。 语法 INSERT INTO 表名称 VALUES (值 1, 值 2,.) 我们也可以指定所要插入数据的列: CREATE TABLE DEPT ( DEPTNO INT PRIMARY KEY, DNAME VARCHAR(14) , LOC VARCHAR(13) ) ; CREATE TABLE EMP ( EMPNO INT PRIMARY KEY, ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE, SAL INT, COMM INT, DEPTNO INT REFERENCES DEPT ); CREATE TABLE BONUS ( ENAME VARCHAR(10), JOB VARCHAR(9) , SAL INT, COMM INT ) ; CREATE TABLE SALGRADE ( GRADE INT, LOSAL INT, HISAL INT );
INSERT INTO0tab1e_name(列1,列2,)VALUES(值1,值2,) 1.3.2向DEPT表中插入数据 DEPTNO DNAME LOC NEW YORK 20 RESEARCH DALLAS SALES CHICA 40 OPERATIONS BOSTON INSERT INTO DEPTVALUES (10. 'ACCOUNTING' NEW YORK' INSERTINTO DEPTVALUES (20, 'RESEARCH' 'DALLAS INSERTINTO DEPTVALUES (30, SALES 'CHICAGO INSERTINTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON
INSERT INTO table_name (列 1, 列 2,.) VALUES (值 1, 值 2,.) 1.3.2 向 DEPT 表中插入数据 INSERT INTO DEPT VALUES ( 10, 'ACCOUNTING', 'NEW YORK' ); INSERT INTO DEPT VALUES ( 20, 'RESEARCH', 'DALLAS' ); INSERT INTO DEPT VALUES ( 30, 'SALES', 'CHICAGO' ); INSERT INTO DEPT VALUES ( 40, 'OPERATIONS', 'BOSTON' );
1.3.3向EMP表中插入数据 EMPNO 7369 79021980-121 B0( NULI 1981022 04-0 839 839 198109 0000 代码示例为: INSERTINTO EMP VALUES 7369, 'SMITH' CLERK, 7902. 1980-12-17 800, 20 1.3.4向SALGRADE表中添加数据 GRADE LOSAL HISAL 1200 1401 2001 3001 999g 示例代码为: INSERT INTO SALGRADE VALUES 1,700,1200
1.3.3 向 EMP 表中插入数据 代码示例为: 1.3.4 向 SALGRADE 表中添加数据 示例代码为: INSERT INTO EMP VALUES ( 7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, NULL, 20 ); INSERT INTO SALGRADE VALUES ( 1,700,1200 );
2数据库查询select关键字 2.1简单查询语句 SQL SELECT语句 SELECT语句用于从表中选取数据 结果被存储在一个结果表中(称为结果集)。 SQLSELECT语法 SELECT列名称EROM表名称 以及 SELECT★FROM表名称 注释:SOL语句对大小写不敏感。SELECT等效于select 例1:se1ect*from nysgl>select w from empi EMPNO ENAME :JOB HGR HIREDATE SAL COMM DEPTNO GER 39 1981 GE 3 1981 285 KING 981 288 98d 84 FORD LYST 7566 in set sec>
2 数据库查询 select 关键字 2.1 简单查询语句 SQL SELECT 语句 SELECT 语句用于从表中选取数据。 结果被存储在一个结果表中(称为结果集)。 SQL SELECT 语法 SELECT 列名称 FROM 表名称 以及: SELECT * FROM 表名称 注释:SQL 语句对大小写不敏感。SELECT 等效于 select。 示例 1:select * from emp;
示例2:select empno,ename,sal from emp: mysql>select empno,ename,sal from emp; empno ename sal SMITH 252 11250 2654 3698 2850 KING 3 7839 JAMES 95 14 rows in set (0.00 sec> 2.1.1为列起别名 我们可以为返回列的名称起别名: 示例3:select empno bianhao,ename xingming,job gongzuo from emp 注:还可以添加as关键字,也可以使用中文(如果支持) select empno as bianhao,ename as xingming,job as gongzuo from emp; 扩展:读懂下面s91语句: select e.empno bianhao,e.ename xingming,e.job gongzuo from scott.emp as e;
示例 2:select empno,ename,sal from emp; 2.1.1 为列起别名 我们可以为返回列的名称起别名: 示例 3: select empno bianhao,ename xingming,job gongzuo from emp; 注:还可以添加 as 关键字,也可以使用中文(如果支持) 如:select empno as bianhao,ename as xingming,job as gongzuo from emp; 扩展:读懂下面 sql 语句: select e.empno bianhao,e.ename xingming,e.job gongzuo from scott.emp as e;
nysql>select enpno bianhao,enane xingning.job gongzuo fron enp bianhao xingming gongzuo 7369 SMITH :CLERK JONES MANAGER %5 HARTIN 7782 CLARK 7788 ANALYST 7876 ADAMS CLERK CLERK 14 rows in set (0.00 sec) 2.12 DISTINCT关键字 想查询有哪些工作类型: Select job from empa mysql>select job fron emp; job SALESMAN MANAGER MANAGE PRESIDENT SALESMAN CLERK ANALYST CLERK 14 rows in set (0.00 sec> 有重复的列,怎样消除重复的列?使用distinct关键字: 关健词DISTINCT用于返回唯一不同的值。 语法:SELECT DISTINCT列名称EROM表名称 如:select distinct job from emp
2.1.2 DISTINCT 关键字 想查询有哪些工作类型: Select job from emp; 有重复的列,怎样消除重复的列?-使用 distinct 关键字: 关键词 DISTINCT 用于返回唯一不同的值。 语法:SELECT DISTINCT 列名称 FROM 表名称 如:select distinct job from emp;
nysgl>seleet distinet joh fron enpi CLERK HONOCER PRESIDENT 5 rows in set (0.03 sec> 2.1.35QL中的四则运算 示例:要求查询出员工姓名及年薪? Select ename,sal*12 from emp; nysql>select ename.salx12 from emp: 8a112 SMITH 9600 ONES CLARK TURNER 1800 FORD 36886 :MILLER:15686: 14 rows in set (0.04 sec>
2.1.3 SQL 中的四则运算 示例:要求查询出员工姓名及年薪? Select ename, sal*12 from emp;
2.2 WHERE关键字限定简单查询 如需有条件地从表中选取数据,可将WHERE子句添加到SELECT语句, 语法为: SELECT列名称ROM表名称WHERE列运算符值(条件) 下面的运算符可在WHERE子句中使用 茶作符 等于 不等于 大于 小王 大于等于 小于等于 BETWEEN 在菜个范困内 提索呆种慎式 注释:在某些版本的SQL中,操作符<>可以写为!=.除了上面的操作符还包括,IN,NOT IN,AND,OR,BETWEEN AND,IS NULL,NOT IS NULL LIKE,NOT LIKE。 示例1:查询出工资大于2000的员工?(运算符的使用) Select*from emp where sal>2000
2.2 WHERE 关键字限定简单查询 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。 语法为: SELECT 列名称 FROM 表名称 WHERE 列 运算符 值(条件) 下面的运算符可在 WHERE 子句中使用: 注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。除了上面的操作符还包括,IN,NOT IN,AND,OR,BETWEEN AND,IS NULL,NOT IS NULL, LIKE,NOT LIKE。 示例 1:查询出工资大于 2000 的员工?(运算符的使用) Select * from emp where sal>2000;