SQL零基础语句
SQL select语句:
select语句用于表中选取数据。结果被存储在一个结果表中(称为结果集)。
select语法:
select:列名称 from:表名称;
select*from 表名称
注释:SQL语句对大小写不敏感。SELECT 等效于 select;
SELECT*FROM schools;/*查询表*/
给查询出来的字段取别名:
SELECT userName as "猪猪",password as "密码" FROM user WHERE userId=1;
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL DML 和 DDL:
可以把SQL分为两部分:数据操作语言(DML)和数据定义语言(DDL)。
SQL是用于执行查询的语法。但是SQL语言也包含用于更新、插入、删除的语法。
查询和更新指令构成了SQL的DML部分:
select:从数据库表现中获取数据;
SELECT*FROM schools;/*查询表*/
update:更新数据库表中的数据;
UPDATE schools SET Name="波波" WHERE Name ="博博"; /*改变表里的行*/
delete:从数据库表中删除数据;
DELETE FROM schools;/*删除表*/
DELETE FROM schools WHERE id = 1;/*删除表内容*/
insert into:向数据库表中插入数据;
INSERT INTO user VALUES(4,"小黑",1,"dddd",1);/*增加表内容*/
SQL的数据定义语言(DDL)部分使我们有能力创建或者删除表格。我们也可以定义索引键,
规定表之间的链接,一级施加表间的约束。
SQL中最重要的DDL语句:
create database:创建数据库;
alter database:修改数据库;
create table:创建新表;
CREATE TABLE schools(/*创建表*/
Id int not null,
Name varchar(30)
);
alter table:变更(改变)数据库;
drop table:删除表;
DROP TABLE schools;/*删除表*/
create index:创建索引;
drop index:删除索引;
————————————————————————————————————————————————
SQL select distinct语句:
在表中,有可能会包含重复值。而distinct就是用来消除结果集中重复的信息,只显示一行;
语法:
select distinct :列名 from :表名;
例子:
SELECT DISTINCT * FROM user;/*查询表 相同的不显示*/
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL where子句用于规定选择的标准:
where子句:
如需有条件地从表中选取数据,可将where子句添加到select语句。
语法:
select 列名 from 表名 where 条件 :
is null is not null 语句:
SELECT*FROM user WHERE password IS NOT NULL;/*查询非空的*/SELECT*FROM user WHERE userName IS NULL;/*查询空的*/
可用于where子句中的操作符:
=(等于);<>(不等于);>(大于);<(小于);>=(大于等于);<=(小于等于);any(任何一个);all(所有的);some(任何一个);
between:在某个范围内;
like:搜索某种模式;
not like %表示0或者多个字符;_ 表示一个字符
语法:
SELECT*FROM user WHERE sex LIKE "%1";/*%的意思是0到n都可以*/SELECT*FROM user WHERE sex LIKE "_1";/*_的意思是2个字符最后是1*/
AND和OR运算符:
and和or可以再where子语句中把两个或者多个条件结合起来。
如果第一个条件和第二个条件都成立,则and运算显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则or运算符显示一条记录。
我们也可以把and和or结合起来(使用圆括号来组成复杂表达):
语法:
select * from 表名 where (列名 = 值 or 列名 = 值)and 列名 = 值;
语法:
SELECT*FROM user WHERE userName LIKE '小%' AND password = "aaaa";/*and是并且*/
SELECT*FROM user WHERE userName LIKE '小%' OR password = "aaaa"; /*or是或者*/
SELECT*FROM user WHERE userName LIKE '小%' OR password = "aaaa"; /*or是或者*/
-------------------------------------------------------------------------------------------------------------------
asc 升序 desc 降序;
order by 排序字段可以用查询字段的别名,先查后排;
where 条件中不能用查询字段的别名
SELECT*FROM emp ORDER BY empno ASC;/*升序*/
SELECT*FROM emp ORDER BY empno DESC;/*降序*/
常用函数:
可以再select后面,也可以在where后面
1.lower(字段或者字符串):把字符串转换成小写
SELECT ename,lower(ename) xin FROM emp;/*把大写换成小写*/
2.upper(字段或者字符串):把字段转换成大写
SELECT ename,upper(ename) xin FROM emp;/*把大写换成小写*/
3.concat(字段1或字符串1):链接两个字段(每次只能连接两个字段)||可以连接很多个
SELECT CONCAT(empno,ename)xin FROM emp;
4.length(字段或者字符串):求字段的长度
SELECT LENGTH(empno) FROM emp;/*显示数组长度*/
5.substr(字段或者字符串,start,length):把字段转换成大写 start 从1开始 截取长度
SELECT ename,substr(ename,2,1) FROM emp;/*显示第几位*/
6.round(number,n):n指定四舍五入到小数点后第几位,可以用负数指定小数点前几位
6.round(number,n):n指定四舍五入到小数点后第几位,可以用负数指定小数点前几位
SELECT ROUND(3.1415,2) FROM dual;/*显示小数点后几位*/
7.to_number(字段或者字符串):那数字字符转换成数字
8.to_char(字段或者字符串,格式控制字符串):按指定的格式,格式化字符串
9.to_date:把字符串转换成数据库内部 日期
-------------------------------------------------------------------------------------------------------------------
分组函数:
计算的结果是一个查询的,不是某一行的
1.avg(字段):计算出查询结果中该字段的平均数
SELECT avg(sal) FROM emp;/*平均数*/
2.max(字段):计算出查询结果中该字段的最大值
SELECT max(sal) FROM emp;/*最大数*/
3.min(字段):计算出查询结果中该字段的最小值
SELECT min(sal) FROM emp;/*最小数*/
4.sum(字段):计算出查询字段中该字段的和
SELECT sum(sal) FROM emp;/*和*/
5.count(字段):计算出查询结果中该字段的个数
SELECT count(sal) FROM emp;/*个数*/
6.拓展:
SELECT * FROM emp WHERE sal>(SELECT avg(sal) FROM emp);/*大于平均值的取出来*/
注释:函数不能写在where后面
-------------------------------------------------------------------------------------------------------------------
SQL GROUP BY 语句:
GROUP BY:语句用于结合合计函数,根据一个或多个列对结果集进行分组
SQL INNER JOIN 语句:
inner join :对两个表进行连接!注释:只有两个表中有相同的属性时才能进行连接!
链表语句的其他两种方法:
LEFT JOIN (左连接)查询出包括左表中所有记录和右连接中连接字段相等的记录
right join (右连接)查询出包括右表中的所有记录和左表中联结字段相等的记录
SQL having 的用法:
having 过滤 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。*/
having与where的区别:
having与where的区别:
having 后面可以跟函数 where后面不能跟函数
分页
MySQL:利用关键字:limit
MySQLserver:利用关键字top
Oracle:利用关键字rownum
格式:select*from(select rownum r,a.* from(?)a)where r between?and?
第一个问号:指的是要查询的SQL语句(包含排序)
第二个问号:指的是分页查询的起始行号;
第三个问号:指的是分页查询的结束行号 ;
MySQL:利用关键字:limit
MySQLserver:利用关键字top
Oracle:利用关键字rownum
格式:select*from(select rownum r,a.* from(?)a)where r between?and?
第一个问号:指的是要查询的SQL语句(包含排序)
第二个问号:指的是分页查询的起始行号;
第三个问号:指的是分页查询的结束行号 ;
select max(sal) from emp
select min(sal) from emp
select sum(sal) from emp
select count(sal) from emp
select empno as "姓名" from emp where group by empno "姓名"
/*分组函数 group by 后面字段相同的一段*/
select deptno ,avg(sal) from emp group by deptno
/*GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组*/
select deptno,avg(sal)from emp group by deptno
select job,sum(sal)from emp GROUP BY job
/*我们一个月前来到优越国际,进入一个Java班级名称叫王萌的项目部!*/
/*链表语句 两种:inner join(等值连接) 查询出两个表中联结字段相等的行 */
/*连表查询不能用点星,这样会把两个表中所有的数据都连在一起,会多出一组一样的数据*/
select * from emp e inner join dept d on e.deptno = d.deptno
/**/
select e.*,d.* from emp e,dept d where e.deptno = d.deptno
/*链表语句查询 想要查询什么就给出你想要查询的列名*/
select e.empno,e.ename,e.sal,e.mgr,d.loc from emp e
inner join dept d on e.deptno = d.deptno
/*表连接是:通过两个表中相同的元素进行连接 emp.deptno = dept.deptno;如果两个表中没有相同的元素是,两个表就不能进行连接!*/
SELECT emp.ename,emp.job,emp.mgr,dept.dname,dept.loc from emp
inner join dept on emp.deptno = dept.deptno
/*left join(左连接) 连表查询语句 查询出包括左表中所有记录和右连接中连接字段相等的记录 */
SELECT emp.ename,emp.job,emp.mgr,dept.dname,dept.loc from emp
left join dept on emp.deptno = dept.deptno
/*right join (右连接) 连表查询语句 查询出包括右表中的所有记录和左表中联结字段相等的记录*/
SELECT emp.ename,emp.job,emp.mgr,dept.dname,dept.loc from emp
right join dept on emp.deptno = dept.deptno
/**/
select deptno 部门编号,sum(sal) 总工资,count(empno) 部门人数 from emp
GROUP BY deptno
SELECT COUNT(empno) 部门人数 from emp/**/
SELECT 新.*,d.dname,d.loc from (select deptno ,sum(sal) ,count(empno) from emp
GROUP BY deptno) 新 INNER JOIN dept d on 新.deptno = d.deptno
SELECT emp.empno,emp.ename,emp.job,dept.dname,dept.loc FROM emp
INNER JOIN dept on emp.deptno=dept.deptno
SELECT xin.deptno,dept.dname FROM (
SELECT deptno,ename,job FROM emp ) xin INNER JOIN dept
ON xin.deptno = dept.deptno
/**/
SELECT xin.dname,emp.deptno,SUM(emp.sal) from emp,dept
WHERE emp.deptno=dept.deptno GROUP BY dept.deptno
INNER JOIN dept on emp.deptno = dept.deptno
/**/
/* having 的用法*/
select * from emp;
SELECT * FROM dept;
SELECT deptno,ename,SUM(sal),MAX(sal),MIN(sal),COUNT(sal),AVG(sal) avg_sal from emp
group by deptno having avg_sal>1800 and avg_sal<3000
SELECT deptno,ename,SUM(sal),MAX(sal),MIN(sal),COUNT(sal),AVG(sal) avg_sal from emp
group by deptno having avg_sal>1800 or avg_sal<3000
/*having 后跟between智能用and来表示并且 加上or会报错*/
SELECT deptno,ename,SUM(sal),MAX(sal),MIN(sal),COUNT(sal),AVG(sal) avg_sal from emp
group by deptno having avg_sal BETWEEN 1800 and 3000
/**/
/*having 过滤 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。*/
/*having与where的区别: having 后面可以跟函数 where后面不能跟函数*/
SELECT ename,sum(sal) from emp
GROUP BY ename having SUM(sal)<2000
/*分页
MySQL:利用关键字:limit
MySQLserver:利用关键字top
Oracle:利用关键字rownum
格式:select*from(select rownum r,a.* from(?)a)where r between?and?
第一个问号:指的是要查询的SQL语句(包含排序)
第二个问号:指的是分页查询的起始行号;
第三个问号:指的是分页查询的结束行号
*/
SELECT * FROM emp ORDER BY sal desc LIMIT 4,10
-------------------------------------------------------------------------------------------------------------------
SQL IN 语法:
我们查询empno为7900,7901,7902的三条信息:
SELECT * FROM emp WHERE empno IN(7900,7901,7902);
SQL NOW() 语法:
SELECT ename, NOW() FROM emp;
HTML:
<mate>:
<meta http-equiv="Refresh" content="n;url=http://yourlink"><
<from>
表单域:
文本框:<input type= "text" id = "wbk" name="wbk" value="文本框" readonly disabled/>
密码框:<input type= "passwoed" id = "mmk" name="mmk" value="mm" readonly disabled/>
单选按钮:<input type= "radio" id = "radiol" name="hobby" value="nan" checkbox/>
复选框:<input type= "CheckBox" id = "radiol" name="hobby" value="nan" />
隐藏域:<input type= "hidden" id = "radiol" name="hobby" value="nan"/>
文本域:《textarea》 row
图片域:<input type= "image" id = "radiol" name="hobby" src = “图片名”title = “”取名“”alt =“”找不到该图片“” width=“”30px“” height=“”90px“”/>
文件上传域:有file的表单只能用post传送方式
<frameset> 标签的属性:
密码框:<input type= "passwoed" id = "mmk" name="mmk" value="mm" readonly disabled/>
单选按钮:<input type= "radio" id = "radiol" name="hobby" value="nan" checkbox/>
复选框:<input type= "CheckBox" id = "radiol" name="hobby" value="nan" />
隐藏域:<input type= "hidden" id = "radiol" name="hobby" value="nan"/>
文本域:《textarea》 row
图片域:<input type= "image" id = "radiol" name="hobby" src = “图片名”title = “”取名“”alt =“”找不到该图片“” width=“”30px“” height=“”90px“”/>
文件上传域:有file的表单只能用post传送方式
<frameset> 标签的属性:
cols一列方式分割;
rows以行方式分割;
css:
id 选择器:
id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
id 选择器以 "#" 来定义。
类选择器:
类 选择器以 "." 来定义。