第一篇:sql语言学习
SQL语言学习
--语 句功 能
--数据操作
SELECT--从数据库表中检索数据行和列 INSERT--向数据库表添加新数据行
DELETE--从数据库表中删除数据行
UPDATE--更新数据库表中的数据
--数据定义
CREATE TABLE--创建一个数据库表
DROP TABLE--从数据库中删除表
ALTER TABLE--修改数据库表结构
CREATE VIEW--创建一个视图
DROP VIEW--从数据库中删除视图
CREATE INDEX--为数据库表创建一个索引 DROP INDEX--从数据库中删除索引
CREATE PROCEDURE--创建一个存储过程
DROP PROCEDURE--从数据库中删除存储过程 CREATE TRIGGER--创建一个触发器
DROP TRIGGER--从数据库中删除触发器
CREATE SCHEMA--向数据库添加一个新模式 DROP SCHEMA--从数据库中删除一个模式 CREATE DOMAIN--创建一个数据值域 ALTER DOMAIN--改变域定义
DROP DOMAIN--从数据库中删除一个域--数据控制
GRANT--授予用户访问权限
DENY--拒绝用户访问
REVOKE--解除用户访问权限
--事务控制
COMMIT--结束当前事务
ROLLBACK--中止当前事务
SET TRANSACTION--定义当前事务数据访问特征--程序化SQL
DECLARE--为查询设定游标
EXPLAN--为查询描述数据访问计划
OPEN--检索查询结果打开一个游标
FETCH--检索一行查询结果
CLOSE--关闭游标
PREPARE--为动态执行准备SQL 语句 EXECUTE--动态地执行SQL 语句
DESCRIBE--描述准备好的查询
---局部变量
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'
---全局变量
---必须以@@开头
--IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y'--打印字符串'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'
--CASE
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end
--WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x--打印变量x 的值
while @y < 3
begin
select @c = 100*@x + @y
print @c--打印变量c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end
--WAITFOR
--例 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 点零8 分后才执行SELECT 语句
waitfor time ’23:08:00’
select * from employee
***SELECT***
select *(列名)from table_name(表名)where column_name operator value
ex:(宿主)
select * from stock_information where stockid= str(nid)
stockname = 'str_name'
stockname like '% find this %'
stockname like '[a-zA-Z]%'---------([]指定值的范围)
stockname like '[^F-M]%'---------(^排除指定范围)
---------只能在使用like关键字的where子句中使用通配符)
or stockpath = 'stock_path'
or stocknumber < 1000
and stockindex = 24
not stocksex = 'man'
stocknumber between 20 and 100
stocknumber in(10,20,30)
order by stockid desc(asc)---------排序,desc-降序,asc-升序
order by 1,2---------by列号
stockname =(select stockname from stock_informationwhere stockid= 4)
---------子查询
---------除非能确保内层select只返回一个行的值,---------否则应在外层where子句中用一个in限定符
select distinct column_name form table_name---------distinct指定检索独有的列值,不重复select stocknumber ,“stocknumber + 10” = stocknumber + 10 from table_name
select stockname , “stocknumber” = count(*)from table_name group by stockname
---------group by 将表按行分组,指定列中有相同的值
having count(*)= 2---------having选定指定的组
select *
from table1, table2
where table1.id *= table2.id--------左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id--------右外部连接
select stockname from table1
union [all]-----union合并查询结果集,all-保留重复行
select stockname from table2
***insert***
insert into table_name(Stock_name,Stock_number)value(“xxx”,“xxxx”)
value(select Stockname , Stocknumber from Stock_table2)---value为select语句
***update***
update table_name set Stockname = “xxx” [where Stockid = 3]
Stockname = default
Stockname = null
Stocknumber = Stockname + 4
***delete***
delete from table_name where Stockid = 3
truncate table_name-----------删除表中所有行,仍保持表的完整性
drop table table_name---------------完全删除表
***alter table***---修改数据库表结构
alter table database.owner.table_name add column_name char(2)null.....sp_help table_name----显示表已有特征
create table table_name(name char(20), age smallint, lname varchar(30))
insert into table_name select.........-----实现删除列的方法(创建新表)
alter table table_name drop constraint Stockname_default----删除Stockname的default约束
***function(/*常用函数*/)***
----统计函数----
AVG--求平均值
COUNT--统计数目
MAX--求最大值
MIN--求最小值
SUM--求和
--AVG
use pangu
select avg(e_wage)as dept_avgWage
from employee
group by dept_id
--MAX
--求工资最高的员工姓名
use pangu
select e_name
from employee
where e_wage =
(select max(e_wage)
from employee)
--STDEV()
--STDEV()函数返回表达式中所有数据的标准差
--STDEVP()
--STDEVP()函数返回总体标准差
--VAR()
--VAR()函数返回表达式中所有值的统计变异数
--VARP()
--VARP()函数返回总体变异数
----算术函数----
/***三角函数***/
SIN(float_expression)--返回以弧度表示的角的正弦
COS(float_expression)--返回以弧度表示的角的余弦
TAN(float_expression)--返回以弧度表示的角的正切
COT(float_expression)--返回以弧度表示的角的余切
/***反三角函数***/
ASIN(float_expression)--返回正弦是FLOAT 值的以弧度表示的角
ACOS(float_expression)--返回余弦是FLOAT 值的以弧度表示的角
ATAN(float_expression)--返回正切是FLOAT 值的以弧度表示的角
ATAN2(float_expression1,float_expression2)
--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
DEGREES(numeric_expression)
--把弧度转换为角度返回与表达式相同的数据类型可为
--INTEGER/MONEY/REAL/FLOAT 类型
RADIANS(numeric_expression)--把角度转换为弧度返回与表达式相同的数据类型可为
--INTEGER/MONEY/REAL/FLOAT 类型
EXP(float_expression)--返回表达式的指数值
LOG(float_expression)--返回表达式的自然对数值
LOG10(float_expression)--返回表达式的以10 为底的对数值
SQRT(float_expression)--返回表达式的平方根
/***取近似值函数***/
CEILING(numeric_expression)--返回>=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型
FLOOR(numeric_expression)--返回<=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型
ROUND(numeric_expression)--返回以integer_expression 为精度的四舍五入值返回的数据--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
ABS(numeric_expression)--返回表达式的绝对值返回的数据类型与表达式相同可为
--INTEGER/MONEY/REAL/FLOAT 类型
SIGN(numeric_expression)--测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
PI()--返回值为π 即3.14***936
RAND([integer_expression])--用任选的[integer_expression]做种子值得出0-1 间的随机浮点数----字符串函数----
ASCII()--函数返回字符表达式最左端字符的ASCII 码值
CHAR()--函数用于将ASCII 码转换为字符
--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值
LOWER()--函数把字符串全部转换为小写
UPPER()--函数把字符串全部转换为大写
STR()--函数把数值型数据转换为字符型数据
LTRIM()--函数把字符串头部的空格去掉
RTRIM()--函数把字符串尾部的空格去掉
LEFT(),RIGHT(),SUBSTRING()--函数返回部分字符串
CHARINDEX(),PATINDEX()--函数返回字符串中某个指定的子串出现的开始位置
SOUNDEX()--函数返回一个四位字符码
--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值DIFFERENCE()--函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异
--0 两个SOUNDEX 函数返回值的第一个字符不同
--1 两个SOUNDEX 函数返回值的第一个字符相同
--2 两个SOUNDEX 函数返回值的第一二个字符相同
--3 两个SOUNDEX 函数返回值的第一二三个字符相同
--4 两个SOUNDEX 函数返回值完全相同
QUOTENAME()--函数返回被特定字符括起来的字符串
/*select quotename('abc', '{')quotename('abc')
运行结果如下
---{
{abc} [abc]*/
REPLICATE()--函数返回一个重复character_expression 指定次数的字符串 /*select replicate('abc', 3)replicate('abc',-2)
运行结果如下
----------------------
abcabcabc NULL*/
REVERSE()--函数将指定的字符串的字符排列顺序颠倒
REPLACE()--函数返回被替换了指定子串的字符串
/*select replace('abc123g', '123', 'def')
运行结果如下
----------------------
abcdefg*/
SPACE()--函数返回一个有指定长度的空白字符串
STUFF()--函数用另一子串替换字符串指定位置长度的子串
第二篇:SQL语言学习工作总结
以下是作者在学习SQL过程中,以工作总结方式写下点滴的感悟,敬请关注!
暑假过的真快总感觉昨天才刚放假,还想着这个暑假怎么过时,暑假就已经去了。
这个暑假一开始我们看了浙大的sql的视频,老师给我们的要求是只要看一遍就行。刚开始看的时候还能听懂一些,看到后面的时候基本就听不懂了,幸好老师对我们的要求不高,于时只好硬着头皮继续。
sql的视频其实总的说来无非讲的是对数据库、表、字段等的创建、修改和删除。我们不懂的也就是怎样使用代码来实现这些操作。我们现在只要对这些有了解就够了,以后还会有锻炼机会的。
之后我们参照着原代码做了《学生信息管理系统》,大概用了七天的时间。刚开始做的时候,觉得这个工程肯定会挺复杂的。但是做着做着感觉也就是那么回事。无非就是对几张表的操作。做这个工程最大的收获就是对刚学的sql知识有了一次熟练的机会,巩固了刚学的知识。也可以说是趁热打铁吧。
然后米老师给了我们更大的考验,让我们做《机房收费系统》,而且这次和上一次的《学生信息管理系统》不同的是,这次我们除了只有一个程序和数据库外,没有一个字的原码。
在得知我们可以把这次的工程做成任何样子时,我打算做一个类似于网吧那样的收费系统。也是一个cs系统。在网上查了一些主机如何与客户端通信的资料后,就开工了。虽然遇到了一些困难,但是到最后都一一解决了这三次的学习困难程度可以说是一次比一次高,米老师也是用心良苦呀。
经过这个暑假,对sql已经有了深一步的了解,还有就是将米老师的学习方法又应用了一次。可谓是受益匪浅。
现在软件工程的学习已经开始,我会继续努力的。
第三篇:SQL语言汇总
1.UPDATE MARK
SET 总分=语文+数学+英语
SELECT 准考证号,姓名,总分
FROM MARK
WHERE 语文>=75 AND数学>=75 AND 英语>=75 AND 语文+数学+英语>=240
ORDER BY 总分 DESC
UPDATE MARK
SET 修正分数=高考分数*1.3
WHERE 籍贯='云南' OR 籍贯='福建'
SELECT AVG(高考分数)as平均分
FROM MARK
GROUP BY 性别
SELECT *
FROM cj
WHERE 期中成绩>=80 OR 期末成绩>=80 ORDER BY 课程号 ASC
UPDATE cj
SET平均成绩=期中成绩*0.2+期末成绩*0.8
SELECT 书号,书名,作者
FROM gm
WHERE 书号 LIKE '理*' AND 单价>20 ORDER BY 单价 ASC
UPDATE gm
SET 金额=单价*数量
UPDATE Sale
SET 销售金额=销售数量*单价
UPDATE Wage
SET 实发工资=工资+奖金
SELECT 姓名,实发工资
FROM Wage
WHERE 姓名 LIKE '*辉'OR 姓名 LIKE ' *辉*' ORDER BY 年龄 DESC
SELECT 部门号, COUNT(*)as人数
FROM zhigong
GROUP BY 部门号
UPDATE kaoshi
SET平均成绩=笔试成绩*0.6+上机成绩*0.4
SELECT 考号,姓名,平均成绩
FROM kaoshi
WHERE 姓名 LIKE '黄*'
DELETE *
FROM mark
WHERE 学号='1003'
SELECT 学号,课程号,期末成绩
FROM mark
WHERE 学号 LIKE '*1'
ORDER BY 期末成绩 DESC
UPDATE fk
SET 超期罚款=单价*超期天数*0.005
SELECT *
FROM fk
WHERE 单价>=50 OR 超期天数>30 ORDER BY 超期罚款 DESC
UPDATE gp
SET 浮动盈亏=(市场现价-买入加个)*买入数量
SELECT 股票代码,买入时间,浮动盈亏 FROM gp
WHERE 股票代码 LIKE '6*' AND 浮动盈亏>0 ORDER BY 买入时间 ASC
UPDATE ah
SET 年龄=年龄+1
SELECT 寝室,COUNT(*)as 爱好球类人数 FROM ah
WHERE 爱好 LIKE '*球'
GROUP BY 寝室
UPDATE JHKC
SET 总价=单价*库存量
SELECT 设备编号,设备名称,单价
FROM JHKC
WHERE 库存量<300 AND 单价<500 ORDER BY 单价 DESC
UPDATE HCSK
SET 票价=600
WHERE 航班号=F807
SELECT 航班号,起飞日期,票价
FROM HCSK
WHERE 出发地='福州' AND 目的地='巴黎' ORDER BY 票价 ASC
第四篇:SQL语言
1.输出任意两个字符串变量的值(参考代码)
declare @v1 varchar(12),@V2 varchar(12)
set @v1='中国'
set @v2='你好!'
select @v1+@v2
2.为以下程序纠错
declare @v1 varchar(12),@V2 varchar(10)
set @v1='中国'
set @v2='你好!'
set @s='吗!'
select @v1+@v2+@s
3.运行以下代码,观察以下全局变量的功能
select 34@@connections 返回当前服务器的连接数目
select 1@@rowcount 返回上一条T-SQL语句影响的数据行数 select @@error返回上一条T-SQL语句执行后的错误号 select @@procid返回当前存储过程的ID号
select @@remserver 返回登录记录中远程服务器的名字 select @@spid返回当前服务器进程的ID标识
select @@version 返回当前SQL Server服务器的版本和处理器类型 select @@language 返回当前SQL Server服务器的语言
select @@connections
4.输入以下代码并理解其含意
bggin
if 3>5
select 'true'
else print 'false'
end
go
begin
if 'a'<'A'
select 'true'
else print 'false'
end
go
begin
if '张'>'李'
select 'true'
else print 'false'
end
go
begin
if getdate()>2008-10-10
print'true'
else print'false'
end
5.附加数据库student,并进行以下操作
use student
select * from xsda
以XSDa表为例,如果平均成绩高于75分,则显示“不错!”,否则,显示“加油呀!”。
declare @av1 char(12), @av2 char(12)
set @av1='不错!'
set @av2='加油!'
if(select avg(总学分)from xsda)>75
begin
select @av1
end
else
select @av2
编写一个程序,显示每一同学的成绩等级
select xh,zf,dj=
case
when zf>70 then '优秀'
when zf>65 then '良好'
when zf>=60 then '合格'
else '不合格'
end
from xsdn
6.求1-100偶数和(参考代码)
declare @i int,@s int/*定义变量*/
set @i=0/*变量赋初值*/
set @s=0
while @i<=100/*条件*/
begin
set @s=@s+@i/*累加求和*/
set @i=@i+2/*偶数*/
end
print @s
7.求10!
8.为以下程序纠错(求1-100的积)
declare @i int,@s int
set @i=0
set @s=0
while @i<=100 begin
set @s=@s*@iset @i=@i+2 end
print @s
第五篇:SQL语言以及SQL
SQL语言以及SQL*PLUS工具
1.SQL语言组成:
数据查询语言(DQL):SELECT;
数据操纵语言(DML):INSERT、UPDATE、DELETE; 事务控制语言(TCS):COMMIT、ROLLBACK;
数据定义语言(DDL):CREATE、DROP、ALTER;
数据控制语言(DCL):GRANT、REVOKE;
2.数据查询语言(DQL):
一般格式:
1.SELECT [ALL|DISTINCT] <目标列表达式> [, <目标列表达式>]…
2.FROM <表名或者视图名> [, <表名或者视图名>]…
3.[WHERE <条件表达式>]
4.[GROUP BY <列名1> [HAVING <条件表达式>]]
5.[ORDER BY <列名2> [ASC|DESC];
实例:
6.SELECT empno,ename FROM emp WHERE ename<>'a' order by empno;
3.数据操纵语言(DML):
INSERT:
一般格式:
7.INSERT
8.INTO <表名> [(<属性列1>[, <属性列2>]…)]
9.VALUES(<常量1>[, <常量2>]…);
实例:
INSERT INTO emp(empno,ename)VALUES(1,’test1’);
UPDATE:
一般格式:
10.UPDATE<表名>
11.SET <列名>=<表达式> [,<列名>=<表达式>]…
12.[WHERE <条件>];
实例:
13.UPDATE emp SET ename=’test2’ WHERE empno=1;
DELETE:
一般格式:
14.DELETE
15.FROM <表名>
16.[WHERE <条件>];
实例:
DELETE FROM emp WHERE empno=1;
4.事务控制语言(TCS):
COMMIT:
说明:
5.6.7.8.17.放在DML之后,提交事务。 一般格式: 18.COMMIT; 实例: INSERT INTO emp(empno,ename)VALUES(1,’test1’);COMMIT; ROLLBACK: 说明: 19.放在DML之后,回滚事务。 一般格式: 20.ROLLBACK; 实例: INSERT INTO emp(empno,ename)VALUES(1,’test1’); ROLLBACK;课后练习(2小时): 用各种组合反复练习数据查询语言DQL; 用各种组合反复练习数据操纵语言DML; 和DML结合反复练习事务控制语言TCS。SQL*PLUS简介: 是Oracle数据库提供的用于和数据库交互的工具; 数据库管理员管理数据库的主要工具; 支持SQL-2和SQL-3标准; 支持Oracle PL/SQL语言; 支持一套Oracle公司定义的SQL*PLUS操纵语言。SQL*PLUS语言介绍: 不是标准语言; 可以缩写(一般取英文单词的前4位); 不用加分号; 分成数据库访问、输出格式设置、文本编辑、执行程序、环境设置、其他等几类。常用的SQL*PLUS命令:
CONNECT(CONN):连接数据库:
21.CONN SCOTT/TIGER@FIS
EXIT:退出SQL*PLUS;
DESCRIBE(DESC):显示数据库对象的结构:
22.DESC emp
SHOW:显示系统信息:
23.SHOW user
EDIT:文本编辑;
RUN(/):运行前一命令;
SAVE:保存前一命令:
24.SAVE c:temptest.txt
PASSWORD(PASSW):修改当前用户的口令; SPOOL:将输出结果保存到本地硬盘上
SPOOL c:temptest.txt SELECT * FORM emp;SPOOL OFF
START(@):路径*.sql执行脚本 column 字段名 format a35set line 100