每日教学SQL部分基本语法_sql基础教学篇
每日教学SQL部分基本语法由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“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
404
关系:成绩表中人员用数字表示,与人员表中的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 则是以右表为基准表,显示匹配的数据,而不匹配的数据则显示为空