Sql 常用语句

主要记录工作中常见的Sql语句。

1. 操作数据库

创建 /修改 / 删除

create database database_name

alter database database_name modify name = new_name

drop database database_name  --- 别人在用时,不能删除

2. 操作表

  • primary key;
  • foreign key

可以导入CSV文件,插入数据。

create table table_name
{
    column_1 data_type allow_null primary_key,
    column_2 data_type allow_null,
    ...
}

alter table table_name modify
Add column_name data_type --- 增加列

drop table table_name  --- 别人在用时,不能删除

3. insert

INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

4. where

5. update

UPDATE Websites SET alexa\='5000', country\='USA' WHERE name\='菜鸟教程';

6.select

7~8

9. constraint

用于约束限制加入表的数据类型

### 1. SQL CREATE TABLE + CONSTRAINT 语法
CREATE TABLE _table\_name_  
(  
_column\_name1 data\_type_(_size_) _constraint\_name_,  
_column\_name2 data\_type_(_size_) _constraint\_name_,  
_column\_name3 data\_type_(_size_) _constraint\_name_,  
....  
);

### 2. 在 SQL 中,我们有如下约束:
   **NOT_NULL**     : 指示某列不能存储 NULL 值。
   **UNIQUE**       : 保证某列的每行必须有唯一的值。
   **PRIMARY KEY**  : NOT NULL 和 UNIQUE 的结合(或两个列多个列的结合)。
   **FOREIGN KEY**  : 指向另一个表的primary key。
   **CHECK**        : 保证列中的值符合指定的条件。
   **DEFAULT**      : 规定没有给列赋值时的默认值。

10. data type

  • 数字型 numeric int / numerical / decimal
  • 字符型 string vchar / nvachar / char
  • 时间型 data/time data / time / datatime
  • 二元性 bool true / false
  • 杂型 xml/Json

11. Group by

根据一个或多个列结果进行分组。
可以和where 一起使用; 也可以单独使用。

select  genderid ,sum(genderid), id from employee where genderid > 1 GROUP by genderid,id ;

select genderid from employee GROUP by genderid;

12. Aggregate Function 合计函数

队列 加总 / 取最大值 / 最小值
count() 包含空值(不一定,需要验证)。

13. having

有条件的从表中选取数据,类似于where。
通常用在Aggr Func 和 Group by 中;having 需要在group by 之后

select genderid from employee GROUP by genderid having genderid > 1;

where 和 having 区别(运行时机):
where : 先运行 where ,然后再group by 和 aggr func;
having : 先group by 和 aggr func 再运行having;

14. string function

upper / low / len 
left / right(string, number)
charIndex (string_to_search, string, start)
substring (string, start, len)

15. data time - func

day / month / year 
dataAdd(data_type, number, data)
dataDiff(data_type, start_data, ens_data)

16. cast & convert

对数据类型改变(比如:数字和时间转化)

  • cast : 对数据类型进行转化 ;
  • convert : (通常用于时间转化)一般先用cast;
 cast (express as data_type)
 convert (data_type, express, style[])

17~18. join

19. union

20. Stored procedures

一组为了完成特定功能的SQL语句。

select column into New_table from Old_table;

注意:如果在sql/plus或者PL/SQL执行这条语句,会报"ORA-00905:缺失关键字"错误,原因是PL/Sql与T-SQL的区别。
T-SQL中该句正常,但PL/SQL中解释是:
select..into is part of PL/SQL language which means you have to use it inside a PL/SQL block. You can not use it in a SQL statement outside of PL/SQL.
即不能单独作为一条sql语句执行,一般在PL/SQL程序块(block)中使用。

如果想在PL/SQL中实现该功能,可使用create table NewTable as select column from ATable;

21. Functions

  • stored Procedures 可以使用Func;
  • Func 不可以使用stored Procedures ;

22. trigger

当满足某种预设条件时,自动执行。

23. View

可视化的表,更好的安全性。

24. Temporary table

'#'表示临时表

create table #table_name(column1, datetype, ...)

select column from #table_name

drop table #table_name

25. CTE

  • (Common Table Expression) 公共表 表达式;
  • 临时的结果集,可以为后面紧接的select 使用(与临时表的区别)

26. case when

返回的可能结果。
select case ..

when condition_1 then result_1
...
else return_n
end 

27. windows_function(窗体函数)

用来处理over子预计定义的行集。

  • row_number() over (partion by username order by column) : 相当于group by ,相同值不同序号 1234;
  • rank() : 相同值有相同序号,无影响 1224;
  • dense_rank() : 相同值有相同序号,有影响 1223;

< center> ---END--- < /center>

你可能感兴趣的:(sql)