增刪改
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 |
+----+------+--------+-------+--------+