SQL

1.建立数据库:
create database XXX;
USE Databasename;

2.建立表:
create table table_name(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
.... );

3.插入数据:
a.原有数据插入:
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)大量数据时的效率问题:
http://www.jianshu.com/p/3a7fb9d7d91f
d.insert into.....
INSERT INTO 表名称 VALUES (值1, 值2,....);
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);

4.更新表的内容:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;

5.删除表中的数据:
DELETE FROM 表名称 WHERE 列名称 = 值;

6.查询数据:
a.指定行:
sql server:SELECT TOP number|percent column_name(s) FROM table_name;
my sql:select * from table_name limit 3,1; #跳过前3条数据,从数据库中第4条开始查询,取一条数据,即第4条数据
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 ‘匹配方式’
正则表达式的模式字符 含义
^ 匹配字符串开始的部分
$ 匹配字符串结束的部分
. 代表字符串中任意一个字符,包括回车和换行
[字符集合] 匹配”字符集合”中的任何一个字符
[^字符集合] 匹配除了“字符集合”以外的任何一个字符
S1|S2|S3 匹配S1、S2和S3中的任意一个字符串

  • 代表多个该符号之前的字符,包括0和1个
  • 代表多个该符号之前的字符,包括1个
    字符串{N} 字符串出现N次
    字符串{M,N} 字符串出现至少M次,最多N次
    c.条件查询:
    ----IN 操作符允许我们在 WHERE 子句中规定多个值。
    SELECT column_name(s) FROM table_name WHERE column_name IN(value1,value2,...);
    ----BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
    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
查询结果不重复:SELECT DISTINCT num FROM grade;
where 后限定的条件:WHERE EXISTS(NOT EXISTS),WHERE score >=ANY,WHERE score>=ALL (SELECT score FROM scholarship)

7.数据类型:
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.在表上创建一个简单的索引。允许使用重复的值:
CREATE INDEX index_name ON table_name (column_name);
b.在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。
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函数:
http://www.w3school.com.cn/sql/sql_functions.asp
Eg:
a.在MySql中连接要是用CONCAT函数:
SELECT OrderID,FirstName,LastName,
CONCAT(FirstName,' ',LastName) AS 'fullname'
FROM orders
b.字符函数:left(字段,几个),right(字符, 几个),LTRIM(CharacterValue)
可以删除左边开始的空格,RTRIM作用类似;SUBSTRING('thewhitegoat',4,5)返回white
c,日期函数:
----GETDATE()返回当前日期和时间。
PS:在MySql中,等价函数是NOW,在Oracle中是CURRENT_DATE。
----DATEPART(datepart,DateValue)--(datepart可以是year,month,quarter,day,dayofyear,week,weekday,hour,minute,second);
----DATEDIFF可以让我们得到任意两个日期之间相差的天数(或周数、月数等)。
DATEDIFF(datepart1,startdate1,startdate2)
DATEDIFF(day,'7/8/2009','8/14/2009') 37
PS:MySql中,DATEDIFF函数只允许我们计算两个日期之间的天数,如果想要得到一个正数,结束的日期通常要作为第一个参数:
DATEDIFF(enddate,startdate)
Oracle中没有等价函数
d.转换函数:
----CAST函数:允许我们把数据从一种类型转换成另一种类型。
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表达式对于把不好理解的值转换成有意义的描述是很有用的。
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中使用表的别名进行!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容