之前很少使用,但是換了新的工作,雖然還在遠程辦公,但發現用到的比較多,所以花半天時間學習下基本語言,主要是從w3school中學習(後續會逐步補充)
1、sql主要分爲兩個部分:dml和ddl。DML主要是查詢和更新,都是處理表中數據,包含select、update、insert、delete(刪除表中數據);DDL更上一層,對錶與表之間關係進行處理,如drop(刪除表)、create、alter。
2、select:select Company from my_table從表中選取Company對應的列;結果:ibm、w3school、apple、w3school
select * from my_table從表中選取所有的列;結果:原表
select distinct Company from my_table從表中選取Company對應的列並去重;結果:ibm、w3school、apple
select a.Company from my_table as a:把table臨時命名爲a
select Company as "公司" from my_table:把字段名改變
select Company,OrderNumber into table2 from table1:從表1中選擇某些列存入表2中;如果table2在別的數據庫,table2後面加入“in 數據庫名稱”
group by:對元素進行整合;select Company,sum(orderNumber) from my_table group by Company
having:select Company,sum(orderNumber) from my_table group by Company having sum(orderNumber)>100
3、where:在select的時候添加限制條件。常用關係有<>(不等於)、between、=、>、<等,數值不用引號,字符串需要引號;
and和or就是條件之間的並列了。
4、order by:取出的數據按照順序排序。select * from table order by Company desc,orderNumber asc:Company按降序排列,orderNumber按升序排列。
5、insert into:1、insert into my_table values(string1,string2),插入一行新的數據
2、insert into my_table(Company)values(string1),對指定列插入數據
6、update:1、update my_table set Company=新值 where Company=舊值(改變原來舊值)
2、update my_table set Company=新值,orderNumber=新值 where Company=舊值(改變某一行多列值)
7、delete:1、delete from my_table where Company=apple:刪除apple這一行
2、delete * from my_table:不刪除表,清空數據,或者delete from my_table
8、limit:限制選取多少行
9、rlike:匹配正則
not rlike:不能匹配
rlike ‘%b’以b結尾,‘b%’以b開頭,‘%b%’中間包含b。%匹配一個或者多個字符
_一個字符;[abc]中的任一個;[!abc]=[^abc]不能是abc中的任一個
10、in:select * from my_table where Company in (string1,string2):Company值是string1或者2都應該被選取
11、inner join:select a,b,c from table1
inner join table2
on a = table2.a
left join:返回table1中所有行,即使table2中沒有匹配到
right join:與上面相反
full join:只要其中一個表存在匹配就返回行(就是left和right的並集)
12、union:select string1 from table1 union string2 from table2:求並集去重;union all的話不去重;兩者必須相同的列且每一列的字段名相同
13、create database my_db:創建名稱爲my_db的數據庫
drop database my_db刪除庫
create table my_table:創建名稱爲my_table的表
create table if not exists my_table lifecycle 33 as:創建名稱爲my_table的表,存在週期爲33天
create table my_table {
列名稱1 數據類型,(int、char、varchar(255)、date(yyyymmdd))(int not null unique check (列名稱1>0))
列名稱1 數據類型(varchar(255)表示字符最大長度是255)
}
drop table my_table刪除表
truncate table my_table只刪除表中數據而不刪除表,和delete * from my_table功能相似
14、約束:用於限制加入表的數據類型
not null:相當於不接受空值
unique:約束唯一標示數據庫表中的每條記錄;
已建表時:alter table my_table add unique(列名稱1)
撤銷時:alter table my_table drop unique ,貌似不對的
primary key:和unique類似
foreign key:不是很明白,以後用到了再細讀
check:對值進行約束,如列名稱1的數據類型是int,check(列1 > 0),對值範圍進行規定
default:不是很明白,以後用到了再細讀
15、create index:create index index_table1 on table1(string1):對string1建立索引,多列用逗號隔開,加上dec就是降序
drop index index_table1 on table1刪除索引,或drop index table1.index_table1,alter table table1 drop index index_table1
16、drop:刪除索引、表或者數據庫
17、alter:在表中添加、修改或刪除
添加:alter table my_table add string1 datatype1(增加新一列,數據類型是1)
刪除:alter table my_table drop column string1(刪除string1這列)
修改:alter table my_table alter column string1 datatype2(數據類型1改成2)
下面的主要是函數:
avg(colmun):某列均值;select string2 from my_table where string1>(select avg(string1) from my_table)
count(colmun):某列行數(不包含null的行)
count(distinct colmun):某列行數(不包含null的行,且去重了)
count(*):被選行數
max(cloumn):指定列中最大值
min(cloumn):指定列中最小值
sum(column):指定列總和
ucase(column):變成大寫;select ucase(string1) as string1, string2 from my_table
lcase(column):變成小寫
mid(column,start,length):對該列元素進行截取
len(column):該列元素長度;select len(string1) as len_string1 from my_table
round(column,1):該列元素小數點保留1位;select round(string1) as unit_string1 from my_table
now():當前時間;select string1,string2,now() as date from my_table;原表中抽取兩列並加入一列當前時間
format(column,格式):對該列數據轉變爲固定格式;select string1,format(now(),'YYYY-MM-DD') as date from my_table