一、SQL
是结构化查询语言,这种语言在RDBMS(关系型数据库管理系统)中使用,oracle,sqlserver,mysql都在使用SQL。
分为5类:
DQL:数据查询语言,select
DML:数据操作语言,insert,update,delete
TPL:事务处理语言,commit,rollback
DCL:数据控制语言,grant,revoke
DDL:数据定义语言,create,drop,alter
SQL语句的书写规则
不区分大小写,也就是说SELECT,select,Select,执行时效果是一样的。
可以单行来书写,也可以书写多行,建议分多行书写,增强代码可读性,通常以子句为单位进行分行。
关键字不可以缩写、分开以及跨行书写,如SELECT不可以写成SEL或SELE CT等形式。
关键字最好使用大写,其它语法元素(如列名、表名等)小写。
Tab和缩进的使用可以提高程序的可读性。
二、select语句
基本SELECT语句语法
SELECT [DISTINCT]{*|column|expression [alias],...}
FROM table;
解释:select是固定的关键字,代表的意思是“查询”。distinct用【】括起来了,
所以代表的意思是可以选择用或不用的,是去重复的意思。
*代表查询所有的列。column代表列名。expression是表达式。【alias】别名。
例0:
建一张表emp0,包括empid int primary key auto_increment,empname varchar(50),
salary int。
create table emp0(
empid int primary key auto_increment,
empname varchar(50),
salary int
);
insert into emp0 values(1,'li1',5000);
insert into emp0 values(2,'li2',5000);
insert into emp0 values(3,'li3',6000);
insert into emp0 values(4,'li4',7000);
insert into emp0 values(5,'li5',null);
1查一下员工表中有几种工资,分别是多少?
select distinct salary from emp0;
2查一下员工表中全部的信息
select * from emp0;
3查一下员工表中empid,empname,salary*1.1的信息
select empid,empname,salary*1.1 from emp0;
4查一下员工表中empid,empname,salary*1.1的信息,并且第三列的名称改名为 'new salary'。
select empid as id,empname,salary*1.1 as 'new salary' from emp0;
5 select empid,empname,ifnull(salary,0)+500 from emp0;
例1:select的基本用法
use demo1;
select distinct job from emp;
select * from emp;
select ename,empno from emp;
select ename,empno,sal*8 from emp;
select ename,empno,sal*8 as newsal from emp;
例2:空值
select * from emp where comm is null;
练习3: select empno,ename,ifnull(sal,0)+ifnull(comm,0) from emp;
ifnull(sal,0)函数的作用是,判断sal是否为null,如果为空则认为是0,如果不为空,
则就是它的实际值。
列别名
用来重新命名列的显示标题
如果SELECT语句中包含计算列,通常使用列别名来重新定义列标题。
使用列别名的方法
方式1:列名 列别名
方式2:列名 AS 列别名
以下三种情况列别名两侧需要添加双引号
列别名中包含有空格
列别名中要求区分大小写
列别名中包含有特殊字符
消除重复行
在SELECT字句中使用关键字DISTINCT可消除重复行。
使用where条件来限定行。
select * from x where id between 1 and 3;
select * from x where id in (1,3);
like:模糊匹配
%:匹配0到多个任意字符
_:匹配一个任意字符
查找emp表中ename的值以S开头的所有记录
select * from emp where ename like 'G%';
查找emp表中ename的值带S的所有记录
select * from emp where ename like '%G%';
查找emp表中ename的值以S开头的并且后面是一个字符的所有记录
select * from emp where ename like 'G_';
例:select ename from emp where ename like 'G%';
查询ename以G开头的信息。
例:select ename from emp where ename like '_L%';
查询开头有一个任意字符,第二个字符是L,后面任意的信息。
例:select ename from emp where ename like 'MAN@_%' escape '@';
查询以MAN_开头的信息。
is null
例:select * from emp where comm is null;
逻辑运算符:and or not
练习9:
1 select ename,job,sal from emp where sal >2000 and job in ('MANAGER','SALESMAN');
2 select ename,job,sal from emp where sal >2000 and job='MANAGER' or job='SALESMAN';
3 select ename,job,sal from emp where (deptno in(10,20)) and (sal between 3000 and 5000);
4 select ename,hiredate,job from emp where (hiredate between '1981-01-01' and '1981-12-31' )and (job not like 'SALES%');
4 select ename,hiredate,job from emp where year(hiredate)=1981 and (job not like 'SALES%');
5 select ename,job,deptno from emp where
job in ('SALESMAN','MANAGER') and
deptno in (10,20) and ename like '%A%';
order by 子句
格式:
SELECT [DISTINCT] { * | 列名 |表达式 [别名][,...]}
FROM 表名
[WHERE 条件]
[ORDER BY {列名|表达式|列别名|列序号} [ASC|DESC],…];
解释:asc代表升序,desc代表降序,默认是升序
例:select * from emp order by hiredate;
例:select * from emp order by hiredate desc;
例:select * from emp order by hiredate asc;
限制记录的行数:(一般在实现分页的时候用)
limit [start,]length
例:select * from x order by id limit 2,2;
解释:上个例题limit 2,2 第一个2表示起始记录为2,也就是从
第3条记录开始。第二个2,表示共2条记录。
三、显示表的结构
desc emp;
616

被折叠的 条评论
为什么被折叠?



