数据库常用语法详解#
一、写sql思路:
1.select(列名);展现字段。
2.from 表名;查询字段在哪些表。
3.where 筛选(行);多表关联、字段约束。
4.group by 分组;聚合函数。
5.having 分组后的过滤;对聚合函数结果约束。
6.order by/desc;升序/降序。
7.distinct;去重。 select distinct column_name 1,column_name 2 from table_name ;
二、基本语法##
1. limit / rownum ---限定行数
1.1 查询前n行数据。
select * from student limit n;
1.2 查询表中的n-m行。
select * from student limit n,m ;
1.3:查询t_account表中第20-100行的姓名(分页查询)###
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 ---展现表
show student ;
4. in/not in ---行中包含/不包含的字段
select * from student t where name in('张三','李四');
5. concat ---展示以‘逗号’连接的列名
select concat (FirstName, ' , ' ,City) from customers ;
6. as ---后面跟表别名,有时可省略
select concat (FirstName, ' , ' ,City) as new_column from customers ;
7. + - * / ---加减乘除(可直接对列做运算)
select ID , FirstName , LastName ,Salary + 500 as Salary from Employees ;
8. sqrt /avg/sum---平方根/平均数/总和
select Salary,sqrt(Salary) from employees ;
9. upper / lower---展现大/小写字母的列名
select FirstName , upper(LastName) as LastName from enployees ;
10. Sbuquerise ---子查询
select FirstName,Salary from employees where Salary >(select avg(Salary) from employees) order by Salary desc ;
11. like/% ---模糊查询
查询姓名以A开头的人。
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 ---表关联
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 ---内/左/右
15. union/union all ---将表合在一起并去重/不去重
select column_name(s) from table1 union select column_name(s) from table2 ;
三、数据的增删改##
增:###
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 字段名 字段类型;
1.Data types###
Numeric
int(整数)\ float(小数)\ double(小数)
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 ;(删除)
七、日期函数##
| 函数名 | 语法 | 描述 |
|---|---|---|
| sysdate | sysdate | 当前时间 |
| last_day | last_day(sysdate) | 本月最后一天 |
| add_months | add_months(日期,n) | 推后n个月 |
| to_char | to_char(日期,格式) | |
| to_date | to_date(时间字符串,时间格式) |
例1:查询出生日期为“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' ;