xml地图|网站地图|网站标签 [设为首页] [加入收藏]
当前位置: www8029com > 澳门新葡8522最新网站 > 正文

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

时间:2019-11-25 19:13来源:澳门新葡8522最新网站
转载地址:  *以下内容是我在学习SQL()的时候的学习笔记    *学习时使用的数据库软件是MySQL数据库可视化工具SQLyogEnt *以下内容是我在学习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表里面的数据如下

 澳门新葡8522最新网站 1

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 3

 澳门新葡8522最新网站 4

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

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

Select * from user

Select * from user

 澳门新葡8522最新网站 5

 澳门新葡8522最新网站 6

四、Distinct

四、Distinct

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

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

用普通的查询,查询所有

用普通的查询,查询所有

Select * from user

Select * from user

 澳门新葡8522最新网站 7

 澳门新葡8522最新网站 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不一样,加上就不算相同数据

 澳门新葡8522最新网站 9

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 11

 澳门新葡8522最新网站 12

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

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

Select * from user where user_age >=12

Select * from user where user_age >=12

 澳门新葡8522最新网站 13

 澳门新葡8522最新网站 14

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

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

Select * from user where user_age <> 12

Select * from user where user_age <> 12

 澳门新葡8522最新网站 15

 澳门新葡8522最新网站 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使用单引号来环绕文本值,如果是数值则不需要引号

 澳门新葡8522最新网站 17

 澳门新葡8522最新网站 18

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

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

 澳门新葡8522最新网站 19

 澳门新葡8522最新网站 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)

 澳门新葡8522最新网站 21

 澳门新葡8522最新网站 22

七、Order by

七、Order by

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

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

Select * from user order by user_name

Select * from user order by user_name

 澳门新葡8522最新网站 23

 澳门新葡8522最新网站 24

2:按照user_id逆序排列

2:按照user_id逆序排列

Select * from user order by user_id DESC

Select * from user order by user_id DESC

 澳门新葡8522最新网站 25

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 27

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 29

 澳门新葡8522最新网站 30

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

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

八、Insert

八、Insert

User表

User表

 澳门新葡8522最新网站 31

 澳门新葡8522最新网站 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)

澳门新葡8522最新网站 33

澳门新葡8522最新网站 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

 澳门新葡8522最新网站 35

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 37

 澳门新葡8522最新网站 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

澳门新葡8522最新网站 39

澳门新葡8522最新网站 40

十、Delete

十、Delete

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

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

 澳门新葡8522最新网站 41

 澳门新葡8522最新网站 42

删除user_age为12的数据

删除user_age为12的数据

Delete from user where user_age=12

Delete from user where user_age=12

 澳门新葡8522最新网站 43

 澳门新葡8522最新网站 44

删除表中的所有数据

删除表中的所有数据

Delete from user

Delete from user

 澳门新葡8522最新网站 45

 澳门新葡8522最新网站 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

澳门新葡8522最新网站 47

2:MySQL

2:MySQL

Select * from user limit 5

Select * from user limit 5

3:Oracle

澳门新葡8522最新网站 48

Select * from user where ROWNUM <= 5

3:Oracle

二、Like

Select * from user where ROWNUM <= 5

User表的初始数据如下

二、Like

澳门新葡8522最新网站 49

User表的初始数据如下

1:找出以li开头的数据

澳门新葡8522最新网站 50

Select * from user where user_name like 'li%'

1:找出以li开头的数据

澳门新葡8522最新网站 51

Select * from user where user_name like 'li%'

2:找出以ry结尾的数据

澳门新葡8522最新网站 52

Select * from user where user_name like '%ry'

2:找出以ry结尾的数据

 澳门新葡8522最新网站 53

Select * from user where user_name like '%ry'

3:找出含有a的数据

 澳门新葡8522最新网站 54

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

3:找出含有a的数据

 澳门新葡8522最新网站 55

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

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

 澳门新葡8522最新网站 56

Select * from user where user_name like '_a_y'

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

 澳门新葡8522最新网站 57

Select * from user where user_name like '_a_y'

三、通配符

 澳门新葡8522最新网站 58

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

三、通配符

1: _ 替代一个字符

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

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

1: _ 替代一个字符

Select * from user where user_name like '_a_y'

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

 澳门新葡8522最新网站 59

Select * from user where user_name like '_a_y'

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

 澳门新葡8522最新网站 60

找出以ry结尾的数据

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

Select * from user where user_name like '%ry'

找出以ry结尾的数据

 澳门新葡8522最新网站 61

Select * from user where user_name like '%ry'

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

 澳门新葡8522最新网站 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的数据

 澳门新葡8522最新网站 63

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

找到user_name是Harry和Mary的数据

 澳门新葡8522最新网站 64

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

找到user_name是Harry和Mary的数据

 澳门新葡8522最新网站 65

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

五、Between

 澳门新葡8522最新网站 66

选取两个值之间的数据

五、Between

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

选取两个值之间的数据

Select * from user where user_age between 12 and 14

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

 澳门新葡8522最新网站 67

Select * from user where user_age between 12 and 14

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

 澳门新葡8522最新网站 68

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

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

 澳门新葡8522最新网站 69

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

六、Aliases

 澳门新葡8522最新网站 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:不使用别名

 澳门新葡8522最新网站 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:使用别名

 澳门新葡8522最新网站 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也可以

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 74

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

七、Join

以下为表user和表Room的数据

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

 澳门新葡8522最新网站 75    澳门新葡8522最新网站 76

以下为表user和表Room的数据

1:引用两个表

 澳门新葡8522最新网站 77    澳门新葡8522最新网站 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 

 澳门新葡8522最新网站 79

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

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

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 81

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

八、Inner join

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 83

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

九、Left join

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 85

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

2:Room在左边

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 87

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

十、Right join

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 89

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

2:user在右边

 澳门新葡8522最新网站 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

 澳门新葡8522最新网站 91

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

十一、Full join

 澳门新葡8522最新网站 92

1:user在左边

十一、Full join

Select * from user Full join room

1:user在左边

 澳门新葡8522最新网站 93

Select * from user Full join room

2:Room在左边

 澳门新葡8522最新网站 94

Select * From room full join user

2:Room在左边

 澳门新葡8522最新网站 95

Select * From room full join user

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

 澳门新葡8522最新网站 96

十二、Union

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

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

十二、Union

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

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

下面是Room表和color表的数据

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

澳门新葡8522最新网站 97     澳门新葡8522最新网站 98

下面是Room表和color表的数据

Select room_name from room

澳门新葡8522最新网站 99     澳门新葡8522最新网站 100

Union

Select room_name from room

Select color_name from color

Union

 澳门新葡8522最新网站 101

Select color_name from color

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

 澳门新葡8522最新网站 102

Select room_name from room

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

Union all

Select room_name from room

Select color_name from color

Union all

 澳门新葡8522最新网站 103

Select color_name from color

十三、Create DB

 澳门新葡8522最新网站 104

创建数据库mysqltest

十三、Create DB

Create database mysqltest

创建数据库mysqltest

 澳门新葡8522最新网站 105

Create database mysqltest

十四、Create table

 澳门新葡8522最新网站 106

Create table sqltest(

十四、Create table

Id int,

Create table sqltest(

Name varchar(45),

Id int,

Age int,

Name varchar(45),

Salary float,

Age int,

Time Date,

Salary float,

)

Time Date,

 澳门新葡8522最新网站 107 澳门新葡8522最新网站 108

)

十五、Constraints

 澳门新葡8522最新网站 109 澳门新葡8522最新网站 110

SQL约束,用于限制加入表的数据的类型

十五、Constraints

常见约束:not noll、unique、primary key、foreign key、check、default

SQL约束,用于限制加入表的数据的类型

十六、Not null

常见约束:not null、unique、primary key、foreign key、check、default

Not null 约束强制列不接受NULL值。Not null 约束强制字段始终包含值,这意味着,如果不向字段添加值,就无法插入新的字段或者更新记录

十六、Not null

用法,在字段后面加上 not null

Not null 约束,强制列不接受NULL值。Not null 约束强制字段始终包含值,这意味着,如果不向字段添加值,就无法插入新的字段或者更新记录

 澳门新葡8522最新网站 111

用法,在字段后面加上 not null

十七、Unique

 澳门新葡8522最新网站 112

Unique约束唯一标识数据库中的每一条记录。Primary key约束拥有自动的unique约束。需要注意的是,每个表里面可以拥有多个unique约束,但只能有一个primary key约束

十七、Unique

1:MySQL用法,unique(字段名)

Unique约束,唯一标识数据库中的每一条记录。Primary key约束拥有自动的unique约束。需要注意的是,每个表里面可以拥有多个unique约束,但只能有一个primary key约束

 澳门新葡8522最新网站 113

1:MySQL用法,unique(字段名)

2:SQL Server 、 Oracle 、 MS Access在字段后面加

 澳门新葡8522最新网站 114

 澳门新葡8522最新网站 115

2:SQL Server 、 Oracle 、 MS Access在字段后面加

3:命名约束使用constraint

 澳门新葡8522最新网站 116

 澳门新葡8522最新网站 117

澳门新葡8522最新网站,3:命名约束使用constraint

4:已经创建了表之后需要添加约束

 澳门新葡8522最新网站 118

ALTER TABLE sqltest ADD UNIQUE(Age)

4:已经创建了表之后需要添加约束

 澳门新葡8522最新网站 119

ALTER TABLE sqltest ADD UNIQUE(Age)

5:给已经创建了的表添加约束并命名

 澳门新葡8522最新网站 120

ALTER TABLE sqltest ADD constraint unique_name UNIQUE(Age,salary)

5:给已经创建了的表添加约束并命名

 澳门新葡8522最新网站 121

ALTER TABLE sqltest ADD constraint unique_name UNIQUE(Age,salary)

6:撤销约束

 澳门新葡8522最新网站 122

MySQL

6:撤销约束

在没有给约束命名的情况下(上面的age约束)直接使用字段名就可以了

MySQL

ALTER TABLE sqltest DROP INDEX age

在没有给约束命名的情况下(上面的age约束)直接使用字段名就可以了

澳门新葡8522最新网站 123  删除后   澳门新葡8522最新网站 124

ALTER TABLE sqltest DROP INDEX age

在约束有名字的情况下,直接使用名字就可以了

澳门新葡8522最新网站 125  删除后   澳门新葡8522最新网站 126

ALTER table sqltest  drop index unique_name

在约束有名字的情况下,直接使用名字就可以了

澳门新葡8522最新网站 127   删除后  澳门新葡8522最新网站 128

ALTER table sqltest  drop index unique_name

SQL Server 、 Oracle 、 MS Access

澳门新葡8522最新网站 129   删除后  澳门新葡8522最新网站 130

ALTER table 表名 drop constraint 约束名

SQL Server 、 Oracle 、 MS Access

 

ALTER table 表名 drop constraint 约束名

十八、Primary key

十八、Primary key

Primary key约束唯一标识数据库表中的每一条记录,组件必须包含唯一的值。组件列不能包含NULL值。每个表都应该有一个主键,并且每一个表都只能有一个主键

Primary key约束唯一标识数据库表中的每一条记录,组件必须包含唯一的值。组件列不能包含NULL值。每个表都应该有一个主键,并且每一个表都只能有一个主键

1:在MySQL中的用法

1:在MySQL中的用法

 澳门新葡8522最新网站 131

 澳门新葡8522最新网站 132

2:在SQL Server 、 Oracle 和MS Access中的用法

2:在SQL Server 、 Oracle 和MS Access中的用法

 澳门新葡8522最新网站 133

 澳门新葡8522最新网站 134

3:为已经创建成功的表创建primary key约束

3:为已经创建成功的表创建primary key约束

Alter table sqltest add primary key(id)

Alter table sqltest add primary key(id)

 澳门新葡8522最新网站 135

 澳门新葡8522最新网站 136

4:为已经创建成功的表添加主键约束,以及为多个列定义主键约束

4:为已经创建成功的表添加主键约束,以及为多个列定义主键约束

Alter table sqltest add constraint pk_name primary key (id,name)

Alter table sqltest add constraint pk_name primary key (id,name)

 澳门新葡8522最新网站 137

 澳门新葡8522最新网站 138

5:在MySQL中撤销主键

5:在MySQL中撤销主键

ALTER  TABLE sqltest DROP PRIMARY KEY

ALTER  TABLE sqltest DROP PRIMARY KEY

澳门新葡8522最新网站 139   删除后   澳门新葡8522最新网站 140

澳门新葡8522最新网站 141   删除后   澳门新葡8522最新网站 142

6:在SQL Server、Oracle、MS Access中撤销主键

6:在SQL Server、Oracle、MS Access中撤销主键

Alter table 表名 drop constraint 主键名

Alter table 表名 drop constraint 主键名

十九、Foreign key

十九、Foreign key

所谓的外键,即一个表的外键指向另一个表的主键

所谓的外键,即一个表的外键指向另一个表的主键

User表澳门新葡8522最新网站 143

User表澳门新葡8522最新网站 144

Room表澳门新葡8522最新网站 145

Room表澳门新葡8522最新网站 146

在user表里面room_id列指向Room表里面的id列。Room表里面的id列是主键,user表里面的room_id列是外键。外键约束用于预防破坏表之间的连接动作,外键约束也能防止非法数据插入外键列,因为他必须是他指向的那个表的值之一。

在user表里面room_id列指向Room表里面的id列。Room表里面的id列是主键,user表里面的room_id列是外键。外键约束用于预防破坏表之间的连接动作,外键约束也能防止非法数据插入外键列,因为他必须是他指向的那个表的值之一。

 澳门新葡8522最新网站 147

 澳门新葡8522最新网站 148

二十、Check

二十、Check

Check约束用于限制列中的值的范围。如果对单一的列定义check约束,那么改了只允许特定的值。如果对一个表定义check约束,那么此约束会在特定的列中对值进行限制。

Check约束用于限制列中的值的范围。如果对单一的列定义check约束,那么改了只允许特定的值。如果对一个表定义check约束,那么此约束会在特定的列中对值进行限制。

 澳门新葡8522最新网站 149

 澳门新葡8522最新网站 150

为已经创建成功的表添加check约束

为已经创建成功的表添加check约束

ALTER TABLE USER ADD CHECK (age>10)

ALTER TABLE USER ADD CHECK (age>10)

二十一、Default

二十一、Default

Default约束用于向列宗插入默认值。如果没有规定其他值,那么就会将默认值添加到所有的新纪录。

Default约束用于向列中插入默认值。如果没有规定其他值,那么就会将默认值添加到所有的新纪录。

用法:

用法:

 澳门新葡8522最新网站 151

 澳门新葡8522最新网站 152

当表已经存在的时候,添加默认值

当表已经存在的时候,添加默认值

ALTER TABLE sqltest ALTER NAME SET DEFAULT 'tom'

ALTER TABLE sqltest ALTER NAME SET DEFAULT 'tom'

 澳门新葡8522最新网站 153

 澳门新葡8522最新网站 154

澳门新葡8522最新网站 155

澳门新葡8522最新网站 156

撤销默认值

撤销默认值

 澳门新葡8522最新网站 157

 澳门新葡8522最新网站 158

澳门新葡8522最新网站 159

澳门新葡8522最新网站 160

二十二、Create index

二十二、Create index

索引,你可以在表里面创建索引,一边更加快速高效地查询数据。用户无法看见索引,他们只能被用来加速搜索、查询。

索引,你可以在表里面创建索引,一边更加快速高效地查询数据。用户无法看见索引,他们只能被用来加速搜索、查询。

注意:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是索引本身也需要更新,因此,理想的做法是仅仅在常常被搜索的列上面创建索引。

注意:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是索引本身也需要更新,因此,理想的做法是仅仅在常常被搜索的列上面创建索引。

1:创建一个索引

1:创建一个索引

CREATE INDEX index_name ON color (color_id )

CREATE INDEX index_name ON color (color_id )

 澳门新葡8522最新网站 161

 澳门新葡8522最新网站 162

2:创建一个独一无二的索引,即两行不能拥有相同的索引值。

2:创建一个独一无二的索引,即两行不能拥有相同的索引值。

CREATE UNIQUE INDEX book_index ON book (book_id)

CREATE UNIQUE INDEX book_index ON book (book_id)

 澳门新葡8522最新网站 163

 澳门新葡8522最新网站 164

3:如果索引不止一个列,你可以在括号中列出这些列的名称,用逗号隔开

3:如果索引不止一个列,你可以在括号中列出这些列的名称,用逗号隔开

CREATE INDEX index_bank ON bank (bank_id,bank_name)

CREATE INDEX index_bank ON bank (bank_id,bank_name)

 澳门新葡8522最新网站 165

 澳门新葡8522最新网站 166

二十三、Drop

二十三、Drop

通过使用DROP语句,可以删掉索引、表和数据库

通过使用DROP语句,可以删掉索引、表和数据库

1:删除索引

1:删除索引

Drop index index_name on color

Drop index index_name on color

 澳门新葡8522最新网站 167

 澳门新葡8522最新网站 168

删除之后

删除之后

 澳门新葡8522最新网站 169

 澳门新葡8522最新网站 170

澳门新葡8522最新网站 171

澳门新葡8522最新网站 172

澳门新葡8522最新网站 173

澳门新葡8522最新网站 174

2:删除表

2:删除表

DROP TABLE colorcopy

DROP TABLE colorcopy

澳门新葡8522最新网站 175  删除之后   澳门新葡8522最新网站 176

澳门新葡8522最新网站 177  删除之后   澳门新葡8522最新网站 178

3:清空表

3:清空表

TRUNCATE TABLE color

TRUNCATE TABLE color

澳门新葡8522最新网站 179  删除之后  澳门新葡8522最新网站 180

澳门新葡8522最新网站 181  删除之后  澳门新葡8522最新网站 182

4:删除数据库

4:删除数据库

DROP DATABASE mysqltest

DROP DATABASE mysqltest

澳门新葡8522最新网站 183 删除之后  澳门新葡8522最新网站 184

澳门新葡8522最新网站 185 删除之后  澳门新葡8522最新网站 186

二十四、Alert

二十四、Alert

 澳门新葡8522最新网站 187

 澳门新葡8522最新网站 188

1:添加列

1:添加列

Alter table user add salary float

Alter table user add salary float

 澳门新葡8522最新网站 189

 澳门新葡8522最新网站 190

2:删除列

2:删除列

Alter table user drop column room_id

Alter table user drop column room_id

 澳门新葡8522最新网站 191

 澳门新葡8522最新网站 192

二十五、Increment

二十五、Increment

定义主键自增

定义主键自增

 澳门新葡8522最新网站 193

 澳门新葡8522最新网站 194

二十六、View

二十六、View

视图,一种基于SQL语句的结果集可视化表。视图包含行和列,就像一个真实的表。视图中的字段来自一个或多个数据库中的真实的表中的字段,我们可以向视图添加SQL函数、where以及join语句,我们提交数据,然后这些来自某个单一的表。需要注意的是,数据库中的结构和设计不会受到视图的函数、where或join语句的影响

视图,一种基于SQL语句的结果集可视化表。视图包含行和列,就像一个真实的表。视图中的字段来自一个或多个数据库中的真实的表中的字段,我们可以向视图添加SQL函数、where以及join语句,我们提交数据,然后这些来自某个单一的表。需要注意的是,数据库中的结构和设计不会受到视图的函数、where或join语句的影响

1:创建一个视图,字段来自user表和Room表

1:创建一个视图,字段来自user表和Room表

CREATE VIEW view_test AS

CREATE VIEW view_test AS

SELECT user.user_name,user.user_age,room.room_name

SELECT user.user_name,user.user_age,room.room_name

FROM USER,room

FROM USER,room

WHERE user.user_age>10

WHERE user.user_age>10

2:查询视图

2:查询视图

Select * from view_test

Select * from view_test

 澳门新葡8522最新网站 195

 澳门新葡8522最新网站 196

3:撤销视图

3:撤销视图

DROP VIEW view_test

DROP VIEW view_test

二十七、Date

二十七、Date

 澳门新葡8522最新网站 197

 澳门新葡8522最新网站 198

二十八、Nulls

二十八、Nulls

默认的,表的列可以存放NULL值。如果表里面的某个列是可选的,那么我们可以在不想改列添加值的情况下插入记录或者更新记录,这意味着该字段以NULL值保存。注意,NULL和0是不等价的,不能进行比较。

默认的,表的列可以存放NULL值。如果表里面的某个列是可选的,那么我们可以在不想该列添加值的情况下插入记录或者更新记录,这意味着该字段以NULL值保存。注意,NULL和0是不等价的,不能进行比较。

 澳门新葡8522最新网站 199

 澳门新葡8522最新网站 200

1:查询NULL值 

1:查询NULL值 

select * from user where salary is null

select * from user where salary is null

 澳门新葡8522最新网站 201

 澳门新葡8522最新网站 202

2:查询非NULL值 

2:查询非NULL值 

select * from user where salary  is not null

select * from user where salary  is not null

 澳门新葡8522最新网站 203

 澳门新葡8522最新网站 204

二十九、数据类型

二十九、数据类型

MySQL主要有三种类型:文本、数字、日期

MySQL主要有三种类型:文本、数字、日期

 澳门新葡8522最新网站 205

 澳门新葡8522最新网站 206

澳门新葡8522最新网站 207

澳门新葡8522最新网站 208

澳门新葡8522最新网站 209

澳门新葡8522最新网站 210

澳门新葡8522最新网站 211

澳门新葡8522最新网站 212

澳门新葡8522最新网站 213

澳门新葡8522最新网站 214

澳门新葡8522最新网站 215

澳门新葡8522最新网站 216

澳门新葡8522最新网站 217

澳门新葡8522最新网站 218

澳门新葡8522最新网站 219 

澳门新葡8522最新网站 220 

三十、服务器 

三十、服务器 

 澳门新葡8522最新网站 221

 澳门新葡8522最新网站 222

第三章 SQL函数

第三章 SQL函数

一、SQL functions

一、SQL functions

在SQL当中,基本的函数类型和种类有若干种,函数的基本类型是:

在SQL当中,基本的函数类型和种类有若干种,函数的基本类型是:

合计函数(Aggregate function)和 Scalar函数

合计函数(Aggregate function)和 Scalar函数

Aggregate 函数,函数操作面向一系列的值,并返回一个单一的值。

Aggregate 函数,函数操作面向一系列的值,并返回一个单一的值。

Scalar 函数,操作面向某个单一的值,并返回基于输入值的一个单一的值。

Scalar 函数,操作面向某个单一的值,并返回基于输入值的一个单一的值。

二、Avg()

二、Avg()

求平均年龄

求平均年龄

Select avg(user_age) from user

Select avg(user_age) from user

 澳门新葡8522最新网站 223

 澳门新葡8522最新网站 224

求大于平均年龄的用户

求大于平均年龄的用户

Select * from user where user_age>(Select avg(user_age) from user)

Select * from user where user_age>(Select avg(user_age) from user)

 澳门新葡8522最新网站 225

 澳门新葡8522最新网站 226

三、Count()

三、Count()

返回列的值的数目(不包含NULL)

返回列的值的数目(不包含NULL)

注意,可以使用as来给count()取一个别名

注意,可以使用as来给count()取一个别名

 澳门新葡8522最新网站 227

 澳门新葡8522最新网站 228

Select count(user_id) from user

Select count(user_id) from user

 澳门新葡8522最新网站 229

 澳门新葡8522最新网站 230

Select count(salary) from user

Select count(salary) from user

 澳门新葡8522最新网站 231

 澳门新葡8522最新网站 232

返回值不同的有多少

返回值不同的有多少

Select count(distinct user_name) from user

Select count(distinct user_name) from user

 澳门新葡8522最新网站 233

 澳门新葡8522最新网站 234

查询所有列

查询所有列

Select count(*) from user

Select count(*) from user

 澳门新葡8522最新网站 235

 澳门新葡8522最新网站 236

四、Max()

四、Max()

返回最大值,NULL不包括在计算中

返回最大值,NULL不包括在计算中

 澳门新葡8522最新网站 237

 澳门新葡8522最新网站 238

Select max(price) as max_price from commodity

Select max(price) as max_price from commodity

 澳门新葡8522最新网站 239

 澳门新葡8522最新网站 240

五、Min()

五、Min()

返回最小值,NULL不包括在计算中

返回最小值,NULL不包括在计算中

 澳门新葡8522最新网站 241

 澳门新葡8522最新网站 242

Select min(salary) poor_man from user

Select min(salary) poor_man from user

 澳门新葡8522最新网站 243

 澳门新葡8522最新网站 244

六、Sum()

六、Sum()

返回该列值的总额

返回该列值的总额

 澳门新葡8522最新网站 245

 澳门新葡8522最新网站 246

Select sum(salary) from user

Select sum(salary) from user

 澳门新葡8522最新网站 247

 澳门新葡8522最新网站 248

七、Group By 

七、Group By 

用于结合合计函数,根据一个或多个列对结果集进行分组

用于结合合计函数,根据一个或多个列对结果集进行分组

 澳门新葡8522最新网站 249

 澳门新葡8522最新网站 250

SELECT cname,SUM(price) FROM commodity GROUP BY cname

SELECT cname,SUM(price) FROM commodity GROUP BY cname

 澳门新葡8522最新网站 251

 澳门新葡8522最新网站 252

八、Having

八、Having

在SQL中增加having子句的原因是where不能与合计函数一起使用。用法和where 一样

在SQL中增加having子句的原因是where不能与合计函数一起使用。用法和where 一样

SELECT cname,SUM(price) FROM commodity

SELECT cname,SUM(price) FROM commodity

GROUP BY cname

GROUP BY cname

HAVING  SUM(price)>20

HAVING  SUM(price)>20

 澳门新葡8522最新网站 253

 澳门新葡8522最新网站 254

九、Ucase()

九、Ucase()

把函数字段的值转化为大写

把函数字段的值转化为大写

 澳门新葡8522最新网站 255

 澳门新葡8522最新网站 256

SELECT UCASE(user_name) FROM user

SELECT UCASE(user_name) FROM user

 澳门新葡8522最新网站 257

 澳门新葡8522最新网站 258

十、Lcase()

十、Lcase()

将函数字段转化为小写

将函数字段转化为小写

 澳门新葡8522最新网站 259

 澳门新葡8522最新网站 260

Select lcase(user_name) from user

Select lcase(user_name) from user

 澳门新葡8522最新网站 261

 澳门新葡8522最新网站 262

十一、Mid()

十一、Mid()

从文本字段中提取字符

从文本字段中提取字符

 澳门新葡8522最新网站 263

 澳门新葡8522最新网站 264

Select mid(user_name,2,2) from user

Select mid(user_name,2,2) from user

 澳门新葡8522最新网站 265

 澳门新葡8522最新网站 266

十二、Round()

十二、Round()

Round函数把数值字段舍入为指定的小数位数

Round函数把数值字段舍入为指定的小数位数

 澳门新葡8522最新网站 267

 澳门新葡8522最新网站 268

Select round(salary,2) from user

Select round(salary,2) from user

 澳门新葡8522最新网站 269

 澳门新葡8522最新网站 270

十三、Now()

十三、Now()

返回当前时间

返回当前时间

SELECT NOW() FROM user

SELECT NOW() FROM user

 澳门新葡8522最新网站 271

 澳门新葡8522最新网站 272

 

 

学习完了之后我们可以进入位w3chool的‘SQL测试’进行测试 

学习完了之后我们可以进入位w3chool的‘SQL测试’进行测试 

 ( ^_^ )/~~拜拜

 ( ^_^ )/~~拜拜

 

编辑:澳门新葡8522最新网站 本文来源:SQL语句学习,SQL学习笔记1

关键词: www8029com