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)
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)
相关文章推荐
- 使用JDBC连接MySQL数据库--典型案例分析(一)---员工数据读取与操作
- 2. mysql 基本命令
- 1. mysql安装
- ASM Instance 加载oracleasm lib创建disk时出现OS Hang现象
- Mysql 5.5 主从数据复制(Master-Slave Replication)配置笔记
- Mysql/MAMP + Django1.8.2(Win7 64bit/Mac OS X)环境搭建
- xampp默认mysql密码设置,修改mysql的默认空密码
- 【MyBatis框架】SqlMapConfig剖析
- 有关mysql死锁
- mysql函数二
- mysql函数一
- mysql基础2【常用mysql语句】
- mySql部分总结
- 备份恢复MySQL数据库的命令
- postgresql 自带函数
- mysql日志
- 搞定linux上MySQL编程(六):C语言编写MySQL程序(结)
- MS SQL Sever数据库还原
- 关于Mysql group_concat的应用(把相同ID的VAL用字符'/'连接起来)
- oracle pl sql 抛出例外