5.关于SQL的分类:
SQL 语句有很多,最好进行分门别类,这样更容易记忆。
分别为:
DQL:
数据查询语言(凡是带有select关键字的都是查询语句)
select.......
DML:
数据操作语言(凡是对表当中的数据进行增删改查的都是DML)
i nsert 增 delete 删 update 改
这个主要是操作表中的数据data。
DDL:
数据定义语言(凡是带有create、drop、alter的都是DDL)
DDL主要操作的是表的结构。不是表中的数据。
create 新建 drop 删除 alter 修改
这个增删改和DML不同,这个主要是对表结构进行操作。
TCL:
事务控制语言。
包括:事务提交:commit; 事务回滚:rollback;
DCL:
数据控制语言。如授权 grant、撤销权限 revoke.....
6.导入提前准备好的数据:
1. 怎么将sql文件中的数据导入呢?
mysql> source +文件的绝对路径 注意:路径中不要有中文!!
2. 怎么查看表中的数据呢?
mysql> select * from 表名;//统一执行这个SQL语句.
7.不看表中的数据只看表的结构的命令:
desc 表名;
8. 简单查询语句DQL
-
查询一个字段?
-
select 字段名 from 表名;
-
注意:
-
select和from都是关键字.
-
字段名和表名都是标识符.
-
SQL语句是不区分大小写的.
-
-
-
查询多个字段:
-
使用逗号隔开:select 字段1,字段2 from 表名;
-
-
查询所有字段:
-
可以把每个字段都写上:select a,b ,c,d....from 表名
-
可以使用:select * from 表名 不支持:效率低,可读性差.
-
-
如何给查询到字段起别名?:
-
使用as 关键字起别名
select 字段1 as 别名 from 表名
-
将as省略用空格代替也是可以的
select 字段1 别名 from 表名
-
起别名里面有空格怎么办?
将该别名用单引号括起来.
-
别名是中文,用单引号括起来
-
字段可以使用数学表达式!
-
9.条件查询:
-
什么是条件查询:不是将表中所有数据都查出来。而是将符合条件的查询出来。
-
语法格式: ``select ``字段1,字段2,字段3.... ``from ``表名 ``where ``条件; eg: select ename,empno from emp where sal<1500; eg: select ename,empno from emp where sal<1500 and sal>700 ; eg: select ename from emp where sal between 1000 and 1990;要注意 第一个值要比第二个值小!否则查不到任何数据!between and 是左闭右闭区间 包=包括了两边的值! eg: select ename,sal,comm from emp where comm is null; eg:select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where job='manager' and sal>2500; eg: select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where job='manager' or job='salesman';or相当于”和“ eg: select ename,sal from emp where sal in (800,9999); 注意:in不是一个区间。in后面跟的是具体的值。找出800和9999的对应数据!
-
都有哪些条件?
1. 等于=、不等于 <>或者!=、大于>、小于<、大于等于>=、小于等于<=
2. between ....and.... 两个值之间 ,等同于>=and <= 是否为null: is null or is not null
注意:数据库中的null不能用等号衡量!
3. and 并且 or 或者
注意:当and和or要同时使用时,要注意优先级,and的优先级要高于or 如果要先执行or部分语句,像将其用括号括起来!优先级不确定的时候可以让你想先执行的语句用小括号括起来即可。
4. in 包含,相当于多个or(not in表示不在这个范围内)
5. not 表示取反,主要在is 或 in中
6. like :称为模糊查询,支持%或下划线匹配
%匹配任意多个字符
下划线:任意一个字符。(%是一个特殊的符号,_也是一个特殊的符号,查找名字中的这些特殊字符时,要加上转移字符 \ )
找出名字以T结尾的? select ename from emp where ename like '%T'; 找出名字以K开始的? select ename from emp where ename like 'K%'; 找出第二个字每是A的? select ename from emp where ename like '_A%'; 找出第三个字母是R的? select ename from emp where ename like '__R%';
10. 排序
查询所有员工薪资,排序? ``select ``ename,sal ``from ``emp ``order by ``sal; // 默认是升序!!!
怎么降序? ``指定降序: ``select ``ename,sal ``from ``emp ``order by ``sal desc; 指定升序? select ename,sal from emp order by sal asc; 查询员工名字和薪资,要求按照薪资升序,如果薪资一样的话,再按照名字升序排列。 select ename,sal from emp order by sal asc, ename asc; // sal在前,起主导,只有sal相等的时候,才会考虑启用ename排序
找出工资在1250到3000之间的员工信息,要求按照薪资降序排列。 select ename,sal from emp where sal>=1250 and sal<=3000 order by sal desc; 以上语句的执行顺序必须掌握: 第一步:from 第二步:where 第三步:select 第四步:order by(排序总是在最后执行!)