复习:
1:CURD
1.1Create (创建)
语法:
insert [into] 表名 [column[,column]]
valuse(value_list)[,vaule_list]...
value_list:value,[value]...
创建一个实例表:
1.1.1单⾏数据全列插⼊
values_list中的值必须与列的数量和顺序一致;
错误示范:
1.1.2单⾏数据指定列插⼊
values_list中的值必须与指定列的数量和顺序一致;
错误示范:
如果没有指定id这一列,值默认为NULl。
1.1.3多⾏数据指定列插⼊
在⼀条INSERT语句中也可以指定多个value_list,实现⼀次插⼊多⾏数据
讨论一个事情:
2:Retrieve 检索
2.1:语法:
SELECT[DISTINCT]select_expr [, select_expr] ...[FROM table_references][WHERE where_condition][GROUP BY {col_name | expr}, ...][HAVING where_condition][ORDER BY {col_name | expr } [ASC | DESC], ... ][LIMIT {[offset,] row_count | row_count OFFSET offset}]
select * from 表名,这个查询是非常危险的操作,因为在实际情况中,数据量是非常大的,每个查询都会消耗大量的网络开销和磁盘开销,如果不加以限制会把服务器资源吃完,如果拆卸那种不加以限制,就会返回所有的查询记录。因为我们刚开始学习,所有数据很少,但是在公司里面,数据都是几千万上亿的。
2.2创建一个实例表:
这里为了节省时间,导入上课时候老师发的表,首选我们要从终端输入\ ?,查出操作语句
里面有source,我们可以在source命令后面写入我们文件的绝对路径,然后导入文件。
这个在以后工作当作常用,用来访问本地的sql文件。
2.3 select查询
2.3.1全列查询
• 查询所有记录
语法:
select * from 表名;
2.3.2指定列查询
• 查询所有⼈的编号、姓名和语⽂成绩
语法:
select 列名[列名] from 表名;
查询的列的顺序和真实表中的列顺序没有要求。
2.3.3查询字段为表达式
列的值+常量
列加列的值
2.3.4可以指定列名
语法:
SELECT column [AS] alias_name [, ...] FROM table_name;
AS可以省略,别名如果包含空格必须⽤单引号包裹
2.3.5结果去重查询
查询当前所的数学成绩
在结果集中去除重复记录,可以使⽤DISTINCT
使⽤DISCTINCT去重时,只有查询列表中所有列的值都相同才会判定为重复
注意:
查询时不加限制条件会返回表中所有结果,如果表中的数据量过⼤,会把服务器的资源消耗殆尽
在⽣产环境不要使不加限制条件的查询
这种情况必须math和english都相同。
2.2.6Where 条件查询
语法:
SELECT select_expr [, select_expr] ... [FROM table_references]WHERE where_condition
⽐较运算符
运算符 | 说明 |
---|---|
>,>=,<,<= | ⼤于,⼤于等于,⼩于,⼩于等于 |
= | 等于,对于NULL的⽐较不安全,⽐如NULL = NULL结果还是NULL |
<=> | 等于,对于NULL的⽐较j是安全的,⽐如NULL <=> NULL结果是TRUE(1) |
!=, <> | 不等于 |
value BETWEEN a0 AND a1 | 范围匹配,[a0, a1],如果a0 <= value <= a1,返回TRUE或1,NOT BETWEEN则取反 |
value IN (option, …) | 如果value 在optoin列表中,则返回TRUE(1),NOT IN则取反 |
IS NULL | 是NULL |
IS NOT NULL | 不是NULL |
LIKE | 模糊匹配,% 表⽰任意多个(包括0个)字符;_ 表⽰任意⼀个字符,NOT LIKE则取反 |