半天時間學習SQL語言

之前很少使用,但是換了新的工作,雖然還在遠程辦公,但發現用到的比較多,所以花半天時間學習下基本語言,主要是從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

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章