增删改
1.插入数据
insert into user(username,password) values("xx2","654321");
insert into user values("xx1","123456");
insert into user(username) values("xx3");
2.删除全部数据
delete from test10;
truncate table test10;
drop table test10;
1. truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的
存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,
执行的时候将被触发.
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发
trigger.
3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate
会将高水线复位(回到最开始).
4.速度,一般来说: drop> truncate > delete
5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及.
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还
是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据/
实际应用:
delete from table; //删除所有数据
truncate table; //将auto_increatement调制从0开始,实际就是从1开始
删除指定行数据:
delete from test10 where name='XX1';
3.修改数据
update test10 set name="qqq";
update test10 set name="xx2" where id=2;
4.给定列初始值
create table stus (name varchar(20) default 'zhangjun',age int(3) default 20,qq1 varchar(20),qq2 int(3));
查1
1.查看若干列
select name,pwd from users;
2.取别名:
select name '姓名',pwd from users;
3.合并列显示
select concat(name,pwd) '姓名+密码' from users;
select concat(name,"++",pwd) '姓名+密码' from users;
4.可以结合算术表达式使用
select age*10 from users;
5.只查看若干行:
select * from users where age=23;
select * from users where age>23;
select * from users where age<>23;
select * from users where age<23;
6.查找并去重
select distinct * from users;
7.查找指定区间的数据
select * from users2 where salary>=500 AND salary<=3000;
select * from users2 where salary between 500 and 3000;
select * from users2 where salary in (1000,1500);
select * from emp where empname='dahuang1' or empname='xiaoming1';
8.查null值
select * from users2 where salary is null;
select * from users2 where salary is not null;
9.模糊查询
查询名字中带a的人
select * from users2 where name like '%a%';
查询名字以a开头的人
select * from users2 where name like 'a%';
查询名字长度为2并且以a结尾的人
select * from users2 where name like 'a_';
10.与或非
select * from worker where salary <3000 and salary >1000;
select * from worker where sex ='man' or salary >1000;
select * from worker where dept is not null;
select * from worker where salary not between 1000 and 5000;
select * from worker where salary not in(1000,6000);
11.对查询结果排序
select * from worker where salary between 1000 and 5000 order by salary;
select * from worker where salary between 1000 and 5000 order by salary desc
select name '姓名',salary ,salary/10 '税金' from worker where salary>3000 order by salary;
查2
1.虚拟表
select LOWER('ABCD') from dual;
2.查询日期时间
select curdate(),curtime(),now() from dual;
+------------+-----------+---------------------+
| curdate() | curtime() | now() |
+------------+-----------+---------------------+
| 2015-08-14 | 14:56:59 | 2015-08-14 14:56:59 |
+------------+-----------+---------------------+
select year(now()),hour(now()),minute(now()),monthname(now()) from dual;
3.查看数据库及用户信息
select database(),version(),user() from dual;
+------------+-----------+----------------+
| database() | version() | user() |
+------------+-----------+----------------+
| szt_13 | 5.5.39 | root@localhost |
+------------+-----------+----------------+
4.加密
select password('123456'),md5('123456') from dual;
5.聚合函数,求总和,均值,最大,最小
select count(salary) from worker;
select count(*) from worker;
select avg(salary) from worker;
select sum(salary),max(salary),min(salary) from worker;
6,分组
查询每个部门的总工资:
select dept, sum(salary) from worker group by dept;
出现在SELECT列表中的字段,要么出现在组合函数里,要么出现在GROUP BY 子句中
7.分组后限定:
分组前限定用where,分组后限定用having
select dept, sum(salary) from worker group by dept having sum(salary)>=3000
select dept, sum(salary) from worker where sex='man' group by dept ;
select dept, sum(salary) from worker where sex='man' group by dept having sum(salary)>=1000 ;
8.limit限定:
只看前5行数据
select * from worker limit 5;
6-8行数据
select * from worker limit 5,3;
+----+------+--------+-------+--------+
| id | name | dept | sex | salary |
+----+------+--------+-------+--------+
| 6 | ffff | 保卫处 | man | 1000 |
| 7 | ggg | 保卫处 | woman | 3000 |
| 8 | kkk | 公关部 | man | 5000 |
+----+------+--------+-------+--------+