您的位置:首页 > 数据库

2.1. sql增删查改

2015-06-14 09:32 330 查看
1.插入

insert into <表名> [ ( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n ) ];

mysql中可以同时插多个值:

insert into dept
values(2, 'dept2' , 'leader2'),(3, 'dept3' , 'leader3'),(4,
'dept4' , 'leader4');

insert
into <表名> select ' ', ' ';

insert
into stu select
10, ' mike ';

select
last_insert_id(); --取自动增长列的值

2.删除

delete from 表名 where 表达式; 不加条件,默认删除所有数据

delete from stu
; --- 删除了所有的数据,但是下次插入会按上次的编号

truncate table stu;
---连编号也一起清空

删除dba部门的员工

delete from emp where deptID in (select deptID from dept
where deptName = 'dba'); #只有一条数据也可用=

3.更新



子查询更新:

update stu set
stuID=10 where deptID
= ( select deptID from
dept where deptName = 'computer');

不建议使用子查询

select deptID into @a from dept where
deptName = ‘computer’;

update … where deptID
= @a;

多表连接:

update stu
s, dept d set
salary = salary * 1.1
where s.deptID = d.deptID &&
d.deptName = 'computer';

4.查询

select <字段1,字段2,...> from < 表名 > where < 表达式 >;

mysql> select * from myclass where name='david';

mysql> select * from myclass limit 2; or 也可以用在前面top

mysql> select * from myclass order
by id limit 2; ---查询表myclass中前2行数据

---别名的应用[as],修改显示(可以用中文)

---条件查询:

select * from
stu2 where stuAge>20 && deptID=1;

select
* from stu2
where stuID in (1,3,10);

---模糊查看

%:任意字符,_单个字符,[ ]符号正则表达式

select * from
user where u_name
like '%三%'

---分组排序

select * from emp order by salary desc limit 3;

select * from emp order by salary limit 1, 3; -- 从第1条开始取3条, 从第0条开始算

---聚合函数与group
by

select sum(salary), avg(salary),
max(salary), min(salary), count(1) from emp;

select deptID, count(1) from emp group by
deptID;

select deptID, count(1) as s from emp where
age > 20 group by deptID having s
> 2; ---二次筛选

aixocm
$a = md5(aixocm) ---判断密码是否一致

select
count(1) from user
where userName = 'tom' && pwd='$a';

---多表查询

select empName, deptName from emp, dept
where emp.deptID
= dept.deptID;

select
empName, deptName from emp
inner join dept on emp.deptID = dept.deptID;

-- 学生表, 课程表, 选课表

select stuName, courseName, score from
student, course, sc where sc.stuID = stu.stuID and sc.courseID =
course.courseID;

(用inner join + on也可) 通过选课表把三个表串连起来,一般primary key (stuID,courserID)组成复合主键

左外联,显示所有学生的情况

select stuName,coursersName,score from stu left
join sc on stu.stuID =
sc.stuId left join
courses on
sc.cousersID = cousers.cousersID;

select 执行顺序:

from----> (inner/left/right)
join on
--->where(一次筛选) --->group by(根据某列把表又分成字表)----->having(二次筛选)

--->聚合函数---->order by ---->top
---->select

记录联合

union all -- union去重复

select * from stu
union all select * from stu2;

sql注释语句 ---test
# comment /* comment */

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: