今天学习的重点,数据库查询语句分组和子查询
SQL HAVING 语法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE 条件语句
GROUP BY column_name
HAVING aggregate_function(column_name) 值操作
使用 UPDATE语句来实现修改数据
语法
UPDATE <tb_name> SET field1=value1, field2=value2 [WHERE conditions]
使用 DELETE语句来实现删除数据
语法
DELETE FROM <tb_name> 删表所有数据 [WHERE conditions] 按指定条件删除数据
使用 DROP语句来实现删除数据库表
语法
DROP TABLE <tb_name>
一般模糊查询语句如下:
SELECT 字段 FROM 表 WHERE 某字段 Like 条件
其中关于条件,SQL提供了四种匹配模式:
1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
比如 SELECT * FROM [user] WHERE u_name LIKE ‘%三%’
将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。
另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE ‘%三%’ AND u_name LIKE ‘%猫%’
若使用 SELECT * FROM [user] WHERE u_name LIKE ‘%三%猫%’
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。
2,_ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
比如 SELECT * FROM [user] WHERE u_name LIKE ‘三’
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
再比如 SELECT * FROM [user] WHERE u_name LIKE ‘三__’;
只找出“三脚猫”这样name为三个字且第一个字是“三”的;
内连接查询会把两张表中,存在关系的数据都查询显示出来
语法:
SELECT * FROM , WHERE table1.xx = table2.xx
SELECT * FROM inner join ON <table2.col_name> = table1.col_name;
外连查询包括左连接(left join)和右连接(right join)
左外连接查询会把左边的表中的所有数据显示出来,并在由表中补充null来组成一条完整的数据,右外连接查询反之
语法:
SELECT * FROM left join on <table2.col_name> = table1.col_name;
SELECT * FROM right join on <table2.col_name> = table1.col_name;
外连查询包括左连接(left join)和右连接(right join)
SELECT 表1., 表2., 表3.,表4. FROM 表1
LEFT JOIN 表2 ON 表2.列1 = 表1.列1
LEFT JOIN 表3 ON 表3.列1 = 表1.列1
LEFT JOIN 表4 ON 表4.列1 = 表1.列1
WHERE 表1.列1 = 表2.列1 AND 表2.列 = 表3.列
找出比关晓彤年龄大的学生
SELECT * FROM students WHERE age
> ( SELECT age FROM students WHERE name =‘关晓彤’)
SELECT * FROM 表 WHERE 列 in ( 子查询 )
SELECT * FROM students WHERE classId
in ( SELECT classId FROM class WHERE classname LIKE ‘测试%’ )
等价于
SELECT * FROM students LEFT JOIN class ON class.id = students.classId
WHERE class.classname LIKE ‘测试%’