1.建立數(shù)據(jù)庫:
create database XXX;
USE Databasename;
2.建立表:
create table table_name(
列名稱1 數(shù)據(jù)類型,
列名稱2 數(shù)據(jù)類型,
列名稱3 數(shù)據(jù)類型,
.... );
3.插入數(shù)據(jù):
a.原有數(shù)據(jù)插入:
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename互婿;
b.或者只把希望的列插入新表:
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename;
c.探究SQL插入(insert)大量數(shù)據(jù)時的效率問題:
http://www.reibang.com/p/3a7fb9d7d91f
d.insert into.....
INSERT INTO 表名稱 VALUES (值1, 值2,....);
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);
4.更新表的內(nèi)容:
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值;
5.刪除表中的數(shù)據(jù):
DELETE FROM 表名稱 WHERE 列名稱 = 值擦酌;
6.查詢數(shù)據(jù):
a.指定行:
sql server:SELECT TOP number|percent column_name(s) FROM table_name;
my sql:select * from table_name limit 3,1; #跳過前3條數(shù)據(jù)训挡,從數(shù)據(jù)庫中第4條開始查詢较鼓,取一條數(shù)據(jù)京郑,即第4條數(shù)據(jù)
b.模糊查詢:
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern瀑构;
通配符:
%: 替代一個或多個字符
_ :僅替代一個字符
[charlist]:字符列中的任何單一字符
[^charlist]或者[!charlist]:不在字符列中的任何單一字符
正則表達式:
http://www.cnblogs.com/shimily/articles/6553514.html
屬性名 REGEXP ‘匹配方式’
正則表達式的模式字符 含義
^ 匹配字符串開始的部分
$ 匹配字符串結(jié)束的部分
. 代表字符串中任意一個字符裆针,包括回車和換行
[字符集合] 匹配”字符集合”中的任何一個字符
[^字符集合] 匹配除了“字符集合”以外的任何一個字符
S1|S2|S3 匹配S1、S2和S3中的任意一個字符串
- 代表多個該符號之前的字符寺晌,包括0和1個
- 代表多個該符號之前的字符世吨,包括1個
字符串{N} 字符串出現(xiàn)N次
字符串{M,N} 字符串出現(xiàn)至少M次,最多N次
c.條件查詢:
----IN 操作符允許我們在 WHERE 子句中規(guī)定多個值呻征。
SELECT column_name(s) FROM table_name WHERE column_name IN(value1,value2,...)耘婚;
----BETWEEN 操作符在 WHERE 子句中使用,作用是選取介于兩個值之間的數(shù)據(jù)范圍陆赋。
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2沐祷;:
----group by,Having:
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;
d.查詢條件:
比較 =嚷闭、<、<=赖临、>胞锰、>=、!=兢榨、<>嗅榕、!<、!>
指定范圍 BETWEEN AND吵聪、NOT BETWEEN AND
指定集合 IN凌那、NOT IN
匹配字符 LIKE、NOT LIKE(只能匹配字符串吟逝,%代表任意長度帽蝶,_代表單個字符)
是否為空值 IS NULL、IS NOT NULL
多個查詢條件 AND块攒、OR(SQL總是會先處理AND操作符@取!局蚀!然后才會處理OR操作符)
限制條件 LIMIT
查詢結(jié)果不重復:SELECT DISTINCT num FROM grade;
where 后限定的條件:WHERE EXISTS(NOT EXISTS)麦锯,WHERE score >=ANY,WHERE score>=ALL (SELECT score FROM scholarship)
7.數(shù)據(jù)類型:
http://www.w3school.com.cn/sql/sql_datatypes.asp
常用:my sql:varchar(),Int(),date(),double()
8.表約束:
NOT NULL:非空琅绅。
UNIQUE:唯一扶欣。
PRIMARY KEY:唯一,不為NULL千扶,每個表都應有一個主鍵料祠,并且每個表只能一個。
FOREIGN KEY:一個表中的 FOREIGN KEY 指向另一個表中的 PRIMARY KEY澎羞。
CHECK:用于限制列中的值的范圍髓绽。
DEFAULT:例如:字段名 DEFAULT 'Sandnes',
備注:請注意妆绞,每個表可以有多個 UNIQUE 約束顺呕,但是每個表只能有一個 PRIMARY KEY 約束。
9.索引:
a.在表上創(chuàng)建一個簡單的索引括饶。允許使用重復的值:
CREATE INDEX index_name ON table_name (column_name)株茶;
b.在表上創(chuàng)建一個唯一的索引。唯一的索引意味著兩個行不能擁有相同的索引值图焰。
CREATE UNIQUE INDEX index_name ON table_name (column_name);
c.刪除索引:
my sql:ALTER TABLE table_name DROP INDEX index_name;
sql server:DROP INDEX table_name.index_name启盛;
10.sql 日期:
http://www.w3school.com.cn/sql/sql_dates.asp
11.sql函數(shù):
http://www.w3school.com.cn/sql/sql_functions.asp
Eg:
a.在MySql中連接要是用CONCAT函數(shù):
SELECT OrderID,FirstName,LastName,
CONCAT(FirstName,' ',LastName) AS 'fullname'
FROM orders
b.字符函數(shù):left(字段,幾個),right(字符僵闯, 幾個)卧抗,LTRIM(CharacterValue)
可以刪除左邊開始的空格,RTRIM作用類似;SUBSTRING('thewhitegoat',4,5)返回white
c,日期函數(shù):
----GETDATE()返回當前日期和時間。
PS:在MySql中鳖粟,等價函數(shù)是NOW社裆,在Oracle中是CURRENT_DATE。
----DATEPART(datepart,DateValue)--(datepart可以是year,month,quarter,day,dayofyear,week,weekday,hour,minute,second);
----DATEDIFF可以讓我們得到任意兩個日期之間相差的天數(shù)(或周數(shù)牺弹、月數(shù)等)浦马。
DATEDIFF(datepart1,startdate1,startdate2)
DATEDIFF(day,'7/8/2009','8/14/2009') 37
PS:MySql中时呀,DATEDIFF函數(shù)只允許我們計算兩個日期之間的天數(shù)张漂,如果想要得到一個正數(shù),結(jié)束的日期通常要作為第一個參數(shù):
DATEDIFF(enddate,startdate)
Oracle中沒有等價函數(shù)
d.轉(zhuǎn)換函數(shù):
----CAST函數(shù):允許我們把數(shù)據(jù)從一種類型轉(zhuǎn)換成另一種類型谨娜。
CAST(expression AS DateType)
例子:SELECT '2009-04-11' AS 'Original Date',
CAST('2009--04-11' AS DATETIME) AS 'Converted Date'航攒;
----isnull:SELECT Description,ISNULL(Color,'Unknown') AS 'Color' FROM Products;
e.CASE表達式對于把不好理解的值轉(zhuǎn)換成有意義的描述是很有用的。
SELECT
CASE CategoryCode
WHEN 'F' THEN 'Fruit'
WHEN 'V' THEN 'Vegetable'
ELSE 'other'
END AS 'Category',
ProductDescription As 'Description'
FROM Products;
----CASE
WHEN ebv.db_no IN (22978, 23218, 23219) THEN 'WECS 9500'
ELSE 'WECS 9520'
END as wecs_system;
----CASE ebv.db_no
WHEN 22978 THEN 'WECS 9500'
WHEN 23218 THEN 'WECS 9500'
WHEN 23219 THEN 'WECS 9500'
ELSE 'WECS 9520'
END as wecs_system;(同上一效果)
12.別名
1)列的別名
SELECT firstname AS fn FROM customers趴梢;
2) 表的別名
SELECT firstname FROM customers AS cu漠畜;
說明:
列的別名不能在WHERE中使用列的別名,可以在WHERE中使用表的別名進行坞靶!