常用的 SQL语句------CRUD
复习之前课本上的sql语句,以前上课的时候都是老师在上面讲,我们在下面玩,根本没有把这个放在心上,等到考试的时候临时学习突击下,就可以顺利过60了,但是现在不行了,自己要重新的学习sql,应该把里面最基本的语句和语法都全部的学习下,每个案例都要在数据库中执行下,我们需要这些基本的知识点。
1:创建表,修改表,添加列
/*创建基本表Student*/
create table Student(
Sno char(5) not null unique, /*定义的学号不能为空,并且是唯一的值。*/
Sname char(20),
Ssex char(2),
Sage int,
Sdept Char(15)
);
/*修改基本表Student*/
/*添加新列Scome*/
alter table Student Add Scome DATE;
/*修改数据类型*/
alter table Student MODIFY Sage SMALLINT;
/*删除学号的唯一标识*/
alter table Student DROP UNIQUE(Son);
/*删除表*/
drop table Student;
/*创建索引*/
CREATE CLUSTER INDEX Stusname ON Student(Sname);
/*删除索引*/
drop index Stusname;
2:基本的查询
/*查询*/
select Sname,Sage from Student; select Sname,Sage,Sdept from Student; select * from Student; select Sname,1996-Sage from Student; select Sname,'Year of Birth:',1996-Sage,LOWER(Sdept) from Student; select Sname NAME,'Year of Birth:'BIRTH,1996-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT FROM Student; /*为列创建别名*/
3:复杂的查询
/*消除重复行*/
select DISTINCT Sno from Student; /*查询满足条件的元组*/
select Sname from Student where Sdept="CD"; select Sname,Sage from Student where Sage>=20; alter table Student add Grade int; select DISTINCT Sno from Student where Grade<60;
/*确定范围-----------between and */
select Sname,Sage,Sdept from Student where Sage between 20 and 23;
/*确定集合-----------IN('','','')*/
select Sname,Ssex from Student where Sdept IN('IS','MA','CS');
/*字符匹配-----------LIKE+++( %:代表任意长度)( _ :代表单个字符)*/
select Sname,Sage from Student where Sname LIKE 'A%'; SELECT Sname ,Sage from Student where Sname LIKE 'A_'; /*字符匹配-------里面的转义字符-----ESCAPE'\':表示\为转义字符*/
/*查询条件是“A_”此时这里的_不是代表一个字符,只是单纯的表示下划线而已。因为语句前面有转义字符。*/
select Sname from Student where Sage LIKE 'A\__' ESCAPE '\'; /*涉及空值的查询*/
select Sname,Sage from Student where Grade IS NULL; /*查询成绩为空的学生*/
4:更复杂查询
/*多重条件查询*/
select Sname from Student where Sdept='cd' and Sage>20; select Sname from Student where Sdept='cd' or Sage>20; /*对查询结果进行排序*/ select Sname Grade from Student where Sage>20 order by Sage DESC; select * from Student order by Sage DESC; /*使用集函数*/
select count(*) from Student; /*求总个数*/ select count(distinct Sno) from Student; select avg(Sage) from Student where Sname='ahui'; /*avg:求平均值*/ select Sname,count(Sage) from Student group by Sname; select MAX(Sage) from Student where Sno='1'; /*最大值*/
5:连接查询
/*连接查询*/
/*等值的查询*/
select Student.*,SC.* from Student,SC where Student.Sno=SC.Sno; /*自然连接两个表*/
select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,SC.Grade from Student,SC where Student.Sno=SC.Sno;
/*将表Student进行了重新命名,为两个名字,从而进行对自己的查询*/
select FIRS.Sage,SECO.Sno from Student FIRS,Student SECO where FIRS.Sno=SECO.Sage; /*外连接*/ select Student.Sno,Sname,Sage,Sdept,Ssex,Cno,SC.Grade from Student,SC where Student.Sno=SC.Sno(*); /*复合条件连接--------就是利用and来进行操作*/ select Student.Sno,Sname from Student,SC where Student.Sno=SC.Sno and SC.Cno='2' and Student.Sage=2;
6: 嵌套查询
这个查询是将最里面的查询结果当作外面查询的条件来进行查询的,执行顺序是从里到外执行的。注意:最里面的查询(子查询的select语句中不能使用ORDER BY子句,ORDER BY子句只能对最终的查询结果进行排序)
/*嵌套查询---就是把一个查询的结果当做另一个查询的条件来进行查询*/ select Sname from Student where Sno
IN(
select Sno from SC where Cno='2'
);
/*--01:带有IN的子查询*/
select Sno,Sname,Sdept from Student where Sdept IN( select Sdept from Student where Sname='ahui');
/*--02:带有比较运算符的子查询*/
select Sno,Sname,Sdept from Student where Sdept=( select Sdept from Student where Sname='ahui');
7:集合查询
每一个select语句都能获得一个或一组元组,若要把多个select语句的结果合并为一个结果,可用集合操作来完成。集合操作主要包括并操作(UNION)交操作(INTERSECT),差操作(MINUS).
使用UNION将多个查询结果合并起来,形成一个完整的查询结果时,系统会自动去掉重复的元组;
注意的是参加UNION操作的各数据项数目必须相同,对应项的数据类型也要必须相同。
/*集合查询*/
/*查询计算机系的学生及年龄不大于19学生----是个并集*/
select * from Student where Sdept='CS' UNION select * from Student where Sage<=19; select Sno from SC where Cno='1' UNION select Sno from SC where Cno='2';
8:数据更新
/*插入数据*/
insert into Student values('05','aaa','男','25','3','2015-11-26','3'); insert into SC(Sno,Cno) values('06','3'); insert into Deptage(Sdept,Avgage) select Sdept,AVG(Sage) from Student GROUP BY Sdept;
/*修改数据*/ update Student set Sage=233 where Sno='01'; update Student Set Sage=Sage+1; update SC set Grade=1 where '1'=( select Sdept from Student where Student.Sno=SC.Sno); /*删除数据*/
delete from Student where Sno='01';
常用的 SQL语句------CRUD的更多相关文章
- MySQL 常用的sql语句小结(待续)
mysql 常用的sql语句 1.查看数据库各个表中的记录数 USE information_schema; SELECT table_name,table_rows FROM tables WHER ...
- 经典SQL语句大全以及50个常用的sql语句
经典SQL语句大全 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serv ...
- SQL Server中常用的SQL语句(转):
SQL Server中常用的SQL语句 转自:http://www.cnblogs.com/rainman/archive/2013/05/04/3060428.html 1.概述 名词 笛卡尔积.主 ...
- oracle常用的SQL语句
一些常用的SQL语句: --建表 create table adolph (id number(10,0), name varchar2(20), ...
- SQL之50个常用的SQL语句
50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,T ...
- MySQL的一些常用的SQL语句整理
安装MySQL有两种的方式,一种是解压版本,但是需要配置环境变量,相对而言比较麻烦.所以我们一般采取第二种方式,那就是到MySQL的官网上下载安装版.这样就会省去很多麻烦,在这里我就不再详细的介绍具体 ...
- 50个常用的sql语句
50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,T ...
- 测试常用的sql语句总结
测试中常用的sql语句,排名部分先后 1. 查询 SELECT * FROM 表名称 SELECT COUNT(DISTINCT column_name) FROM table_name 指定列的不同 ...
- 常用经典SQL语句大全完整版--详解+实例 (存)
常用经典SQL语句大全完整版--详解+实例 转 傻豆儿的博客 http://blog.sina.com.cn/shadou2012 http://blog.sina.com.cn/s/blog_84 ...
随机推荐
- java 网络(socket)
本文梳理一个基础的java TCP消息通信,构造一个简单的Packet进行传输,代码如下: Packet public class Packet { private String attribute; ...
- [.net 面向对象编程基础] (5) 基础中的基础——变量和常量
[.net面向对象编程基础] (5) 基础中的基础——变量和常量 1.常量:在编译时其值能够确定,并且程序运行过程中值不发生变化的量. 通俗来说,就是定义一个不能改变值的量.既然不能变动值,那就必须 ...
- 从C#垃圾回收(GC)机制中挖掘性能优化方案
GC,Garbage Collect,中文意思就是垃圾回收,指的是系统中的内存的分配和回收管理.其对系统性能的影响是不可小觑的.今天就来说一下关于GC优化的东西,这里并不着重说概念和理论,主要说一些实 ...
- python 模块加载
python 模块加载 本文主要介绍python模块加载的过程. module的组成 所有的module都是由对象和对象之间的关系组成. type和object python中所有的东西都是对象,分为 ...
- ehcache2拾遗之cache持久化
问题描述 应用在使用过程中会需要重启等,但是如果ehcache随着应用一起重启,那么刚重启的时候就会出现大量的miss,需要一定的访问量来重建缓存,如果缓存能够持久化,重启之后可以复用将会有助于缓解重 ...
- 我心中的核心组件(可插拔的AOP)~第六回 消息组件~续
回到目录 上一回写消息组件已经是很久之前的事了,这一次准备把消息组件后续的东西说一下,事实上,第一篇文章主要讲的是发消息,而这一讲最要讲的是收消息,简单的说,就是消息到了服务器之后,如何从服务器实时的 ...
- 我心中的核心组件~HttpHandler和HttpModule实现图像的缩放与Url的重写
回到目录 说在前 对于资源列表页来说,我们经常会把图像做成N多种,大图,小图,中图等等,很是麻烦,在数据迁移时,更是一种痛快,而如果你把图像资源部署到nginx上,那么这种图像缩放就变得很容易了,因为 ...
- weinre使用
2016-1-21 更新说明: 微信web开发者工具已经集成了weinre,只需设置手机代理便可调试任意页面,更简单更方便,推荐使用! Web应用开发者需要针对手机进行界面的调试,但是手机上并没有称心 ...
- Atitit 开发2d游戏的技术选型attilax总结
Atitit 开发2d游戏的技术选型attilax总结 1.1. 跨平台跨平台:一定要使用跨平台的gui技术,目前最好的就是h5(canvas,webgl,dom) +js了..1 1.2. 游戏前后 ...
- 浅谈iOS版本号
作者:Travis FIR.im 一直在尽量兼容不同使用习惯的版本号形式, 但是在使用中我们发现好多开发者对怎么更好的用版本号来标示应用很陌生. 这是篇基础文章, 简单介绍 iOS 的版本号. 名词解 ...