2分钟掌握基本的SQL语句

Sql表格处理
一、表结构的改变:
ALTER TABLE CUSTOMER ADD ADDRESS CHAR(50);
ALTER TABLE CUSTOMER RENAME COLUMN ADDRESS to ADDR;
ALTER TABLE CUSTOMER DROP ADDR;
ALTER TABLE CUSTOMER MODIFY SID CHAR(30)

二、添加主键 ALTER TABLE CUSTOMER ADD PRIMARY KEY (SID);

三、添加外键:
第一种创建表
[size=large]MySQL[/size]:
CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
Primary Key (Order_ID),
Foreign Key (Customer_SID) references CUSTOMER(SID));

ORACLE OR SQL SERVER:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date date,
Customer_SID integer references CUSTOMER(SID),
Amount double);

第二种改变表格架构
MySQL or SQL SERVER:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
Oracle:
ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
四、彻底删除表:
DROP TABLE TABLE_NAME;
清除表格资料:
TRUNCATE TABLE TABLE_NAME;
五、给表添加数据:
第一种:一次输入一笔
INSERT INTO Store_Information (store_name, Sales, Date)
VALUES ('Los Angeles', 900, 'Jan-10-1999');
第二种:一次输入多笔:
INSERT INTO Store_Information (store_name, Sales, Date)
SELECT store_name, Sales, Date FROM Sales_Information
WHERE Year(Date) = 1998
备注:Oracle中用where to_char(date,’yyyy’)=1998
六、更改表中的数据:
UPDATE Store_Information SET Sales = 500 WHERE store_name = "Los Angeles" AND Date = "Jan-08-1999" ;
七、删除表中的部分数据:
DELETE FROM Store_Information WHERE store_name = "Los”;


SQL语法
Store_Information 表格
store_name Sales Date

Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

Geography 表格
region_name store_name

East Boston
East New York
West Los Angeles
West San Diego

Internet Sales 表格

Date Sales

Jan-07-1999 $250
Jan-10-1999 $535
Jan-11-1999 $320
Jan-12-1999 $750

1.DISTINCT: SELECT DISTINCT”字段” FROM TABLE_NAME
2.IN : SELECT "字段" FROM "表名" WHERE "字段" IN ('值1', '2', ...)
3.BETEEN: SELECT "字段" FROM "表名" WHERE "字段" BETWEEN '值1' AND '值2'
4.LIKE : SELECT "字段" FROM "表名" WHERE "字段" LIKE ‘_JF%’;
5.ORDERBY 默认是”ASE”,DESC
备注:SELECT store_name, Sales, Date FROM Store_Information
ORDER BY 2 DESC; //2表示字段Sales
6.COUNT: SELECT COUNT(字段) FROM TABLE where 字段 is not null;
7.GROUPBY HAVING组合:
SELECT "栏位1", SUM("栏位2") FROM "表名" GROUP BY "栏位1" HAVING (栏位);
8.OR AND < > >= <
9.COUNT DISTINCT组合:
SELECT COUNT(DISTINCT store_name) FROM Store_Information
10.内连接:
SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name ;
11.外连接:
SELECT A1.store_name, SUM(A2.Sales) SALES FROM Georgraphy A1, Store_Information A2 WHERE A1.store_name = A2.store_name (+)
GROUP BY A1.store_name;
备注:"(+)" 来代表说这个表格中的所有资料我们都要。
12.subquery(HAVING OR WHERE)
SELECT SUM(Sales) FROM Store_Information WHERE Store_name IN(SELECT store_name FROM Geography WHERE region_name = 'West')
13. UNION相当于(SELECT DISTINCE)人、条件是字段名相同,并且类型相同
SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales
14. UNION ALL是将无论资料值有无重复都显示出来
15. INTERSECT是UNION的进化,显示出来的结果是共同拥有的
SELECT Date FROM Store_Information INTERSECT
SELECT Date FROM Internet_Sales
Date
Jan-07-1999

16. MINUS:相当于除去相同的
SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales
Date
Jan-05-1999
Jan-08-1999

17. CONCAT作用将由不同栏位获得的资料串连在一起。
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
例子1:
MySQL/Oracle:
SELECT CONCAT(region_name,store_name) FROM Geography
WHERE store_name = 'Boston';
结果:
'EastBoston'
例子2:
Oracle:
SELECT region_name || ' ' || store_name FROM Geography
WHERE store_name = 'Boston';
结果:
'East Boston'

select concat('010-','88888888')||'转23' 高乾竞电话 from dual;
高乾竞电话
----------------
010-88888888转23

例子3:
SQL Server:
SELECT region_name + ' ' + store_name FROM Geography
WHERE store_name = 'Boston';
结果:
'East Boston'

18. substring 函数是用来抓出一个栏位资料中的其中一部分。
MySQL: SUBSTR(), SUBSTRING()
Oracle: SUBSTR()
SQL Server: SUBSTRING
SELECT SUBSTR(store_name, 3)
FROM Geography
WHERE store_name = 'Los Angeles';
结果:
's Angeles'
SELECT SUBSTR(store_name,2,4)
FROM Geography
WHERE store_name = 'San Diego';
结果:
'an D'
19. TRIM,LTRIM,RTRIM函数作用移除掉一个字串中的字头或字尾
如select trim(‘ fdfs ’) ‘fdfs’
20. create table view 很容易不讲了
21. create index 作用是可以帮助我们从表格中快速地找到需要的资料。
Create index IDX_indexname on customer(city);
22.initcap('smith') end:Smith
23.inistr('smithth','th',1,2) end:6
24.if sal=9999.99 length(to_char(sal)) end:7 //length返回字符串的长度

25.Lower('abCD') end:abcd Upper() 相反

26.lpad(rpad('gao',10,'*'),17,'*') end *******gao******* 黏贴字符不够的用‘*’代替

27.replace('he love you','he','I') end i love you
28.abs(-100) 100

29.ceil(3.1415926) 4
30. exp(2) e的2次方
31. floor(4.65) 4
32. mod(10,3) end:1
33.power(2,10) end:1024
34. round(55.5) end:56 trunc(55.5) 55
35..SIGN
取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
36.add_months add_months(to_date('199902','yyyymm'),2) 199904

37.last_day('2004.05.09') 31-5月 -04
38.months-between(date1,date2);date1-date2

39.NEW_TIME(date,'this','that')
给出在this时区=other时区的日期和时间
SQL> select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time
2 (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;
BJ_TIME LOS_ANGLES
------------------- -------------------
2004.05.09 11:05:32 2004.05.09 18:05:32
40.NEXT_DAY(date,'day')
给出日期date和星期x之后计算下一个星期的日期
SQL> select next_day('18-5月-2001','星期五') next_day from dual;
NEXT_DAY
----------
25-5月 -01
41.SYSDATE
用来得到系统的当前日期
SQL> select to_char(sysdate,'dd-mm-yyyy day') from dual;
TO_CHAR(SYSDATE,'
-----------------
09-05-2004 星期日
trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒
SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,
2 to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;
HH HHMM
------------------- -------------------
2004.05.09 11:00:00 2004.05.09 11:17:00

42.to_number()将给出的字符转换为数字

43.TO_DATE(string,'format')
将字符串转化为ORACLE中的一个日期
54.EMPTY_BLOB()和EMPTY_CLOB()
这两个函数都是用来对大数据类型字段进行初始化操作的函数
55.GREATEST
返回一组表达式中的最大值,即比较字符的编码大小.
SQL> select greatest('AA','AB','AC') from dual;
GR
--
AC
SQL> select greatest('啊','安','天') from dual;
GR
--

56.LEAST
返回一组表达式中的最小值
SQL> select least('啊','安','天') from dual;
LE
--

55.select user from dual 返回当前用户的名字


56.userenv()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值