一、SQL基础知识点补充
SQL DML 和 DDL
- 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了 SQL 的 DML 部分:
- SELECT - 从数据库表中获取数据
- UPDATE - 更新数据库表中的数据
- DELETE - 从数据库表中删除数据
- INSERT INTO - 向数据库表中插入数据
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
- --20180110简单SQL脚本学习--
- 相关关键字: CREATE(创建) COMMENT ON(添加注释) COLUMN(列) FLASHBACK(回退) GROUP BY(分组) ORDER BY(排序) MODIFY(修改)
- --一、表的相关操作脚本
- --1.创建数据表
- --1.1常规创建表格
- CREATE TABLE STU_INFO(
- STU_ID VARCHAR(15) NOT NULL,
- STU_NAME VARCHAR(120),
- STU_CLASS VARCHAR(120),
- STU_SEX VARCHAR(10)
- );
- --1.2通过复制的方式创建表
- CREATE TABLE STU_INFO_TEMP AS SELECT * FROM STU_INFO;
- --1.3通过复制的方式但只是复制表结构不复制表的数据
- CREATE TABLE STU_INFO_TEMP AS SELECT * FROM STU_INFO WHERE 1=2;
- --2.给表和字段添加注释
- COMMENT ON TABLE STU_INFO IS '2018年1月10号SOULSJIE学习SQL脚本创建的数据表 ';
- COMMENT ON COLUMN STU_INFO.STU_ID IS '学生学号';
- COMMENT ON COLUMN STU_INFO.STU_NAME IS '学生的姓名';
- COMMENT ON COLUMN STU_INFO.STU_CLASS IS '学生所属班级';
- COMMENT ON COLUMN STU_INFO.STU_SEX IS '学生的性别';
- --3.修改表结构
- --2.1添加表字段
- ALTER TABLE STU_INFO ADD STU_ADD VARCHAR(120);
- --2.2修改表字段
- ALTER TABLE STU_INFO MODIFY (STU_SEX VARCHAR(6));
- --2.3删除表字段
- ALTER TABLE STU_INFO DROP (STU_ADD);
- --2.4修改表名
- ALTER TABLE TESTS RENAME TO STU_INFO;
- --2.5修改列名
- ALTER TABLE STU_INFO RENAME COLUMN STU_CLASS TO STU_BANJI;
- --4.删除数据表
- DROP TABLE STU_INFO_TEMP;
- --5.恢复被DROP的数据表
- FLASHBACK TABLE STU_INFO TO BEFORE DROP;
- --6.表的截断 关键字 truncate 清空表中的数据,并且还原数据占用的内存空间
- TRUNCATE TABLE STU_INFO;
- --7.表的清空 关键字 delete 清空表中的数据,但是不还原数据占用的内存空间
- DELETE FROM STU_INFO;
- --二.数据操作脚本
- --1.1插入单条数据
- --MySQL的写法和Oracle写法一样
- INSERT INTO STU_INFO
- (STU_ID, STU_NAME, STU_CLASS, STU_SEX)
- VALUES
- ('Q', 'Q', 'Q', 'Q');
- --1.2插入多条记录数据
- --MySQL的写法INSERT INTO TABLE_NAME (COLUMN_1,COLUMN_2...,COLUMN_N) VALUES(VALUE_1,VALUES_2,...,VALUES_N),(VALUES2_1,VALUES2_2...,VALUES2_N);
- --例子:在mysql中插入多条数据INSERT INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS) VALUES ('TE','TE','15'),('TT','TT','16');
- --但是在Oracle中插入多条数据写法有不同如下:
- INSERT ALL INTO STU_INFO
- (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180301','张三','3','男')
- INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180302','李四','3','女')
- INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180303','张嘉佳','3','男')
- INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180304','李丽丽','3','女')
- INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180305','汪汪汪','3','男')
- INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180306','呵呵哈','3','女')
- SELECT 1 FROM DUAL;
- --2.删除数据
- DELETE FROM STU_INFO WHERE STU_ID='02';
- DELETE FROM STU_INFO WHERE 1=1;
- --3.修改数据
- UPDATE STU_INFO SET STU_NAME='JIE',STU_SEX='女' WHERE STU_ID='03';
- --4.简单查询数据
- --4.1查询所有数据
- SELECT * FROM STU_INFO;
- --4.2多条件查询 and关键字 逻辑与的关系
- SELECT * FROM STU_INFO WHERE STU_CLASS='3' AND STU_SEX='男';
- --4.3 or关键字 逻辑或的关系
- SELECT * FROM STU_INFO WHERE STU_CLASS='1' OR STU_CLASS='2';
- --4.4 group by 分组 注意:在同时使用order by和group by时order by应该放在末尾
- SELECT STU_ID FROM STU_INFO GROUP BY STU_ID ORDER BY STU_ID ASC;
- --4.5 order by 排序 不写降序(desc)和升序(asc)时默认为升序
- SELECT * FROM STU_INFO ORDER BY STU_CLASS DESC
- --4.6 distinct 去重复
- SELECT DISTINCT STU_ID FROM STU_SCORE;
- --5.复杂数据查询 利用group by 进行统计查询
- --5.1 AVG 求各个课程的平均值
- SELECT S.KECHENG_BIANHAO 课程编号,
- AVG(S.KECHENG_CHENGJI) 平均分
- FROM STU_SCORE S
- GROUP BY S.KECHENG_BIANHAO;
- --5.2 min 求各个课程的最小值
- SELECT S.KECHENG_BIANHAO 课程编号,
- MIN(S.KECHENG_CHENGJI) 最小值
- FROM STU_SCORE S
- GROUP BY S.KECHENG_BIANHAO;
- --5.3 max 求各个课程的最大值
- SELECT S.KECHENG_BIANHAO 课程编号,
- SUM(S.KECHENG_CHENGJI) 最小值
- FROM STU_SCORE S
- GROUP BY S.KECHENG_BIANHAO;
- --5.4 sum 求各科课程的总分
- SELECT S.KECHENG_BIANHAO 课程编号,
- SUM(S.KECHENG_CHENGJI) 最小值
- FROM STU_SCORE S
- GROUP BY S.KECHENG_BIANHAO;
- --5.5 count 总计数目
- SELECT S.KECHENG_BIANHAO 课程编号, COUNT(*) 记录条数
- FROM STU_SCORE S
- GROUP BY S.KECHENG_BIANHAO;
- --5.6 连接查询 查询每个学生的总分
- SELECT I.STU_NAME 姓名, SUM(S.KECHENG_CHENGJI) 总分
- FROM STU_SCORE S
- JOIN KECHENG_INFO K
- ON S.KECHENG_BIANHAO = K.KECHENG_BIANHAO
- JOIN STU_INFO I
- ON S.STU_ID = I.STU_ID
- GROUP BY I.STU_NAME;
- --5.7求C语言课程的最低分
- SELECT MIN(S.KECHENG_CHENGJI) 最低分
- FROM KECHENG_INFO K
- JOIN STU_SCORE S
- ON K.KECHENG_BIANHAO = S.KECHENG_BIANHAO
- WHERE K.KECHENG_NAME = 'C语言';
- SELECT * FROM STU_SCORE;
- SELECT * FROM KECHENG_INFO;
- --5.8左连接 LEFT JOIN 满足on之后的条件的数据才会出现在结果集中
- SELECT *
- FROM STU_SCORE S
- LEFT JOIN KECHENG_INFO K
- ON S.KECHENG_BIANHAO = K.KECHENG_BIANHAO;
- --5.9右连接 RIGHT JOIN 不满足on之后的条件的数据也会出现在结果集中
- SELECT *
- FROM STU_SCORE S
- RIGHT JOIN KECHENG_INFO K
- ON S.KECHENG_BIANHAO = K.KECHENG_BIANHAO;
- --5.10 全连接 FULL JOIN 是左连接和右链接两个结果的并集
- SELECT *
- FROM STU_SCORE S
- FULL JOIN KECHENG_INFO K
- ON S.KECHENG_BIANHAO = K.KECHENG_BIANHAO;
- -------------------------临时脚本-----------------------------------
- --例子中用到表的创建、添加数据的SQL脚本 ---
- -------------------------------创建学生信息表
- CREATE TABLE STU_INFO(
- STU_ID VARCHAR(15) NOT NULL,
- STU_NAME VARCHAR(120),
- STU_CLASS VARCHAR(120),
- STU_SEX VARCHAR(10)
- );
- COMMENT ON TABLE STU_INFO IS '2018年1月10号SOULSJIE学习SQL脚本创建的数据表 ';
- COMMENT ON COLUMN STU_INFO.STU_ID IS '学生学号';
- COMMENT ON COLUMN STU_INFO.STU_NAME IS '学生的姓名';
- COMMENT ON COLUMN STU_INFO.STU_CLASS IS '学生所属班级';
- COMMENT ON COLUMN STU_INFO.STU_SEX IS '学生的性别';
- --向学生信息表中添加数据
- INSERT ALL INTO STU_INFO
- (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180301','张三','3','男')
- INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180302','李四','3','女')
- INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180303','张嘉佳','3','男')
- INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180304','李丽丽','3','女')
- INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180305','汪汪汪','3','男')
- INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS,STU_SEX)
- VALUES
- ('180306','呵呵哈','3','女')
- SELECT 1 FROM DUAL;
- -------------------------------创建辅助数据表--成绩表
- CREATE TABLE STU_SCORE(
- STU_ID VARCHAR(12) NOT NULL,
- KECHENG_BIANHAO VARCHAR(50),
- KECHENG_CHENGJI VARCHAR(50)
- );
- COMMENT ON TABLE STU_SCORE IS 'soulsjie,学习连接查询创建的学生成绩表';
- COMMENT ON COLUMN STU_SCORE.STU_ID IS'学生学号';
- COMMENT ON COLUMN STU_SCORE.KECHENG_BIANHAO IS'课程编号';
- COMMENT ON COLUMN STU_SCORE.KECHENG_CHENGJI IS'课程成绩';
- --向成绩表中添加数据
- INSERT ALL INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180301','0001','60')
- INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180301','0002','62')
- INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180302','0001','99')
- INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180302','0002','99')
- INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180303','0001','45')
- INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180303','0002','15')
- INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180304','0001','44')
- INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180304','0002','55')
- INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180305','0001','66')
- INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180305','0002','55')
- INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180306','0001','66')
- INTO STU_SCORE (STU_ID,KECHENG_BIANHAO,KECHENG_CHENGJI)
- VALUES ('180306','0002','88')
- SELECT 1 FROM DUAL;
- --给成绩表添加注释
- COMMENT ON TABLE STU_SCORE IS 'soulsjie,学习连接查询创建的学生成绩表';
- COMMENT ON COLUMN STU_SCORE.STU_ID IS '学生学号';
- COMMENT ON COLUMN STU_SCORE.KECHENG_BIANHAO IS '课程的编号';
- COMMENT ON COLUMN STU_SCORE.KECHENG_CHENGJI IS '课程的成绩';
- -------------------------------创建辅助数据表--选课表
- CREATE TABLE KECHENG_INFO (
- KECHENG_BIANHAO VARCHAR(12) NOT NULL,
- KECHENG_NAME VARCHAR(50)
- );
- COMMENT ON TABLE KECHENG_INFO IS 'soulsjie,学习连接查询创建的课程信息表';
- COMMENT ON COLUMN KECHENG_INFO.KECHENG_BIANHAO IS '课程的编号';
- COMMENT ON COLUMN KECHENG_INFO.KECHENG_NAME IS '课程名';
- --添加选课表中的数据
- INSERT ALL INTO KECHENG_INFO (KECHENG_BIANHAO,KECHENG_NAME)
- VALUES
- ('0001','C语言')
- INTO KECHENG_INFO (KECHENG_BIANHAO,KECHENG_NAME)
- VALUES
- ('0002','JAVA')
- SELECT 1 FROM DUAL;
一、SQL基础知识点补充的更多相关文章
- java基础知识点补充---二维数组
#java基础知识点补充---二维数组 首先定义一个二维数组 int[][] ns={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; 实现遍 ...
- c语言学习之基础知识点介绍(二):格式化控制符和变量的补充
上节简单介绍了c语言中的一些基础知识点,本节将对之前介绍的不够详细的知识点进行补充. 格式化控制符的消息介绍: %d的其他控制符: 1.%md:m代表这个整数位占用多少位,m是一个整数.实际数字不足的 ...
- sql注入知识点整理(基础版)
sql注入知识点整理(基础版) 基本步骤 判断是否报错 判断闭合符号 判断注入类型 构建payload 手工注入或者编写脚本 基本注入类型 报错型注入 floor公式(结果多出一个1):and (se ...
- JAVA基础知识点总结(全集)
1.JAVA简介 1.1java体系结构:j2se,javaweb,j2ee 1.2java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定) 1.3 JDK与JRE,JDK:java开发环境 ...
- 信安周报-第02周:SQL基础
信安之路 第02周 Code:https://github.com/lotapp/BaseCode/tree/master/safe 前言 本周需要自行研究学习的任务贴一下: 1.概念(推荐) 数据库 ...
- 第一章 SQL基础
第一部分:SQL基础1. 为什么学习SQL自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献.档案.资料.数据等):在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到 ...
- SQL基础--> 约束(CONSTRAINT)
--============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完 ...
- 小程序基础知识点讲解-WXML + WXSS + JS,生命周期
小程序基础 小程序官方地址,小程序开发者工具,点击此处下载.在微信小程序中有一个配置文件project.config.json,此文件可以让开发者在不同设备中进行开发. 微信小程序共支持5种文件,wx ...
- swagger知识点补充
1. swagger知识点补充 1.1. 概述 在swagger的使用过程中,除了网上常见的例子,还会有很多细节上的东西需要注意和改写,这里我列几点我使用过程中遇到的问题和改进方式 1.2. 知识点 ...
随机推荐
- Adding New Machine ZOJ - 3540
https://vjudge.net/problem/ZOJ-3540 错误记录: 扫描线没有考虑到同一行的要删除在前,加入在后:由于用了特殊的方式所以想当然以为不需要考虑这个问题 #include& ...
- Four Segments CodeForces - 846C
题目 题意:sum(l,r)表示数列a中索引为l到r-1(都包含)的数之和(如果l==r则为0).给出数列a,求合适的delim0, delim1, delim2,使res = sum(0, deli ...
- HDOJ 5475 An easy problem
题目传送门 题意:一个计算器,两种操作,乘上x,或者除掉之前的某个x,结果取模输出 分析:因为取模不支持除法,然后比赛时想到用逆元,结果发现MOD需要与b互质,结果一直苦苦寻找求逆元的其它方法.后来队 ...
- 138 Copy List with Random Pointer 复制带随机指针的链表
给出一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点.返回一个深拷贝的链表. 详见:https://leetcode.com/problems/copy-list- ...
- .net core跨域设置
services.AddCors(options => options.AddPolicy("AllowSameDomain", builder => builder. ...
- LinQ的高级查询
模糊查询: //数据库 + 自定义名称 =new 数据库 //例子: mydbDataContext con = new mydbDataContext(); //模糊查询表达式中用.Contains ...
- 第一章、 CLR的执行模型
1. 概述 本章主要是介绍从源代码到可执行程序的过程中,CLR所做的工作. 2. 名词解释 ① 公共语言运行时(Common Language Runtime, CLR),是一个可由多种语言使用的 运 ...
- 你干啥的?Lombok
01.Lombok 的自我介绍 Lombok 在官网是这样作自我介绍的: Project Lombok makes java a spicier language by adding 'handler ...
- spring Existing transaction found for transaction marked with propagation 'never' 解决
先在申明事务中配置了所有的事务 <!--配置事物传播策略,以及隔离级别--> <tx:advice id="txAdvice" transaction-manag ...
- grep的几个参数
-a 在二进制问就爱你中,以文本方式进行搜索 -c 计算找到搜索字符串的次数 -i 忽略大小写 -n 输出行号 -v 反向选择,即没有显示搜索字符串内容的那一行 grep -n '\.$' file ...