第一篇:每日教学SQL部分基本语法
1、SQL学习记录
1.1、第一讲
基本SQL语句select语法
select [查找内容] from [表] where [表字段]=[值] order by [字段]
例:
数据库表结构如下: 人员表
ID
姓名
年龄 1
张三2
李四
要查找张三
select * from 人员表 where 姓名='张三'
查找年龄大于15岁的
select * from 人员表 where 年龄>15
若要将查询结果按照年龄升序排列
select * from 人员表 where 年龄>15 order by 年龄 asc 降序
select * from 人员表 where 年龄>15 order by 年龄 desc
若只要数据表中的姓名字段 则
select 姓名 from 人员表 where 年龄>15 order by 年龄 asc
1.2、第二讲
基本SQL语句insert语法
insert into [表名](字段1,字段2,字段3,…)values(值1, 值2, 值3,…)
例:
数据库表结构如下: 人员表
ID
姓名
年龄 1
张三2
李四 要向表中插入一条数据
Insert into 人员表(ID,姓名,年龄)values(3,’王五’,30)注意在插入值的时候,数字不要加单引号,字符要加
1.3、第三讲
基本SQL语句update语法
update [表名] set 字段1=值1,字段2=值2,字段3=值3,… where [字段]=值
例:
数据库表结构如下: 人员表
ID
姓名
年龄
班级 1
张三
一班 2
李四
二班 3
王五
二班
要将所有人的班级修改为一班 Update 人员表 set 班级=’一班’
要将王五的年龄更改为25岁
Update 人员表 set 年龄=25 where 姓名=’王五’
要修改张三的名字为张老幺,年龄改为15 Update 人员表 set 姓名=’张老幺’,年龄=15 where 姓名=’张三’
1.4、第四讲
基本SQL语句delete语法
delete from [表名] where [字段1]=值1 and [字段2]=值2 例:
数据库表结构如下: 人员表
ID
姓名
年龄
班级 1
张三
一班 2
李四
二班 3
王五
二班
若要删除王五这个学生
Delete from 人员表 where 姓名=’王五’
若要删除年龄大于20岁的
Delete from 人员表 where 年龄>20
若要删除姓张的,并且年龄大于20的
Delete from 人员表 where 姓名 like ‘张%’ and 年龄>20
这里出现了 like和% 下一讲介绍者2个字符的意义
1.5、like和% 在SQL中,like和=号的使用方法相同,但还是有所不同。使用方法如下:
例:
数据库表结构如下: 人员表
ID
姓名
年龄
班级 1
张三
一班 2
李四
二班 3
王五
二班
刘四麻
三班
要查找姓名为张三的人员的两种方法: Select * from 人员表 where 姓名=’张三’ Select * from 人员表 where 姓名 like ‘张三’
讲讲区别
Like可以与通配符%配合使用,而=号则不能,要查找姓名中姓张的人,使用=号就不可以,需要使用like比较字符。
Select * from 人员表 where 姓名 like ‘张%’ 查找名字中带有四的
Select * from 人员表 where 姓名 like ‘%四%’ 查找姓名以五结尾的人
Select * from 人员表 where 姓名 like ‘%五’
1.6、使用count、sum、min、max、avg函数
在SQL中,可以使用一些函数进行简单的数据运算,上述函数就是其中的一部分,意思如下:
Count()求总数 Sum()求和 Min()最小 Max()最大 Avg()平均
使用方法如下:
Select [函数(字段)] from [表] where [条件]
例:
数据库表结构如下: 人员表
ID
姓名
年龄
班级 1
张三
一班 2
李四
二班 3
王五
二班 4
刘四麻
三班
要查询数据库中所有记录条数 Select count(*)from 人员表
要查询名字中带有四的总人数
Select count(*)from 人员表 where 姓名 like ‘%四%’
要查询最大、最小、平均年龄 Select max(年龄)from 人员表 Select min(年龄)from 人员表 Select avg(年龄)from 人员表
1.7、使用distinct和非distinct剔重的方法
在SQL中提供了一种剔除重复的谓词,distinct,在使用方法如下: Select distinct [字段] from [表] where [条件]
例:
数据库表结构如下: 人员表
ID
姓名
年龄
班级 1
张三
一班 2
李四
二班 3
张三
一班 4
刘四麻
三班
要剔除表中重复的张三,写法如下: Select distinct 姓名 from 人员表
这句查询执行的结果为 姓名 张三 李四 刘四麻
如果想要得到完整的表,可以采用分组、in等方法,但是由于各种数据库使用的方法不同,下面第一条、第二在在实际运行过程中可能出现出错,需要根据各数据库的不同语法进行修改。
Select *,count(distinct 姓名)from 人员表 group by 姓名
Select * from 人员表 group by 姓名
Select * from 人员表 where 姓名 in(select distinct 姓名 from 人员表)这里出现的in将在后面进行讲解
1.8、多表组合查询
Select [表1].[字段1],[表2].[字段2]…,[表2].[字段1],[表2].[字段2] from [表1],[表2] where [表1].[字段] = [值] and [表2].[字段] = [值]
例:
数据库表结构如下: 人员表
ID
姓名
年龄
班级 1
张三
一班 2
李四
二班 3
王五
二班 4
刘四麻
三班
成绩表
ID
姓名
班级
语文
数学
英语 1
张三
一班
2
李四
二班
要查询一班张三的年龄、语文、数学成绩,则使用语句如下:
Select 人员表.姓名,人员表.年龄,成绩表.语文,成绩表.数学 from 人员表,成绩表 where 人员表.姓名=’张三’ and 人员表.班级=’一班’ and 人员表.姓名=成绩表.姓名 1.9、使用in和not in 使用in和not in是使用集合的方式进行提取数据,in解释为包含在,not in则为不包含在,使用方法如下:
Select [字段] from [表] where [字段] in/not in(集合)
例:
数据库表结构如下: 人员表
ID
姓名
年龄
班级 1
张三
一班 2
李四
二班 3
王五
二班 4
刘四麻
三班
成绩表
ID
姓名
班级
语文
数学
英语 1
张三
一班
2
李四
二班
在这里 集合 可以有多种书写方式,例如:
要查找人员表中叫张
三、李
四、王五的人员,可以使用 Select * from 人员表 where 姓名 in(‘张三’,’李四’,’王五’)
要去掉符合另外一个表的查询结果中的内容,可以使用
Select * from 人员表 where 姓名 not in(select 姓名 from 成绩表)
1.10、使用as 有时候在进行两个表的连接查询时,两个表中可能出现同样的字段,在这种情况下,为了区分不同的字段,需要通过as对显示的字段名进行替换。使用方法如下: Select [字段] as [新字段名] from [表]
例:
数据库表结构如下: 人员表
ID
姓名
年龄
班级 1
张三
一班 2
李四
二班 3
王五
二班 4
刘四麻
三班
成绩表
ID
姓名
班级
语文
数学
英语 1
张三
一班
2
李四
二班
在查询的过程中,使用语句如下:
Select 人员表.*,成绩表.* from 人员表,成绩表 where 人员表.姓名=成绩表.姓名 查询结果为:
ID
姓名
年龄
班级
ID
姓名
班级
语文
数学
英语 1
张三
一班
张三
一班
2
李四
二班
李四
二班
在查询结果中出现了2个ID字段、2个姓名字段、2个班级字段,我们不知道那个列是从那个表中读出来的,因此,特别是在取值的过程中,可能会出现问题,为了避免这种情况,可以在写语句的过程中进行更名。
上述写法更改为:
Select 人员表.ID as a,人员表.姓名 as b, 人员表.班级 as c, 人员表.年龄,成绩表.* from 人员表,成绩表 where 人员表.姓名=成绩表.姓名 查询结果为:
a
b
c
年龄
ID
姓名
班级
语文
数学
英语 1
张三
一班
张三
一班
2
李
二班
李四
二班
这样在做取值的时候就不会出错了
1.11、使用inner join、left join和right join 在工作中有时会遇到关系数据库,各表之间通过ID号确认关系,有时候只看ID号不是很明白,在这种情况下,可以使用连接查询。
基本语法
Select [表1.字段] from [表1] inner join/left join/right join [表2] on 表1.字段=表2.字段
例:
数据库表结构如下: 人员表
ID
姓名
年龄
班级 1
张三
一班 2
李四
二班 3
王五
二班 4
刘四麻
三班
成绩表
ID
人员
语文
数学
英语 1
2
3
4
关系:成绩表中人员用数字表示,与人员表中的ID号字段对应,在这种情况下,如果使用select * from 成绩表,人员字段将显示ID号,不能显示人员的姓名,不方便。因此可以使用连接查询。
Select * from 成绩表 inner join 人员表 on 成绩表.人员=人员表.ID 查询结果为:
ID
人员
语文
数学
英语 1
张三
2
王五
这样显示就很直观
Left join和right join类似,但是有区别,如果上诉语句中使用left join,则结果为: ID
人员
语文
数学
英语
ID
姓名
年龄
班级 1
张三
一班 2
李四
二班 3
null null
null
null 4
null null
null
null
从结果上看,left join 是以左表为基准表,显示匹配的数据,而不匹配的数据则显示为空
如果上诉语句中使用right join,则结果为:
ID
人员
语文
数学
英语
ID
姓名
年龄
班级 1
张三
张三
一班 2
王五
李四
二班 Null null
null
null
null
王五
二班 Null null
null
null
null
刘四麻
三班
right join 则是以右表为基准表,显示匹配的数据,而不匹配的数据则显示为空
第二篇:基本sql语句
典型SQL语句汇总
Sys用户是超级用户,具有sysdba的角色,密码是:change_on_install。System用户是管理操作员,具有sysoper的角色,密码是:manager。
普通登录用户:
用户名:scott,密码:tiger
用户名:sys,密码:change_on_install
用户名:system,密码:manager
用户名:sysman,密码:oem_temp
1.创建用户:create user
2.给用户修改密码:alter user 用户名 identified by 密码
3.删除用户:drop user 或者drop user 用户名[cascade]
4.授权操作
1)授权连接:grant connect to xiaoming
2)连接数据库:conn xiaoming/m1234
3)授权小明对emp表的选择操作:grant select on emp to xiaoming
4)授权小明对emp表的更新操作:grant update on emp to xiaoming
5)授权小明对emp表的所有操作:grant all on emp to xiaoming
6)对象权限授权:grant select on emp to xiaoming with grant option
7)系统权限授权:grant connect to xiaoming with admin option
5.建表
表1:Create table student(xh number(4),表2:create table classes(Xm varchar2(20),classId number(2),Sex char(2),className varchar2(40),Birthday date,);
Sal number(7,2));
6.对上述两张表的操作:
1)添加一个字段:alter table student add(classId number(2))
2)修改字段长度:alter table student modify(xm varchar2(30))
3)删除一个字段:alter table student drop column sal
4)修改表的名字:rename student to stu
5)删除表:drop table student
6)改变日期的格式:alter session set nls_date_format=‟yyyy_mm_dd‟
7)添加数据:insert into student values(„A001‟,‟张三‟,‟男‟,‟11-12月
-1997‟,‟113.5‟,10)或者insert into student(xh,xm,sex,birthday)values(„1‟,‟aa‟,‟女‟,null)
8)修改数据:update student set sex=‟女‟where xh=‟A001‟,修改多个字段:update student set sal=sal/2,classId=3 where sex=‟男‟
9)删除数据:
Delete from student;--删除表
Drop table student;--删除表的结构和数据
Delete from student where sal=2000;--删除表中的数据
Truncate table student;--删除表中的所有记录,表结构还在,无法找回删除的记录,速度快
7.表的查询
Select ename,sal,job from emp
Select sal*13+nvl(comm,0)*13 “年工资”,ename from emp
Select ename,sal from emp where sal>=2000 and sal<=2500
Select distinct ename,deptno from emp;--取消重复行
Select * from emp where sal>(select avg(sal)from emp)
8.如何使用like操作符:%:任意0到多个字符,_:表示任意单个字符
Select ename,sal from emp where ename like „s%‟
Select ename,sal from emp where ename like „_s%‟
9.where条件中in的使用:
Select * from emp where empno in(7844,7566)
Select * from emp where mgr is null
10.order by的使用
Select * from emp order by deptno asc,sal desc,hiredate desc;--排序默认是asc
11.group by用于对查询结果进行分组统计。
Having用于限制分组显示结果。
Select avg(sal),deptno from emp
group by deptno
having avg(sal)<2000
12.创建存储过程
1)先创建一个简单的表:
Create table mytest(name varchar2(30),password varchar2(30))
2)创建过程:
过程1:
create procedure sp_pro1 is
begin
insert into mytest(„EE‟,‟m1234‟);
end;
过程2:
create or replace procedure sp_pro2 is
begin
delete from mytest where name=‟EE‟;
end;
select * from rh_blood where userid='K999998264' and f_datetime_device between TO_DATE('2014-01-01 00:00:01','yyyy-mm-dd hh24:mi:ss')and
TO_DATE('2014-01-31 23:23:59','yyyy-mm-dd hh24:mi:ss');
第三篇:SQL基础数据库语法
一、表空间操作
1.创建表空间
Create tablespace xxx(表名)Datafile ’x:xxxxxx.dbf(文件地址)’ Size 10m(文件大小)autoexdend on;2.删除表空间
Droptablespacexxx(表空间名); 删除表空间及文件
Drop tablespace xxx including contents and datafiles;
二、用户操作
1.创建用户
Create user xxx(用户名)identified by xxx(密码)Default tablespace xxx(表名);2.删除用户
Drop user xxx(用户名)cascade;3.授予权限
Grantconnect,resource(权限)to xxx(用户名);Grant dba(最高权限)to xxx(用户名);Grant select on scott.emp to xxx(用户名);Grant update on scott.emp to xxx(用户名);撤销权限
Revoke connect,resource(权限)fromxxx(用户名);4.用户登录
Connxxx(用户名)/xxx(密码)@xxx(表空间名);
三、表数据操作
1.创建表结构语法
1)创建表结构
CREATE TABLE student(stu_no CHAR(4)PRIMARY KEY NOT NULL,--学号,主键,非空
stu_name VARCHAR2(30)NOT NULL,--姓名,非空
stu_id VARCHAR2(18),--身份证号,代表18位整数
stu_gid Number(10),--年级
stu_age NUMBER(3,0)--年龄);2)复制表结构
利用现有表创建新表,select 后边有多少字段,新表将有多少个字段,主键不会被创建
CREATE TABLE stu_info AS SELECT stu_no,stu_age FROM student;3)修改表结构
修改student表,添加stu_seat(座号)和stu_Address(住址)两个列
ALTER TABLE student ADD(stu_seat NUMERIC(2,0),stu_address VARCHAR2(20));修改student表的列的定义 ALTER TABLE student modify(stu_name VARCHAR2(50), stu_address VARCHAR2(100));删除student表中stu_ address和stu_seat列 ALTER TABLE student drop(stu_address, stu_seat);修改student表列名
Alter table student rename column stu_no TO rempno;
4)删除表结构
删除student表结构及数据 这种删除的情况,可以恢复; Drop table student;只删除表数据,每条删除的记录不写日志,省资源,效律比delete高
但是,绝对情况下都不使用truncate删除表,因为不可以恢复。Truncate table student;5)添加注释
Comment on table student is '学生表';Comment on column student.name is '名称';2.插入表数据
往student表插入数据 Insert into
student(stu_no,stu_name,stu_id,stu_gid,stu_age)values('a001','张大','44***92111',10,19);insert into student(stu_no,stu_name,stu_id,stu_gid,stu_age)values('a002','张二','44***92112',10,20);insert into
student(stu_no,stu_name,stu_id,stu_gid,stu_age)values('a003','张三','44***92113',10,20);commit;最后的commit提交数据到数据库,否则只是在缓存插入了表数据。
3.删除表数据
根据条件删除表数据
Delete from student where stu_no='a004';请空表,不写日志,省资源,效律高,属于数据定义语言 Truncate table student;4.修改表数据
修改学号为‘a002’学员的名字为‘李二’
Update student set(列)stu_name='李二' where stu_no='a002';所有学员的年龄都加1 Update student set(列)stu_age=stu_age+1;5.查询表数据
order bygroup bywherehavinglikein 等子查询方法 1)distinct去重复查询
查询(结果)无重复数据行,distinct关键字使用:
查询结果包括学员名字和年龄,如果存在学员名字和年龄都一样的多条记录将只返回一条
-->Select distinctstu_name,stu_age from student;2)Order by结果排序
Order by 语法默认是升序,加desc语法表示降序。E:工的姓名按首字母排序,并写出姓名的长度(length)。select last_name,length(last_name)from employees order by last_name;降序:
Select last_name,length(last_name)from employees order by last_name desc;
第四篇:SQL语言基本语句介绍
SQL语言基本语句介绍
表的建立
关系数据库的主要特点之一就是用表的方式组织数据。表是SQL语言存放数据、查找数据以及更新数据的基本数据结构。在SQL语言中,表有严格的定义,它是一种二维表,对于这种表有如下规定:
1)每一张表都有一个名字,通常称为表名或关系名。表名必须以字母开头,最大长度为30个字符。
2)一张表可以由若干列组成,列名唯一,列名也称作属性名。
3)表中的一行称为一个元组,它相当于一条记录。
4)同一列的数据必须具有相同的数据类型。
5)表中的每一个列值必须是不可分割的基本数据项。
注意:当用户需要新的数据结构或表存放数据时,首先要生成一个表。
语法:
CREATE TABLE 表名 [表约束]
(列名1 数据类型 [缺省值1,列约束1]
(列名2 数据类型 [缺省值2,列约束2]
…
列名n 数据类型 [缺省值n,列约束n]
[TABLESPACE 表空间名称]
[STORAGE(存贮的子句)]
[ENABLE 约束名]
[DISABLE 约束名]
插入数据
当一个表新建成时,它里面没有数据,通过向表中扦入数据,建成表的实例。
语句句法:
INSERT INTO 表名[(列名1,…)]
VALUES(值1,值2,…,值n)
[子查询];
假设有一张表Student如下所示:
NO NAME AGE
1001 A 12
1002 B 14
将新学生E增加到上表中,并按照表的结构将信息添加完整,需要如下语句:
INSERT INTO STUDENT VALUSE(1003, 'E',12);
修改数据
对表中已有数据进行修改,语句句法:
UPDATE 表名SET 列名1=表达式1,列名2=表达式2,…
WHERE 条件;
例如:对下表Student
NO NAME AGE
1001 A 12
1002 B 14
将B的年纪改为18;应该执行以下语句:
UPDATE STUDENT SET AGE=18 WHERE NAME='B';
删除数据
删除表中已有数据,不能删除不存在的数据。
语句句法:
DELETE FROM 表名 WHERE 条件;
例如:
对下面Student表进行删除,要删除其中年纪为12的学生;
NO NAME AGE
1001 A 12
1002 B 14
DELETE FROM STUDENT WHERE AGE=12;
表结构的修改
在已存在的表中增加新列,语句句法:
ALTER TABLE 表名 ADD(新列名 数据类型(长度));
例如:
ALTER TABLE STUDENT ADD(DEPARTMENT CHAR(8));
b.增加已有列的数据类型。
例如:
ALTER TABLE STUDENT MODIFY(NAME VARCHAR2(25));
表的删除
将已经存在的表删除,语句句法:
DROP TABLE表名;
例如:
DROP TABLE EMP;
查询语句
SELECT命令的语法为:
SELECT [DISTINCT|ALL] {*|模式名.] {表名|视图名|
快照名].*…| {表达式[列别名]…} } [, [模式名.] {表名|
视图名|}.*…| 表达式[列别名] ]…
FROM [模式名.] {表名|视图名|快照名} [@数据库链名] [表别名]
[, [模式名.] {表名|视图名|快照名} [@数据库链名]
[表别名] ]…
[WHERE条件]
[START WITH条件 CONNECT BY 条件]
[GROUP BY表达式[,表达式] …[HAVING条件]
[UNION|UNION ALL |INTERSECT|MINUS]SELECT命令
[ORDER BY{表达式|位置} [ASC|DESC] [, {表达式|位置[ASC|DESC]}]…]
例如:对于STUDENT表:
NO NAME AGE
1001 AE 12
1002 BT 14
(1)查询年纪为12的学生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE=12;
(2)查询年纪在12至16岁之间的学生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE BETWEEN 12 AND 16;
(3)查询年纪不在12至16岁之间的学生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE NOT BETWEEN 12 AND 16;
(4)查询所有姓名以A开头的学生的姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE NAME LIKE 'A%';
(5)列出所有学生年纪的和,年纪的平均值,最大值,最小值,最大值与最小值之间的差值;
SELECT AVG(AGE), SUM(AGE), MAX(AGE), MIN(AGE), MAX(AGE)-MIN(AGE);
(6)将所有学生按学号顺序升序排列;
SELECT * FROM STUDENT ORDER BY NO DESC;
(7)将所有学生按学号顺序升序排列;
SELECT * FROM STUDENT ORDER BY NO ASC;
第五篇:SQL基本操作语句笔记
一、SQL基本操作语句(DML):Insert,Select,Update,Delete1、INSERT语句:将一行记录插入到指定的一个表中。
1.1语法:
INSERTINTOtable[(column { ,column})]ALUES(columnvalue [{,columnvalue}])
1.2举例:
1.2.1、INSERTINTOEMPLOYEESVALUES('Smith','John','1980-06-10','Los Angles',16,45000);
1.3注意事项:
1.3.1、系统将试着将数值填入到相应的列中,按照创建表时定义的顺序排列。
1.3.2、VALUE子句和可选的列名列表中必须使用圆括号。
1.3.3、未列出的列中将自动填入缺省值,如果没有设置缺省值则填入NULL。
1.3.4、所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。
1.3.5、输入文字值时要使用单引号,双引号用来封装限界标识符。
2、SELECT语句:可以从一个或多个表中选取特定的行和列。
2.1语法:
SELECT[DISTINCT](column [{, columns}])| * FROM table [ {, table}][ORDER BY column [ASC] | DESC [ {, column [ASC] | DESC }]]WHEREpredicate [ { logical-connector predicate } ]
2.2举例:
2.2.1SELECTBRANCH_OFFICEFROMEMPLOYEES 最简单的语句
2.2.2SELECTBRANCH_OFFICEFROMEMPLOYEES 消除结果中的重复行的语句
2.2.3SELECTBRANCH_OFFICEFROMEMPLOYEESORDER BY BRANCH_OFFICE消除结果中重复行并按照升序排列,降序用关键字DESC
2.2.4SELECTFROMEMPLOYEES 选择表中所有数据可用*号
2.3定义选择标准:SELECTcolumnsFROMtables[WHEREpredicates]
举例:SELECT * FROMEMPLOYEESWHERELAST_NAME = 'Jones' 查询所有姓为Jones的职员 使用最多的六种比较:等于 =,不等于 <>,小于 <,大于 >,小于或等于 <=,大于或等于 >=
2.3.1逻辑连接符:为了进一步定义一个WHERE子句,可以使用逻辑连接符AND,OR和NOT,断言可以与其他的断言嵌套使用。
例1:为了只得到职员Davy Jones的记录,用户可以输入如下语句:SELECT * FROMEMPLOYEESWHERELAST_NAME = 'Jones'ANDFIRST_NAME = 'Davy'
例2:如果用户需要定义一个SELECT语句来使得当其中任何一项成立就满足条件时,可以使用OR连接符:SELECT * FROMEMPLOYEESWHERELAST_NAME = 'Jones'ORLAST_NAME = 'Smith'
例3:如果想要查看除了Boston办事处的职员以外的其他所有职员的信息时,可以进行如下的查询:SELECT * FROMEMPLOYEESWHERENOT(BRANCH_OFFICE = 'Boston')
3、UPDATE语句:在已知的表中对现有的行进行修改。
3.1语法:
UPDATE table SET column = value [{,column = value}][ WHERE predicate [ { logical-connector predicate}]]
3.2举例:
3.2.1UPDATEEMPLOYEESSETGRADE = 16, SALARY = 40000WHEREFIRST_NAME = 'Indiana' ANDLAST_NAME = 'Jones'
4、DELETE语句:用来删除已知表中的行。
4.1语法:DELETEFROMtable[WHERE predicate [ { logical-connector predicate} ] ]
4.2举例:DELETEFROMEMPLOYEESWHEREBRANCH_OFFICE = 'Los Angeles'