当前位置:文档之家› sql语句整理

sql语句整理

sql语句整理
sql语句整理

-- distinct取唯一

--0 查询某一个数据库中所有表的名字

select name from sysobjects where xtype='U' and status <>0

--1. 按id升序排列

select * from 学生xs order by xs.学生_ID desc

select * from 学生as xs order by xs.学生_ID desc

-- 查询教师按笔画排序

select * from 教师

order by 教师名collate chinese_prc_stroke_ci_asdesc

--2. 只显示前10到20个(top的应用)

select top 10 * from 学生

where 学生_ID not in

(

select top 10 学生_ID from 学生

)

--2.2 查询的id为自增的

select top 10 * from 学生

where 学生_ID>(

select max(学生_ID)

from (select top 30 学生_ID from 学生order by 学生_ID )as 学生)

--2.2.1 MySQL版的分页查询

SELECT * FROM tb_alertmsg limit 30,10 --30是指从第多少条查起,10是指查询条数

--2.3 每个系的男女生人数

select x.系名,count(case when xb.性别名='男' then xb.性别名end) as 男生人数,

count(case when xb.性别名='女' then xb.性别名end) as 女生人数

from dbo.学生xs,dbo.系x,dbo.代码_性别xb

where xs.系_ID=x.系_ID and xs.性别_ID=xb.性别_ID

group by x.系名

--3 修改(还有时间)

update 学生set 姓名='李孝利' where 学生_ID=1

update 学生set 姓名='李孝利',出生日期='2005-03-05 12:14:52.467',

性别_ID=1,籍贯_ID=1,系_ID=1,届=2005,班级=1,入学时间=convert(varchar(12),year(getdate()) ) +'-'+convert(varchar(12),month(getdate()) )+'-'+convert(varchar(12),day(getdate()) ),

密码='123456' where 学生_ID=1

-- 取得月、日、年、时间(am/pm)

printgetdate()

-- 取得年

print year(getdate() )

-- 取得月

print month(getdate() )

-- 取得日

print day(getdate() )

-- 取得月、日、年、时间(am/pm),但不知道convert怎么解释(好像是连接字符串)print convert(varchar(12),year(getdate()) )

+'-'+convert(varchar(12),month(getdate()) )

+'-'+convert(varchar(12),day(getdate()) )

-- hour、day、month、year要取得的小时、天数、月数、年数,第一个时间是被减的时间,-- 第二个是减的时间(下面的语句结果是3)

print DATEDIFF(year,'2006-6-6 12:59:59','2009-6-7 0:0:0')

--4 创建一个表,把另一个表中的元素加入到新表中

select 学生_ID as id,姓名as name into hj from 学生

--5 查询学生的姓名、性别、各科的平均成绩,按成绩的的升序排列

-- (作对比的)

--select xs.姓名,xs.性别_ID,xsxk.成绩,kc.课程名

--from 学生xs,学生选课xsxk,开课kk,课程kc

--where xs.学生_ID=xsxk.学生_ID and xsxk.开课_ID=kk.开课_ID

--and kk.课程_ID=kc.课程_ID

select xs.姓名,dx.性别名,avg(xsxk.成绩) 平均成绩

from 学生xs,学生选课xsxk,开课kk,课程kc,代码_性别dx

where xs.学生_ID=xsxk.学生_ID and xsxk.开课_ID=kk.开课_ID

and kk.课程_ID=kc.课程_ID and xs.性别_ID=dx.性别_ID

group by xs.姓名,dx.性别名order by avg(xsxk.成绩)

--6 向表中插入数据(newid() 随机产生id)

insert into 学生(姓名,性别_ID) values('hj',1)

insert into t_students (student_id,student_name,student_gender) values(1014,'hj',0)

-- 建表时时间默认为getdate();【Sqlserver版本】

Create Table userhjTable(

user_idVarchar(50) NOT NULL PRIMARY KEY,

user_nameVarchar(40),

add_timedatetime default (getdate())

)

-- 建表时时间默认为getdate();【MySq版本】

Create Table userhjTable(

`user_id ` int(3) unsigned NOT NULL AUTO_INCREMENT,

`user_name ` varchar(50) NOT NULL,

`add_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

)

select * from userhjTable

insert into userhjTable (user_id,user_name) values(newid(),'hj')

--7 查询学生个数(count的用法)

select id个数=count(student_id) from t_students

--8 union all 的应用(两个sql语句查询的元素必须相同才可以用)select xs.学生_ID,xs.姓名,dx.性别名,kc.课程名,xsxk.成绩

from 学生xs,课程kc,学生选课xsxk,开课kk,代码_性别dx

where xs.学生_ID=xsxk.学生_ID and xsxk.开课_ID=kk.开课_ID

and kk.课程_ID=kc.课程_ID and dx.性别_ID=2

union all

select xs.学生_ID,xs.姓名,dx.性别名,kc.课程名,xsxk.成绩

from 学生xs,课程kc,学生选课xsxk,开课kk,代码_性别dx

where xs.学生_ID=xsxk.学生_ID and xsxk.开课_ID=kk.开课_ID

and kk.课程_ID=kc.课程_ID and dx.性别_ID=1

--9 这几种的方法的联系与区别等等(忘了)

-- inner()

select xs.学生_ID,xs.姓名,xs.性别_ID

from 学生xs inner join 学生选课xsxk

on xs.学生_ID=xsxk.学生_ID order by xs.学生_ID

select * from t_result

selects.student_id,s.student_name,r.results

fromt_students s inner join t_result r

ons.student_id=r.student_id order by s.student_id,s.student_name,r.results

-- right()

selects.student_id,s.student_name,r.results

fromt_students s right join t_result r

ons.student_id=r.student_id order by s.student_id,s.student_name,r.results

-- 正常的

selects.student_id,s.student_name,r.results

fromt_studentss,t_result r

wheres.student_id=r.student_id order by s.student_id,s.student_name,r.results -- left()

selects.student_id,s.student_name,r.results

fromt_students s left join t_result r

ons.student_id=r.student_id order by s.student_id,s.student_name,r.results

--10

-- full outer()

selects.student_id,s.student_name,r.results

fromt_students s full outer join t_result r

ons.student_id=r.student_id order by s.student_id,s.student_name,r.results

-- cross

selects.student_id,s.student_name,r.results

fromt_students s cross join t_result r

order by s.student_id,s.student_name,r.results

--11 模糊查询like 的用法(必须加单引号)

select * from t_students

wherestudent_id like '%100%'

--12 删除表中数据

delete from 学生where 学生_ID=61

--12.2 清除表中所有数据

truncate table hj

-- 删除表中所有数据

delete from hj

--13 删除表

drop table hj

--14 创建表

Create Table userTable(

user_idbigint IDENTITY (1,1) NOT NULL PRIMARY KEY,

user_nameVarchar(40),

user_passwordvarchar(40),

user_true_namevarchar(40),

user_ageint,

user_gendervarchar(2),

user_addressvarchar(80),

user_telephonevarchar(20),

add_timedatetime default (getdate())

)

--15 这种写sql的方式。。。in ()或者。。。not in ()

--查询教过布莱尼的老师的所有信息

select distinct js.教师名

from 教师js,学生xs,学生选课xsxk,开课kk,教师认课jsrk

where xs.姓名='布兰妮' and xs.学生_ID=xsxk.学生_ID

and xsxk.开课_ID=kk.开课_ID and kk.开课_ID=jsrk.开课_ID

and jsrk.教师_ID=js.教师_ID

select * from 教师js where js.教师_ID in

(

select 教师_ID from 教师认课jsrk where jsrk.开课_ID in

(

select 开课_ID from 学生选课xsxk where xsxk.学生_ID in

(

select 学生_ID from 学生xs where xs.姓名='布兰妮' )

)

)

--select id,name,(name + addname) as kk

from test4 t

where (name + addname)='sdfSDF4564564578'

--1 ASCII 码字符变换

--select ascII('A') ascii码值显示上面的下面的就不显示了

print char(65)

printascii('a')

print unicode ('黄')

printnchar (40644)

print unicode ('剑')

printnchar (21073)

--2 取局部

print left ('abcdefghigklmnopq',4)

print right('abcdefghijklmnopqrstuvwxyz',3)

print substring ('abcdefghigklmnopq',2,6)

--3 字母的形式变换

print lower ('aBCDefGHIJ')

print upper('aBCDefGHIJ')

--4 查找(patindex不是很懂)

print charindex('hj','我是我abcdefghjklmnopqrstuvwxyz',6)--显示查到的hj的h是第几位,没有查到显示0

print patindex('%f%u%','你是你wonderful')--第一个要查的是第多少位

--5 加密(没接触过)

select char(ascii('a')+2)

print space (10-len('abcd'))+'ab'--前面有6个空格

select space (10-len('abc'))+'abcd'--前面有7个空格

--6 取空格

select ltrim (' abc ') --去掉左面的空格

select rtrim (' a s d ')--去掉右面的空格

select ltrim(rtrim(' dsfsdfds '))--去掉两边的空格

--7 替换

select replace ('abcdefghijkl','hi','hj')--把hi替换成hj

-- 不懂啊

declare @str char(100) --定义char型,字长为100

declare @i int

declare @zinchar

declare @jievarchar(1000)

set @str='我是世界上最好的人了' --赋值

set @jie=''

set @i=1

while(@i<=10)

begin

set @zi = substring (@str,@i,1)

set @jie =@jie + convert(char(5),unicode(@zi))

set @i = @i+1

print @jie

end

--isnull 把表中属性列为空的字段改为什么,例如下面的把出生日期为空的都改为2008-10-10 select 姓名,isnull (出生日期,'2008-10-10') from 学生

--没弄明白

select nullif ('入学时间','出生日期')

--从到求差

printdatediff (day,'2008-12-12',getdate())

printdatediff (hour,'2008-12-12 12:00AM',getdate())

--加天月

print dateadd(day,+23,'2008-12-30')--月、日、年、时间

print dateadd(month,+2,'2008-12-12')--月、日、年、时间

--取时间

print year(getdate())

print month(getdate())

print day(getdate())

--8

相关主题
文本预览
相关文档 最新文档