MySQL--3增删改查

                                                  增删改

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 |
+----+------+--------+-------+--------+
 


 

发布了26 篇原创文章 · 获赞 4 · 访问量 439

猜你喜欢

转载自blog.csdn.net/yanghainan0318/article/details/103122240