快捷搜索:
来自 网络数据库 2019-09-12 04:58 的文章
当前位置: 67677新澳门手机版 > 网络数据库 > 正文

SQL学习笔记1,SQL语句学习

转载地址:

 * 以下内容是我在学习SQL()的时候的学习笔记

 

 * 学习时使用的数据库软件是MySQL数据库可视化工具SQLyogEnt

* 以下内容是我在学习SQL()的时候的学习笔记

 * 如果大家有发现什么不对的地方请告诉我。谢啦!!☆⌒(*^-゜)v

 * 学习时使用的数据库软件是MySQL数据库可视化工具SQLyogEnt

 * 在这里需要注意的是,和SqlServer相比MySQL不支持事务处理,没有视图,没有存储过程和触发器,没有数据库端的用户自定义函数,不能完全使用标准的SQL语法

 * 如果大家有发现什么不对的地方请告诉我。谢啦!!☆⌒(*^-゜)v

 

 

第一章 SQL基础教程

第一章 SQL基础教程

一、SQL简介

一、SQL简介

1:什么是SQL?

1:什么是SQL?

A:SQL指结构化查询语句    B:SQL使我们有能力访问数据库     C:SQL是一种ANSI(美国国家标准化组织)的标准计算机语言

A:SQL指结构化查询语句    B:SQL使我们有能力访问数据库     C:SQL是一种ANSI(美国国家标准化组织)的标准计算机语言

2:SQL能做什么?

2:SQL能做什么?

*面向数据库执行查询   *从数据库中取出数据   *向数据库插入新的记录   

*面向数据库执行查询   *从数据库中取出数据   *向数据库插入新的记录   

*更新数据库中数据   *从数据库删除记录   *创建数据库   *创建表   

*更新数据库中数据   *从数据库删除记录   *创建数据库   *创建表   

*创建存储过程   *创建视图   *设置表、存储过程和视图的权限

*创建存储过程   *创建视图   *设置表、存储过程和视图的权限

3:RDBMS

3:RDBMS

RDBMS是指关系型数据库管理系统

RDBMS是指关系型数据库管理系统

RDBMS是SQL的基础,同样也是所有现代数据库系统的基础,如MS SQL Server、IBM DB2、Oracle、MySQL以及Microsoft Access

RDBMS是SQL的基础,同样也是所有现代数据库系统的基础,如MS SQL Server、IBM DB2、Oracle、MySQL以及Microsoft Access

RDBMS中的数据存储在被称为表的数据库对象中

RDBMS中的数据存储在被称为表的数据库对象中

表是相关的数据项的集合,他由列和行组成。

表是相关的数据项的集合,他由列和行组成。

二、SQL语法

二、SQL语法

注意:SQL对大小写不明感!!!

注意:SQL对大小写不明感!!!

1:SQL语句后面的分号

1:SQL语句后面的分号

某些数据库系统要求在每条SQL命令的末端使用分号。

某些数据库系统要求在每条SQL命令的末端使用分号。

分号是在数据库系统中分隔每条SQL语句的标准方法,这样就可以在服务器的相同请求中执行一条以上的语句。

分号是在数据库系统中分隔每条SQL语句的标准方法,这样就可以在服务器的相同请求中执行一条以上的语句。

如果使用的是MS Access和SQL Server 2000,则不必在每条SQL语句之后使用分号,不过某些数据库要求必须使用分号。

如果使用的是MS Access和SQL Server 2000,则不必在每条SQL语句之后使用分号,不过某些数据库要求必须使用分号。

2:SQL DML和DDL

2:SQL DML和DDL

可以把SQL分为两个部分:数据操作语言(DML)和数据库定义语言(DDL)

可以把SQL分为两个部分:数据操作语言(DML)和数据库定义语言(DDL)

SQL(结构化查询语句)是适用于执行查询的语法。但是SQL语言也包含用于更新、插入和删除记录的语法。SQL的DML部分:select、update、delete、insert into 。 数据库定义语言(DDL)部分使我们有能力创建或删除表格,我们也可以定义索引(键),规定表之间的连接,以及表间的约束:

SQL(结构化查询语句)适用于执行查询的语法。但是SQL语言也包含用于更新、插入和删除记录的语法。查询和更新构成了SQL的DML部分:select、update、delete、insert into 。 数据库定义语言(DDL)部分使我们有能力创建或删除表格,我们也可以定义索引(键),规定表之间的连接,以及事假表间的约束:

Create database、alert database、create table、alert table、drop table、create index、drop index

Create database、alert database、create table、alert table、drop table、create index、drop index

三、Select

三、Select

User表里面的数据如下

User表里面的数据如下

 图片 1

 图片 2

查询user表里面的user_name字段和user_age字段的所有数据

查询user表里面的user_name字段和user_age字段的所有数据

Select user_name,user_age from user

Select user_name,user_age from user

 图片 3

 图片 4

查询user表中所有的字段数据,用 * 表示列的名称

查询user表中所有的字段数据,用 * 表示列的名称

Select * from user

Select * from user

 图片 5

 图片 6

四、Distinct

四、Distinct

Distinct选取所有的值的时候不会出现重复的数据

Distinct选取所有的值的时候不会出现重复的数据

用普通的查询,查询所有

用普通的查询,查询所有

Select * from user

Select * from user

 图片 7

 图片 8

Select distinct user_name,user_age from user

Select distinct user_name,user_age from user

注意:不能有user_id,因为两个Mary的user_id不一样,加上就不算相同数据

注意:不能有user_id,因为两个Mary的user_id不一样,加上就不算相同数据

 图片 9

 图片 10

五、Where

五、Where

1:查询user_id等于1 的数据

1:查询user_id等于1 的数据

Select * from user where user_id = 1

Select * from user where user_id = 1

 图片 11

 图片 12

2:查询user_age大于等于12的数据

2:查询user_age大于等于12的数据

Select * from user where user_age >=12

Select * from user where user_age >=12

 图片 13

 图片 14

3:查询user_age不等于12的数据

3:查询user_age不等于12的数据

Select * from user where user_age <> 12

Select * from user where user_age <> 12

 图片 15

 图片 16

六、ADN 和 OR

六、ADN 和 OR

And和or在where子语句中把两个或多个条件结合起来。如果需要两个条件都成立就是用and如果只需要其中一个条件成立就使用or

And和or在where子语句中把两个或多个条件结合起来。如果需要两个条件都成立就是用and如果只需要其中一个条件成立就使用or

Select * from user where user_name = 'mary' and user_age = 12

Select * from user where user_name = 'mary' and user_age = 12

需要注意的是SQL使用单引号来环绕文本值,如果是数值则不需要引号

需要注意的是SQL使用单引号来环绕文本值,如果是数值则不需要引号

 图片 17

 图片 18

Select * from user where user_name='mary' or user_age =13

Select * from user where user_name='mary' or user_age =13

 图片 19

 图片 20

结合and和or使用圆括号来组成复杂的表达式

结合and和or使用圆括号来组成复杂的表达式

Select * from user where (user_name = 'mary' and user_age = 12) or(user_age =13)

Select * from user where (user_name = 'mary' and user_age = 12) or(user_age =13)

 图片 21

 图片 22

七、Order by

七、Order by

1:对指定列进行升序排列

1:对指定列进行升序排列

Select * from user order by user_name

Select * from user order by user_name

 图片 23

 图片 24

2:按照user_id逆序排列

2:按照user_id逆序排列

Select * from user order by user_id DESC

Select * from user order by user_id DESC

 图片 25

 图片 26

2:按照升序排列user_id逆序排列user_age

2:按照升序排列user_id逆序排列user_age

SELECT * FROM user order by user_id ASC,user_age DESC

SELECT * FROM user order by user_id ASC,user_age DESC

 图片 27

 图片 28

3:按照升序排列user_id逆序排列user_age

3:按照升序排列user_id逆序排列user_age

SELECT * FROM user order by user_age DESC,user_id ASC

SELECT * FROM user order by user_age DESC,user_id ASC

 图片 29

 图片 30

注意:前面的条件优先级更高!!

注意:前面的条件优先级更高!!

八、Insert

八、Insert

User表

User表

 图片 31

 图片 32

插入一行数据 user_id为2 user_name为tom,user_age为12

插入一行数据 user_id为2 user_name为tom,user_age为12

注意:如果每一项都有插入的话就不需要在前面列出列名!!

注意:如果每一项都有插入的话就不需要在前面列出列名!!

Insert into user values(2,'tom',12)

Insert into user values(2,'tom',12)

图片 33

图片 34

新插入一行数据,只要求user_name为eva

新插入一行数据,只要求user_name为eva

Insert into user(user_name) values('eva')

Insert into user(user_name) values('eva')

注意:因为ID设置为自增,所以user_id不为null

注意:因为ID设置为自增,所以user_id不为null

 图片 35

 图片 36

九、Update

九、Update

修改user_id为6的数据user_age为14

修改user_id为6的数据user_age为14

Update user set user_age=14 where user_id=6

Update user set user_age=14 where user_id=6

 图片 37

 图片 38

修改user_id为1的数据user_name为ann,user_age为11

修改user_id为1的数据user_name为ann,user_age为11

Update user set user_name='ann',user_age=11 where user_id=1

Update user set user_name='ann',user_age=11 where user_id=1

图片 39

图片 40

十、Delete

十、Delete

User表中的所有数据信息如下

User表中的所有数据信息如下

 图片 41

 图片 42

删除user_age为12的数据

删除user_age为12的数据

Delete from user where user_age=12

Delete from user where user_age=12

 图片 43

 图片 44

删除表中的所有数据

删除表中的所有数据

Delete from user

Delete from user

 图片 45

 图片 46

第二章 SQL高级教程

第二章 SQL高级教程

一、Top

一、Top

Top子句用于返回要返回的记录的数目,但并不是所有的数据库都支持top子句

Top子句用于返回要返回的记录的数目,但并不是所有的数据库都支持top子句

1:SQL Server

1:SQL Server

Select top 5 * from user

Select top 5 * from user

图片 47

2:MySQL

2:MySQL

Select * from user limit 5

Select * from user limit 5

3:Oracle

图片 48

Select * from user where ROWNUM <= 5

3:Oracle

二、Like

Select * from user where ROWNUM <= 5

User表的初始数据如下

二、Like

图片 49

User表的初始数据如下

1:找出以li开头的数据

图片 50

Select * from user where user_name like 'li%'

1:找出以li开头的数据

图片 51

Select * from user where user_name like 'li%'

2:找出以ry结尾的数据

图片 52

Select * from user where user_name like '%ry'

2:找出以ry结尾的数据

 图片 53

Select * from user where user_name like '%ry'

3:找出含有a的数据

 图片 54

Select * from user where user_name like '%a%'

3:找出含有a的数据

 图片 55

Select * from user where user_name like '%a%'

4:找出第二个字母是a第四个字母是y的数据

 图片 56

Select * from user where user_name like '_a_y'

4:找出第二个字母是a第四个字母是y的数据

 图片 57

Select * from user where user_name like '_a_y'

三、通配符

 图片 58

在搜索数据库中的数据的时候SQL通配符可以替代一个或多个字符。SQL通配符必须与like运算符一起使用

三、通配符

1: _ 替代一个字符

在搜索数据库中的数据的时候SQL通配符可以替代一个或多个字符。SQL通配符必须与like运算符一起使用

找出第二个字母是a第四个字母是y的数据

1: _ 替代一个字符

Select * from user where user_name like '_a_y'

找出第二个字母是a第四个字母是y的数据

 图片 59

Select * from user where user_name like '_a_y'

2: % 替代一个或多个字符

 图片 60

找出以ry结尾的数据

2: % 替代一个或多个字符

Select * from user where user_name like '%ry'

找出以ry结尾的数据

 图片 61

Select * from user where user_name like '%ry'

3: [] 字符列中的任意一个单字符

 图片 62

找出以a或者l开头的数据

3: [] 字符列中的任意一个单字符(在SQL Server里面有作用,在MySQL里面不会报错但找不到值)

Select * from user where user_name like '[al]%'

找出以a或者l开头的数据

找出不是a或者l开头的数据

Select * from user where user_name like '[al]%'

Select * from user where user_name like '[!al]%'

找出不是a或者l开头的数据

四、In

Select * from user where user_name like '[^al]%'

只要数据满足in里面的一个条件就可以了

四、In

找到user_age是12或者13的数据

只要数据满足in里面的一个条件就可以了

Select * from user where user_age in (12,13)

找到user_age是12或者13的数据

 图片 63

Select * from user where user_age in (12,13)

找到user_name是Harry和Mary的数据

 图片 64

Select * from user where user_name IN ('mary','harry')

找到user_name是Harry和Mary的数据

 图片 65

Select * from user where user_name IN ('mary','harry')

五、Between

 图片 66

选取两个值之间的数据

五、Between

查询年龄在12和14之间的数据

选取两个值之间的数据

Select * from user where user_age between 12 and 14

查询年龄在12和14之间的数据

 图片 67

Select * from user where user_age between 12 and 14

查询字母在Alice和John之间的数据

 图片 68

Select * from user where user_name between 'alice' AND'john'

查询字母在Alice和John之间的数据

 图片 69

Select * from user where user_name between 'alice' AND'john'

六、Aliases

 图片 70

指定别名

六、Aliases

假设我们有两个表分别是user和Room 。我们分别指定他们为u和r。

指定别名

1:不使用别名

假设我们有两个表分别是user和Room 。我们分别指定他们为u和r。

Select room.room_name,user.user_name,user.user_age from user ,room  Where user.user_age=12 and room.room_id = 1

1:不使用别名

 图片 71

Select room.room_name,user.user_name,user.user_age from user ,room  Where user.user_age=12 and room.room_id = 1

2:使用别名

 图片 72

使用别名的时候直接将别名跟在后面,不使用as也可以

2:使用别名

Select r.room_name,u.user_name,u.user_age from user as u,room as r  Where u.user_age=12 and r.room_id = 1

使用别名的时候直接将别名跟在后面,不使用as也可以

 图片 73

Select r.room_name,u.user_name,u.user_age from user as u,room as r  Where u.user_age=12 and r.room_id = 1

七、Join

 图片 74

数据库中的表可以通过键将彼此联系起来,主键是一个列,在这个列中的每一行的值都是唯一的,在表中,每个主键的值都是唯一的,这样就可以在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

七、Join

以下为表user和表Room的数据

数据库中的表可以通过键将彼此联系起来,主键是一个列,在这个列中的每一行的值都是唯一的,在表中,每个主键的值都是唯一的,这样就可以在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

 图片 75    图片 76

以下为表user和表Room的数据

1:引用两个表

 图片 77    图片 78

找出在Room of boy相关联的用户信息

1:引用两个表

Select u.user_name,u.user_age,r.room_name from user as u,room as r 

找出在Room of boy相关联的用户信息

Where u.room_id = r.room_id and r.room_name='room of boy'

Select u.user_name,u.user_age,r.room_name from user as u,room as r 

 图片 79

Where u.room_id = r.room_id and r.room_name='room of boy'

2:使用关键字join来连接两张表

 图片 80

Select u.user_name,u.user_age,r.room_name

2:使用关键字join来连接两张表

from user as u

Select u.user_name,u.user_age,r.room_name

join room as r

from user as u

on u.room_id = r.room_id and r.room_name='room of boy'

join room as r

 图片 81

on u.room_id = r.room_id and r.room_name='room of boy'

八、Inner join

 图片 82

Inner join 与 join 用法一致

八、Inner join

Select u.user_name,u.user_age,r.room_name

Inner join 与 join 用法一致

from user as u

Select u.user_name,u.user_age,r.room_name

inner join room as r

from user as u

on u.room_id = r.room_id and r.room_name='room of boy'

inner join room as r

 图片 83

on u.room_id = r.room_id and r.room_name='room of boy'

九、Left join

 图片 84

注意:左连接以左边的表为主体,也就是说会列出左边的表中的所有的数据,无论它是否满足条件。

九、Left join

1:user在左边

注意:左连接以左边的表为主体,也就是说会列出左边的表中的所有的数据,无论它是否满足条件。

Select u.user_name,u.user_age,r.room_name

1:user在左边

from user as u

Select u.user_name,u.user_age,r.room_name

Left join room as r

from user as u

on u.room_id = r.room_id and r.room_name='room of boy'

Left join room as r

 图片 85

on u.room_id = r.room_id and r.room_name='room of boy'

2:Room在左边

 图片 86

Select u.user_name,u.user_age,r.room_name

2:Room在左边

From room as r

Select u.user_name,u.user_age,r.room_name

Left join user as u

From room as r

on u.room_id = r.room_id and r.room_name='room of boy'

Left join user as u

 图片 87

on u.room_id = r.room_id and r.room_name='room of boy'

十、Right join

 图片 88

注意:左连接以右边的表为主体,也就是说会列出左边的表中的所有的数据,无论它是否满足条件。

十、Right join

1:Room在右边

注意:左连接以右边的表为主体,也就是说会列出左边的表中的所有的数据,无论它是否满足条件。

Select u.user_name,u.user_age,r.room_name

1:Room在右边

from user as u

Select u.user_name,u.user_age,r.room_name

Right join room as r

from user as u

on u.room_id = r.room_id and r.room_name='room of boy'

Right join room as r

 图片 89

on u.room_id = r.room_id and r.room_name='room of boy'

2:user在右边

 图片 90

Select u.user_name,u.user_age,r.room_name

2:user在右边

from  room as r

Select u.user_name,u.user_age,r.room_name

Right join user as u

from  room as r

on u.room_id = r.room_id and r.room_name='room of boy'

Right join user as u

 图片 91

on u.room_id = r.room_id and r.room_name='room of boy'

十一、Full join

 图片 92

1:user在左边

十一、Full join

Select * from user Full join room

1:user在左边

 图片 93

Select * from user Full join room

2:Room在左边

 图片 94

Select * From room full join user

2:Room在左边

 图片 95

Select * From room full join user

注意:SQL错误码1054表示没有找到对应的字段名;错误码1064表示用户输入的SQL语句有语法错误

 图片 96

十二、Union

注意:SQL错误码1054表示没有找到对应的字段名;错误码1064表示用户输入的SQL语句有语法错误

Union操作符用于合并两个或者多个SELECT语句的结果集

十二、Union

请注意,UNION内部的select语句必须拥有相同数量的列。列也必须拥有相同的数据类型。同时,每条select语句中的列的顺序必须相同。

Union操作符用于合并两个或者多个SELECT语句的结果集

下面是Room表和color表的数据

请注意,UNION内部的select语句必须拥有相同数量的列。列也必须拥有相同的数据类型。同时,每条select语句中的列的顺序必须相同。

图片 97     图片 98

下面是Room表和color表的数据

Select room_name from room

图片 99     图片 100

Union

Select room_name from room

Select color_name from color

Union

 图片 101

Select color_name from color

默认的union选取不同的值,如果想要有相同的值出现就使用union all

 图片 102

Select room_name from room

默认的union选取不同的值,如果想要有相同的值出现就使用union all

Union all

Select room_name from room

Select color_name from color

Union all

本文由67677新澳门手机版发布于网络数据库,转载请注明出处:SQL学习笔记1,SQL语句学习

关键词: