DDL(數(shù)據(jù)定義語言)語句:
? ? ? ? ? ? ? ? ### create database? -- 創(chuàng)建新數(shù)據(jù)庫
? ? ? ? ? ? ? ? ### alter database -- 修改數(shù)據(jù)庫
? ? ? ? ? ? ? ? ### create table -- 創(chuàng)建新表
? ? ? ? ? ? ? ? ### alter table -- 變更數(shù)據(jù)庫表
? ? ? ? ? ? ? ? ### create index -- 創(chuàng)建索引
? ? ? ? ? ? ? ? ### drop index -- 刪除索引
DML(數(shù)據(jù)操作語言)部分
? ? ? ? ? ? ? ?### select - update - delete - insert into
? ? ? ? ? ? ? ?注意:SQL對大小寫不敏感泼舱!
SQL特殊用法:
? ? ? ? ? ? ?例1:從Persons表中選取居住的城市已‘A’或‘L’或'N'開頭的人
? ? ? ? ? ????????????? select? * from Persons Where city Like '[ALN]'
? ? ? ? ? ? 例2: Inner join,在表中存在至少一個匹配時,inner join關(guān)鍵字返回行迫横。
? ? ? ? ? ? ? ? ? ? 注意:Inner join 與 join是相同的助赞。
? ? ? ? ? ? 例3:left join,關(guān)鍵字會從左表那里返回所有的行昵宇,即使在右表中沒有匹配的行矗愧。同理right join.
? ? ? ? ? ? 例4:full join,結(jié)合的左梯醒,右外連接的結(jié)果宽堆。連接表將包含的所有記錄來自兩個表,并使用null作為兩側(cè)確實匹配結(jié)果
? ????????????????ELECT table1.column1,table2.column2...FROM table1 FULL JOIN table2 ON table1.common_field=table2.common_field;?
? ? ? ? ? ? ? ? 如果你的數(shù)據(jù)不支持Full join茸习,如mysql不支持 full join ,那么可以使用union all子句畜隶。?
? ??????????????SQL>select id,name,amount,date from customers left join orders on customers.id = orders.customer_id?
? ? ? ? ? ? ? ? ? ? ? ? union all
? ??????????????????????select id,name,amount,date from customers left join orders on customers.id = orders.customer_id?
? ? ? ? ? ? 例5、Union号胚,操作符用于合并兩個或多個select語句的結(jié)果集籽慢,請注意,union內(nèi)部的select語句必須擁有相同數(shù)量的列猫胁,列
? ? ? ? ? ? ? ? ? ? 也必須擁有相似的數(shù)據(jù)類型箱亿。同時,每條select語句中的列的順序必須相同弃秆。
? ? ? ? ? ? ? ? ? ? 注釋:默認(rèn)地,union操作符選取不同的值极景,如果允許重復(fù)的值察净,請使用Union all,另外盼樟,Union結(jié)果集中的列名總是等于
? ? ? ? ? ? ? ? ? ? union 中第一個select 語句中的列名氢卡。
? ? ? ? ? ? 例6、Select into語句從一個表中選取數(shù)據(jù)晨缴,然后把數(shù)據(jù)插入另一個表中
? ? ? ? ? ? ? ? ? ? select * into new_table_name [ IN externaldatabase] from old_tablename
? ? ? ? ? ? ? ? ? ? select column_name(s) into new_table_name [IN externaldatabase] from old_tablename
? ? ? ? ? ? 例7译秦、Default,約束用于向列中插入默認(rèn)值
? ? ? ? ? ? ? ? ? ? 如果沒有規(guī)定其他的值,那么會將默認(rèn)值添加到所有的新記錄
? ? ? ? ? ? ? ? ? ? create table persons
????????????????????(
? ? ? ? ? ? ? ? ? ? ? ? Id_P int NOT NULL击碗,
? ? ? ? ? ? ? ? ? ? ? ? LastName varchar(255) NOT NULL,
? ? ? ? ? ? ? ? ? ? ? ? FirstName varchar(255)筑悴,
? ? ? ? ? ? ? ? ? ? ? ? Address varchar(255),
? ? ? ? ? ? ? ? ? ? ? ? City varchar(255) Default 'Sandnes'
????????????????????)? ??
? ? ? ? ? ? SQL Nulls
? ? ? ? ? ? ? ? ? ? 查詢的時候稍途,如數(shù)據(jù)表中列帶有Null值的記錄阁吝,必須使用 IS NULL操作符。
? ? ? ? ? ? ? ? ? ? 不帶有Null值的記錄械拍,必須使用 IS NOT NULL操作符
? ? ? ? ? ? SQL ISNULL()
? ? ? ? ? ? ? ? ? ? Oracle使用NVL()函數(shù)將表中的Null值轉(zhuǎn)化為0
? ? ? ? ? ? SQL functions
? ? ? ? ? ? 函數(shù)的基本類型是:Aggregate函數(shù):Aggregate函數(shù)的操作面向一系列的值突勇,并返回一個單一的值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Scalar函數(shù):Scalar函數(shù)的操作面向某個單一的值,并返回基于輸入值的一個單一的值坷虑。
? ? ? ? ? ? ? ? ?1甲馋、 SQL avg(),AVG函數(shù)返回數(shù)值類的平均值,Null值不包括在計算中
? ? ? ? ? ? ? ? ? ? ? ? ?Select avg(column_name) from table_name
? ? ? ? ? ? ? ? ? ?2迄损、Count(column_name)函數(shù)返回指定指定列的值的數(shù)目(Null不計入)
? ? ? ? ? ? ? ? ? ? ? ? 1定躏、Select Count(column_name)? from table_name? ? (f返回指定列的數(shù)目,null不計入)
? ? ? ? ? ? ? ? ? ? ? ? 2芹敌、Select Count(*) from table_name(返回表中的記錄數(shù))
????????????????????????3痊远、Select Count(Distinct column_name) from table_name(函數(shù)返回指定列的不同值的數(shù)目)
? ? ? ? ? ? ? ? ? ?3、first() 函數(shù)返回指定的字段中第一個記錄的值氏捞,提示:可使用ORDER BY語句對記錄進(jìn)行排序
? ? ? ? ? ? ? ? ? ? ? ? Select first(column_name) from table_name
? ? ? ? ? ? ? ? ? ? 4拗引、last() 函數(shù)返回指定的字段中最后一個記錄的值,可使用order by語句對記錄進(jìn)行排序
? ? ? ? ? ? ? ? ? ? ? ? Select last(column_name)? from table_name
? ? ? ? ? ? ? ? ? ? 5幌衣、max函數(shù)返回一列中的最大值。null值不包括在計算中
? ? ? ? ? ? ? ? ? ? ? ? Select max(column_name) from table_name
? ? ? ? ? ? ? ? ? ? 6壤玫、min 函數(shù)返回一列中的最小值豁护。null值不包括在計算中
? ? ? ? ? ? ? ? ? ? ? ? Select min(column_name) from table_name
? ? ? ? ? ? ? ? ? ? 7、sum()? 函數(shù)返回數(shù)值列的總數(shù)(總額)
? ? ? ? ? ? ? ? ? ? ? ? Select SUM(column_name) from table_name
? ? ? ? ? ? ? ? ? ? 8欲间、group by 合計函數(shù)(比如SUM)常常需要添加group by 語句
? ? ? ? ? ? ? ? ? ? ? ? group by 語句用于結(jié)合合計函數(shù)楚里,根據(jù)一個或多個列對結(jié)果績進(jìn)行分組
? ? ? ? ? ? ? ? ? ? 9、Having 在SQL中增加Having子句原因是猎贴,Where關(guān)鍵字無法與合計函數(shù)一起使用
? ? ? ? ? ? ? ? ? ? ? ? Select column_name,aggregate_function(column_name) From table_name where column_name operator value
? ? ? ? ? ? ? ? ? ? ? ? group by column_name Having aggregate_function(column_name) operator value????
? ? ? ? ? ? ? ? ? ? ? ? Select customer,SUM(OrderPrice) From Orders group by Customer Having SUM(OrderPrice) < 2000
? ? ? ? ? ? ? ? ? ? 10班缎、ucase () 函數(shù)把字段的值轉(zhuǎn)換為大寫
? ? ? ? ? ? ? ? ? ? ? ? Select Ucase(colummn_name) from table_name
? ? ? ? ? ? ? ? ? ? 11蝴光、lcase()函數(shù)把字段的值轉(zhuǎn)換為小寫
? ? ? ? ? ? ? ? ? ? ? ? ? ? Select LCASE(column_name) From table_name
? ? ? ? ? ? ? ? ? ? 12、mid() 函數(shù)用于從文本字段中提取字符(MySQL达址,Sql Server不可用)
? ? ? ? ? ? ? ? ? ? ? ? ? ? Select MID(column_name,start[,length]) From table_name
? ? ? ? ? ? ? ? ? ? ? ? ? ? column_name 必須蔑祟。要提取字符的字段
? ? ? ? ? ? ? ? ? ? ? ? ? ? start 必須。規(guī)定開始位置(起始值是1)
? ? ? ? ? ? ? ? ? ? ? ? ? ? length可選沉唠。要返回的字符數(shù)疆虚。如果省略,則Mid()函數(shù)返回剩余文本满葛。
? ? ? ? ? ? ? ? ? ? ? ? ? ? Select MID(city,1,3)? as SmallCity From Persons
? ? ? ? ? ? ? ? ? ? 13径簿、len() 函數(shù)返回文本字段中值的長度(mysql→Length()、Sql Server →len())
? ? ? ? ? ? ? ? ? ? ? ? ? ? Select LEN(column_name) From table_name?
? ? ? ? ? ? ? ? ? ? ? 14嘀韧、round() 函數(shù)用于把數(shù)值字段舍如為指定的小數(shù)位數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Select? Round(column_name,decimals) From table_name 參數(shù) 描述
? ? ? ? ? ? ? ? ? ? ? ? ? ? -column_name 必須篇亭。要舍入的字段
? ? ? ? ? ? ? ? ? ? ? ? ? ? -decimals 必須。規(guī)定要返回的小數(shù)位數(shù)
? ? ? ? ? ? ? ? ? ? ? ? 15锄贷、now() 函數(shù)返回當(dāng)前的日期和時間(mysql→now(),Sql server→getdate())
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Select now() from table_name?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Select getdate() from table_name
? ? ? ? ? ? ? ? ? ? ? ? 16译蒂、format() 函數(shù)用于對字段的顯示進(jìn)行格式化
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Select? Format(column_name,format) From table_name
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? column_name 必須,要格式化的字段
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? format,必須肃叶,規(guī)定格式蹂随。
? ??????????????????????????????SELECT FORMAT(getdate(),'yyyy-MM-dd HH:mm:ss') From table_name(→Sql Server)
? ??????????????????????????????SELECT DATE_FORMAT(Now(),'%Y-%m-%d %H:%i:%S') FROM table_name(→Mysql)
? ??????????????????????????????