SQL语句实例说明 方便学习mysql的朋友

前端之家收集整理的这篇文章主要介绍了SQL语句实例说明 方便学习mysql的朋友前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

MysqL中模式就是数据库


数据库名称


数据库


删除名为TEST的数据库


数据库


显示当前数据库所有表格



MysqL数据库显示表的结构,如果加上full则更加详细


查看表TEST的结构,同show columns from TEST

包括建表语句

创建基本表:

<数据类型>[列级完整性约束条件],
<数据类型>[列级完整性约束条件],







属性studentId,name,address,其中studentId为主键









修改基本表:

RENAME <修改后表名>


ADD COLUMN <列名> <属性类型>


CHANGE COLUMN <列名> <修改后列名> <属性类型>


修改TEACHER表中的列,将ADDRESS的列名改为address

DROP [COLUMN] <列名>


删除列名为address的列,column可有可无

删除基本表:

[RESTRICT|CASCADE]
删除表格



删除STUDENT表。受限制的删除,欲删除的基本表不能被其他表的约束所引用(如check,foreign key等约束),
函数等。

删除没有限制。在删除基本表的同时,相关的依赖对象,例如视图,都将被一起删除

MysqL测试的时候给错误提示Cannot delete or update a parent row: a foreign key constraint fails,不予以删除,不知道是什么原因。

文章:

ADD CONSTRAINT <约束名> <约束条件>

增加名为pk_teacher_id的主键约束。

DROP <约束条件>

删除teacher表的主键约束。

增加名为fk_student_teacher的约束条件,约束条件为外键约束。

索引的建立与删除:

ON <表名>(<列名> [次序][,<列名> [次序]]……);


删除:

ON <表名>


删除索引,索引名为id_index

方法:

ADD [UNIQUE]|[CLUSTER] INDEX [<索引名>](<列名> [<次序>],[<列名> [<次序>]]……)


删除索引:

DROP INDEX <索引名>


删除teacher表名为id_index的索引

数据库索引的建立有利也有弊,参考文章

数据查询

[,<目标列表达式>]……

[<表名或视图名>]……

]

[HAVING <条件表达式>]]

[ASC|DESC] [,<列名3> [ASC|DESC]]……];

查询经过计算的值:

查询经过计算的值,从teacher表中查询出teacherId字段,别名为id,并且查询出salary字段减去100后的字段,别名为S

函数和字符串:

可以是字符串常量和函数等,'birth' 为字符串常量,lower(name)为函数,将name字段以小写字母形式输出

查询满足条件的元组:

查询条件:

查询条件

谓词

比较

=,>,<,>=,<=,!=,<>,!>,!<

确定范围

BETWEEN AND,NOT BETWEEN AND

确定集合

IN,NOT IN

字符匹配

LIKE,NOT LIKE

空值

IS NULL,IS NOT NULL

多重条件(逻辑运算)

AND,OR,NOT

500;

500;

' [ESCAPE '<换码字符>']
可以是一个完整的字符串,也可以含有通配符%和_

查询:

查询:

查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,缺省值为(ASC)

聚集函数(aggregate functions):

统计元组个数
COUNT([DISTINCT|ALL]<列名>) 统计一列值的个数
SUM([DISTINCT|ALL]<列名>) 计算一列值的总和
AVG([DISTINCT|ALL]<列名>) 计算一列值的平均值
MAX([DISTINCT|ALL]<列名>) 求一列值中的最大值
MIN([DISTINCT|ALL]<列名>

查询没有重复的名字的个数

查询teacher表格总记录数

查询teacher表的salary字段的总和

查询teacher表的salary字段的平均值

查询teacher表的salary字段的最大值

查询teacher表的salary字段的最小值

查询结果按某一列或多列的值分组,值相等的为一组。
查询结果分组的目的是为了细化聚集函数的作用对象。分组后聚集函数将作用于每一个组,即每一组都有一个函数值。

输出满足指定条件的组,则可以使用HAVING语句指定筛选条件。

= 4;

查询:

查询是关系数据库中最主要的的查询包括等值连接查询,自然连接查询,非等值连接查询,自身连接查询,外连接查询和复合条件连接查询等。

等值与非等值连接查询

查询的WHERE子句中用来连接两个表的条件称为连接条件或连接谓词,格式为:

.]<列名> <比较运算符> [<表名2>.]<列名2>

,!=(或<>)等

查询,将student表和teacher的信息连接查询出来,连接条件是s.teacherid = t.teacherid

自身连接:

查询,在people表里有两种角色,一种是教师,一种是学生,利用自身连接查询,得到name字段和teacher字段相等的元组

[,<目标列表达式>]…… FROM <表名1> LEFT [OUTER] JOIN <表名2> ON <连接条件>
右外连接:SELECT<目标列表达式>[,<目标列表达式>]…… FROM <表名1> RIGHT [OUTER] JOIN <表名2> ON <连接条件>


student表和class表进行右外连接,连接条件为s.cno=c.cno

student表数据:

+-----+-----+------+
| sno | cno | name |
+-----+-----+------+
| 1 | 1 | 地心 |
| 2 | 2 | 华雄 |
| 3 | 1 | 孝慈 |
| 4 | 3 | 必须 |
+-----+-----+------+

+-----+-----+------+
| cid | cno | name |
+-----+-----+------+
| 1 | 1 | 化学 |
| 2 | 2 | 物理 |
| 3 | 3 | 政治 |
+-----+-----+------+

效果:








效果:








MysqL不支持全外连接!

score from student s,class c where s.cno = c.cno and s.score < 60;
复合条件连接查询查询学生信息和课程信息,并且成绩小于60的记录

查询:

查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询

查询的SELECT语句中不能使用ORDER BY子句,ORDER BY 子句只能对最终查询结果排序

查询:






查询和"华雄"选同一课程的所有学生的学号和姓名。

查询的查询条件不依赖于父查询,称为

不相关子查询

查询条件依赖于父查询,这类子查询称为

相关子查询

整个查询语句称为相关嵌套查询语句。

带有比较运算符的子查询




score) from student s2

查询学生的大于各科平均成绩的科目

查询。

查询

查询返回单值时可以用比较运算符,但返回多值时要用ANY(有的系统用SOME)或ALL谓词修饰。使用ALL或ALL谓词时必须使用比较运算符。

ANY 大于子查询结果的某个值
>ALL 大于子查询结果的所有值
>=ANY 大于等于子查询结果的某个值
>=ALL 大于等于子查询结果的所有值
<=ANY 小于等于子查询结果的某个值
<=ALL 小于等于子查询结果的所有值
=ANY 等于子查询结果的某个值
=ALL 等于子查询结果的所有值(通常没有实际意义)
!=(或<>)ANY 不等于子查询结果的某个值
!=(或<>)ALL 不等于子查询结果的任何一个值

MySQL数据库不支持INTERSECT和EXCEPT操作!



INTO <表名> [(<属性列1>)[,<属性列2>]……]
VALUES (<常量1>[,<常量2>]……);



[(<属性1>[,<属性2>]……)]

修改数据:


=<表达式>[,<列名>=<表达式>]……
]


FROM <表名>
[WHERE <条件>];


[(<列名>[,<列名>]……)]
AS <子查询>

查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT语句。

删除的行满足视图定义中的谓词条件

属性列名或者全部省略或者全部指定,没有第三种选择。如果省略了视图的各个属性列名,则隐含该视图由子查询中SELECT子句目标列中的诸字段组成。
属性名,而是聚集函数或列表达式。




score)

score

修改了基本表的结构,则基本表与视图的映射关系就被破坏了,该视图就不能正确工作了。为避免出现这类问题,最好在修改基本表之后删除由该基本表导出的视图,然后重建这个视图。

删除视图:

[CASCADE];

删除语句,把该视图和由它导出的所有视图一起删除

查询视图:

查询视图和查询基本表类似。

猜你在找的MsSQL相关文章