數(shù)據(jù)庫(kù)常用語(yǔ)法詳解#
一、寫(xiě)sql思路:
1.select(列名);展現(xiàn)字段。
2.from 表名;查詢(xún)字段在哪些表。
3.where 篩選(行);多表關(guān)聯(lián)、字段約束。
4.group by 分組;聚合函數(shù)。
5.having 分組后的過(guò)濾;對(duì)聚合函數(shù)結(jié)果約束。
6.order by/desc;升序/降序。
7.distinct;去重。 select distinct column_name 1,column_name 2 from table_name ;
二、基本語(yǔ)法##
1. limit / rownum ---限定行數(shù)
1.1 查詢(xún)前n行數(shù)據(jù)。
select * from student limit n;
1.2 查詢(xún)表中的n-m行。
select * from student limit n,m ;
1.3:查詢(xún)t_account表中第20-100行的姓名(分頁(yè)查詢(xún))###
select * from(select t.name,rownum rm from t_account t where rownum <= 100)where rm >=20;
2. order by ---分組
2.1 按照姓名,年齡排序。
select * from student order by Name,Age ;
3. show ---展現(xiàn)表
show student ;
4. in/not in ---行中包含/不包含的字段
select * from student t where name in('張三','李四');
5. concat ---展示以‘逗號(hào)’連接的列名
select concat (FirstName, ' , ' ,City) from customers ;
6. as ---后面跟表別名,有時(shí)可省略
select concat (FirstName, ' , ' ,City) as new_column from customers ;
7. + - * / ---加減乘除(可直接對(duì)列做運(yùn)算)
select ID , FirstName , LastName ,Salary + 500 as Salary from Employees ;
8. sqrt /avg/sum---平方根/平均數(shù)/總和
select Salary,sqrt(Salary) from employees ;
9. upper / lower---展現(xiàn)大/小寫(xiě)字母的列名
select FirstName , upper(LastName) as LastName from enployees ;
10. Sbuquerise ---子查詢(xún)
select FirstName,Salary from employees where Salary >(select avg(Salary) from employees) order by Salary desc ;
11. like/% ---模糊查詢(xún)
查詢(xún)姓名以A開(kāi)頭的人。
select * from employess where FirstName like 'A%' ;
12. min ---最小值
select name,min(cost) from items where name like '%boxes of frogs' and seller_id in(68,6,18) ;
13. joining tables ---表關(guān)聯(lián)
select customer.ID , customers.Name , orders.Name ,oders.Amount from customers,oders where customers.ID = oders.Coustomer_ID order by customers.ID ;
14. inner join/left join/right join ---內(nèi)/左/右
15. union/union all ---將表合在一起并去重/不去重
select column_name(s) from table1 union select column_name(s) from table2 ;
三、數(shù)據(jù)的增刪改##
增:###
insert into 表名(列名1,列名2) values(值1,值2)`;
刪:###
delect 表名 where 篩選條件;也可以直接delect 表名 ;
改:###
update 表名 set 更新后的列名1=更新后的值1,更新后的列名2=更新后的值2 where 篩選條件;
例:####
update Employees set Salary = 5000 , FirstName = 'Robert' where ID = 1 ;
四、表的增刪改##
增:###
creat table Users (
UsersID int,
FirstName varchar(100)
);
刪:###
drop table 表名;
改:###
after table 表名 modify 字段名 字段類(lèi)型;
1.Data types###
Numeric
int(整數(shù))\ float(小數(shù))\ double(小數(shù))
1.1 Date and Time
date(YYYY-MM-DD)
time(HH:MM:SS)
datetime(YYYY-MM-DD HH:MM:SS)
timestamp(mindnight,January 1,1970)
1.2 String
char
varchar
blob -
text
1.3 Primary Key
creat table Users(
UserID int,
FirstName varchar(100),
primary key (UserID)
);
五、Alter,Drop,Rename a Table##
People
| ID | FirstName | LastName | City |
|---|---|---|---|
| 1 | John | Smith | New York |
| 2 | David | Williams | Los Angeles |
| 3 | Chloe | Anderson | Chicago |
alter table People add DateOfBirth date ;
| ID | FirstName | LastName | City | DateOfBirth |
|---|---|---|---|---|
| 1 | John | Smith | New York | NULL |
| 2 | David | Williams | Los Angeles | NULL |
| 3 | Chloe | Anderson | Chicago | NULL |
alter table People drop column DateOfBirth ;
| ID | FirstName | LastName | City |
|---|---|---|---|
| 1 | John | Smith | New York |
| 2 | David | Williams | Los Angeles |
| 3 | Chloe | Anderson | Chicago |
drop table People ;(刪除表)
alter table People change Firstname name varchar(100) ;(更新表名)
| ID | name | LastName | City |
|---|---|---|---|
| 1 | John | Smith | New York |
| 2 | David | Williams | Los Angeles |
| 3 | Chloe | Anderson | Chicago |
六、View
| FirstName | LastName | Age | Salary |
|---|---|---|---|
| 1 | Emily | Adams | 34 |
| 2 | Chloe | Anderson | 27 |
| 3 | Daniel | Harris | 30 |
create views List as select FirstName,Salary from Employees ;
| FirstName | Salary |
|---|---|
| Emily | 5000 |
| Chloe | 10000 |
| Daniel | 6500 |
create or replace view List as select FirstName,LastName,Salary from Employees ;
FirstName|LastName|Salary
---|---|---|---
Emily|Adams|5000
Chloe|Anderson|10000
Daniel|Harris|6500
drop view List ;(刪除)
七、日期函數(shù)##
| 函數(shù)名 | 語(yǔ)法 | 描述 |
|---|---|---|
| sysdate | sysdate | 當(dāng)前時(shí)間 |
| last_day | last_day(sysdate) | 本月最后一天 |
| add_months | add_months(日期,n) | 推后n個(gè)月 |
| to_char | to_char(日期,格式) | |
| to_date | to_date(時(shí)間字符串,時(shí)間格式) |
例1:查詢(xún)出生日期為“1988—09-15”的客戶###
1.select * from t_customer where t.birthday = to_date('1988-09-15',yyyy-MM-dd) ;
2.select * from t_customer where to_char(t.birthday,'yyyy-MM-dd') = '1988-09-15' ;