主要记录工作中常见的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>