数据库子函数等

create table yyy
 (
 code int ,
 name varchar(50),
 sex varchar(50),
 age int,
 hight decimal(18,1),
 weight decimal(18,1),
 idno bigint,
 address varchar(50)
 )
 insert into yyy values(1,‘张三‘,‘男‘,20,161,61,37030219,‘山东‘)
 insert into yyy values(2,‘王八乐四‘,‘男‘,21,162,62,37030219,‘淄博‘)
 insert into yyy values(6,‘李科‘,‘男‘,22,178,75,371521,‘淄博‘)
 insert into yyy values(3,‘王五‘,‘男‘,22,163,63,37030219,‘济南‘)
 insert into yyy values(4,‘李科‘,‘男‘,23,164,64,37030219,‘潍坊‘)
 insert into yyy values(5,‘李科‘,‘男‘,24,165,65,37030219,‘临沂‘)
 select *from yyy
 
 --top 关键字
 select top 3 *from yyy --显示整个表的前3行
 select top 3 *from yyy where age>=22  --先找到age>=22的 然后显示age>=22的前3行
 select top 3 name from yyy --显示这个表的前3行中的name一列
 
 --distinct
 select  distinct name from  yyy   --去除名字相同的
 
 --order  by 排序
 select *from yyy order by age asc  --age从小到大排序  asc 升序
 select *from yyy order by age desc --age从大到小排序  desc 降序
 select *from yyy where weight<70 order by weight --先筛选weight<70的 然后在按weight从小到大排序
 select *from yyy order by age,weight --先按年龄排序,然后在不改变第一次排序的基础上按体重排序
 
 
--分组  group by 列   对哪一列进行分组,就只能显示哪一列
select age from yyy group by age  --对name列分组,只能显示name列的信息
select age from yyy group by age

--查询年龄加5岁大于27的
select *from yyy where age+5>27

--算术运算符:+-*/%
--比较运算符:> < >= <= != <>(不等于)   !<大于等于 !>小于等于
--逻辑运算符 and or
--修饰符 all any some in not

--in 在什么参数范围之内
select *from yyy where age in(22,23)  --相当于age=22 or age=23
select *from yyy where age=22 or age=23 --既显示age=22,也显示age=23

--not 不在什么参数范围之内
select *from yyy where age not in(22,23)  --不显示age是22和23的

--查询年龄不在身高是164的人的年龄范围之内的学生信息
select *from yyy where hight=164
select *from yyy where age !=23
--子查询:使用查询语句查询一列数据出来,然后作为其他查询的查询条件中的参数来使用
--查询身高不在年龄是22岁的人的身高范围之内的信息
select *from yyy where age =22
select *from yyy where hight not in(178,163)
--简化
select *from yyy where hight not in(select hight from yyy where age =22)--先查询age=22的所有人的体重的这一列数据的结果作为参数,然后将这列参数用于第一个函数

select *from yyy
--查询名字叫李科的人中年龄比code=1的张三那个人的年龄大3岁的人的信息
select *from yyy where  age - (select age from yyy where code=1 and name=‘张三‘ )=3 and name=‘李科‘

--查询名字叫李科的人中年龄比姓王的人中年龄大1岁的人的信息
select *from yyy where name =‘李科‘ and age -1 in(select age from yyy where name like ‘王%‘)

--外键 :受约束的表叫外键表,约束的数据源叫主键表
--要想加外键,首先得有主键表
--要想删主键表数据,必须先删除外键表数据
--作为外键的数据源的列,必须要是一个唯一键(这一列必须是主键或者是unique)

create table teacher
(
 tcode int primary key identity(1,1) ,
 tname varchar(50)
)
insert into teacher(tname) values(‘张三‘)
select *from teacher
create table student
(
 scode int primary key identity(1,1) ,
 sname varchar(50),
 tno int references teacher(tcode) ,  --student表的tno项参考teacher表的tcode项,tcode项必须是主键项
 cid varchar(20) unique    --唯一列,不能重  unique
)
insert into student values (‘学生1‘,null,‘32134124‘)   --tno项只能输入null或张三的编号
insert into student values (‘学生2‘,null,‘321434124‘)
insert into student values (‘学生3‘,null,‘32153124‘)
insert into student values (‘学生4‘,1,‘3215g124‘)
select *from student

时间: 2024-09-28 23:00:04

数据库子函数等的相关文章

SQL Server数据库ROW_NUMBER()函数使用

下面以几个实例来说明ROW_NUMBER()函数的使用. 实例如下: 1.使用row_number()函数进行编号,如 select email,customerID, ROW_NUMBER() over(order by psd) as rows from QT_Customer 原理:先按psd进行排序,排序完后,给每条数据进行编号. 2.在订单中按价格的升序进行排序,并给每条记录进行排序代码如下: select DID,customerID,totalPrice,ROW_NUMBER() 

第二百八十五节,MySQL数据库-MySQL函数

MySQL数据库-MySQL函数 1.MySQL内置函数 SELECT执行函数,后面跟要执行的函数 CHAR_LENGTH(str)函数:返回字符串的字符长度 -- CHAR_LENGTH(str)函数:返回字符串的字符长度 SELECT CHAR_LENGTH('欢迎光临'); LENGTH(str)函数:返回字符串的字节长度 -- LENGTH(str)函数:返回字符串的字节长度 SELECT LENGTH('欢迎光临'); CONCAT(str1,str2,...)函数:拼接字符串 --

Oracle数据库实用函数

实用函数 DECODE 语法如下: DECODE(value, if1, then1, if2,then2,if3,then3, . . . else )  Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果.当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1:如果value等于if2,Decode函数结果是then2:等等.事实上,可以给出多个if/then 配对.如果value结果不等于给出的任何配对时,Decode 结果就返回els

SQL Server数据库ROW_NUMBER()函数使用详解

SQL Server数据库ROW_NUMBER()函数使用详解 摘自:http://database.51cto.com/art/201108/283399.htm SQL Server数据库ROW_NUMBER()函数的使用是本文我们要介绍的内容,接下来我们就通过几个实例来一一介绍ROW_NUMBER()函数的使用. 实例如下: 1.使用row_number()函数进行编号,如 select email,customerID, ROW_NUMBER() over(order by psd) a

tcl脚本学习十:proc 子函数的使用

lesson 10 :proc 子函数的使用 1. proc sum {arg1 arg2} { set x [expr $arg1+$arg2]; return $x } puts " The sum of 2 + 3 is: [sum 2 3]\n\n" //[语法] :proc procName { var1 var2 ... } {body}说明:1. proc 命令有三个参数:procName 是定义的过程名字:{var1 var2 ...}是输入.输出参数列表:body 是

Shell 语法 if 、 case 、for 、 while、 until 、select 、repeat、子函数

if语法 : if [ expression ]    then   commandselif [ expression2 ]   then   commandselse   commandsfi case 语法: case string1 in   str1)    commands;;   str2)    commands;;   *)    commans;;esac 循环语句 for 语法:    for  var in list do commands done     在此形式时,

matlab中同一文件定义子函数的方法

在matlab中一个.m文件中可以有多个的子函数,但仅能有一个主函数,并且M文件名必须和主函数相同在一个m文件中通常有两种定义子函数的方法: 1.嵌套定义 myfunc1会和主函数共享变量名.这种情况下,使用相同的变量名,如果不是故意为之,就不合适了.function mainFunc(... a = myfunc1();...function myfunc1()...end end2. 非嵌套定义function mainFunc()...a = myfunc1();...end functi

数据库(SQLITE3函数总结): sqlite3_open, sqlite3_exec, slite3_close,sqlite3_prepare_v2,sqlite3_column_text,

Sqlite3 的确很好用.小巧.速度快.最近研究它,有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记. 导入SQLLite library并引入头文件. libsqlite3.dylib本身是个链接,在这里它指向libsqlite3.0.dylib.也就是说在这里你添加libsqlite3.dylib和添加libsqlite3.0.dylib其实是添加了同一个文件,没有区别,那为什么要添加libsqlite3.0.dylib呢?原因在于libsqlite3.dylib是旧版的sq

Oracle的over子函数的妙用

摘要 oracle的over 子函数可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,其中PARTITION BY 为分组字段,ORDER BY 指定排序字段这对统计分析这类问题意想不到的效果. over函数的妙用 例1: 累计求和 select fdate 日期,total 金额,tax 税额, sum(total) over (order by fdate) 累计金额,sum(tax) over (order by fdate) 累计税额 from ( select fildat