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

 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章