SQL笔记一
SQL的分类
DDL(数据定义语言):CREATE(创建) ALTER(修改) DROP(删除结构) RENAME(重命名) TRUNCATE(清空)
DML(数据操作语言,针对记录的操作行为):INSERT(增) DELETE(删) UPDATE(修改) SELECT(查询)
DCL(数据控制语言):COMMIT(提交)ROLLBACK(回到上一步,撤销)SAVEPOINT(设置保存点)GRANT(设置权限)REVOKE(回收权限)
基本的SELECT语句
*:表示表中的所有字段或列,SELECT *FROME XXX即显示XXX表中所有的列;
查询表中特定几列的内容(结果集):SELECT 列1 ,列2 FROME表;
列的别名(别名可以是汉字):SELECT 列1 别名1 ,列2 AS 别名2,列3 “别名3”FROME表;
别名1和别名3 的区别是别名3双引号内可以包含空格;
去除重复行(某属性有几种值):SELECT DISTINCT 列1FROME 表;
SELECT DISTINCT 列1,列2FROME 表;(组合不重复)
SELECT 列1DISTINCT 列2FROME 表;(错误)
空值null参与运算:null不等于0,“ ”,“null”;
无论何种计算,结果也为null;
解决方法:将列1替换为IFNULL(列1(值为null),0)参与运算;
列名与保留字、关键字重复:用着重号``标识出来,`列名`;
查询常数:SELECT‘XX公司’,常数c,列名1,列名2FROME 表;结果是新增两列常数,会为每 一行新增常数匹配项;
显示表结构:DESCRIBE(DESC) 表;显示表中字段的详细信息;
过滤数据(查询满足条件的数据):SELECT * FROME 表 WHERE 列=‘XX’/常数(大于小于也 可以作为条件):WHERE一定要紧挨着在FROME的后面
比较运算符
字符串存在隐式转换,如果转换数值不成功,则看做数值0
只要有null参与比较结果均为null。因此不能查询筛选值为null的元祖。查询机制是满足条件的元祖为1,不满足条件的元祖为0,最后显示元组值为1的项。因此值为null的项并不能显示。
查询在条件一与条件二之间的数据:between 条件1 and 条件2 ,且条件1必须是下限,条件2 是上限,否则没有查询结果。
列的别名只能在ORDER BY使用,不能在WHERE中使用。因为执行顺序是先执行FROM 和WHERE再执行SELECT,最后执行ORDER BY。WHERE要写在DROM之后在ORDER BY之前。
分页:每页显示pagesize条记录,此时显示第pageno个页面,公式如下:LIMIT (pageno-1)*pagesize,pagesize。
声明顺序: SELECT...WHERE...ORDER BY...LIMIT。
可以在FROM中给表起别名,在SELECT和FROM中使用别名,但是一旦在SELECT或WHERE中使用了别名就一定要使用别名,查询结果依然显示原名。
如果实现n个表的多表查询,查询条件至少有n-1个。