基础SQL语句
2013-03-19 11:12
323 查看
store_information表格: Geography表格:
1. 查询:
2. 修改:
store_name | sales | date |
Los Angeles | 1500 | 1999-01-05 |
San Diego | 250 | 1999-01-07 |
Los Angeles | 300 | 1999-01-08 |
Boston | 700 | 1999-01-08 |
region_name | store_name |
East | Boston |
East | New York |
West | Los Angeles |
West | San Diego |
# 基本查询 SELECT store_name FROM store_information #DISTINCT去除重复行 SELECT DISTINCT store_name FROM store_information #WHERE条件查询 SELECT store_name FROM store_information WHERE sales > 300 #AND/OR增加条件 SELECT store_name FROM store_information WHERE sales > 300 and sales < 1500 #IN指定查询值 SELECT store_name FROM store_information WHERE store_name IN ('Los Angeles', 'Boston') #BETWEEN指定查询范围 SELECT store_name FROM store_information WHERE sales BETWEEN 300 AND 700 #LIKE匹配 SELECT store_name FROM store_information WHERE store_name LIKE '%AN%' #store_name中含有AN的记录 #ORDER BY排序 SELECT store_name, sales FROM store_information ORDER BY 2 DESC #DESC/ASC降序/升序, 2指按照第二个参数(sales) #利用函数:AVG(平均),COUNT(计数),MAX(最大值) SELECT SUM(sales) FROM store_information SELECT COUNT(DISTINCT store_name) FROM store_information WHERE store_name is not NULL #GROUP BY分组 SELECT store_name, SUM(sales) FROM store_information GROUP BY store_name #HAVING对运算结果进行选择 SELECT store_name, SUM(sales) FROM store_information GROUP BY store_name HAVING SUM(sales) > 1500 #别名 SELECT store_name, SUM(sales) "Total Sales" FROM store_information GROUP BY store_name #结果一样,不过SUM(sales)被显示为Total Sales SELECT store_name, SUM(sales) TotalSales FROM store_information GROUP BY store_name #连接 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 #外部连接 #上面那个连接是需要两个表都有相同的内容才能显示,即内部连接(又称左连接: left join).要想列出某个表格中的所有资料,需要用外部连接: SELECT A1.store_name, SUM(A2.sales) SALES FROM geography A1, store_information A2 WHERE A1.store_name = A2.store_name(+) GROUP BY A1.store_name #oracle用+表示外部连接,mysql还不支持 #subquery SELECT SUM(sales) FROM store_information WHERE store_name IN (SELECT store_name FROM geography WHERE region_name = 'West') #相当于是嵌套 #UNION将两个SQL语句的合并起来 ## UNION要求两个SQL语句的字段相同,并且UNION只会显示不同的资料值(类似SELECT DISTINCT) SELECT store_name FROM store_information UNION SELECT store_name FROM geography SELECT store_name FROM store_information UNION ALL SELECT store_name FROM geography #UNION ALL列出每一笔符合条件的资料,无论资料值是否重复 #CONCAT()字段拼接 SELECT CONCAT(region_name, store_name) FROM geography WHERE store_name = 'Boston' #mysql语法,结果:'EastBoston' #SUBSTRING()字段裁剪 (mysql) SELECT SUBSTRING(region_name, 2,4) FROM geography #(下标从1开始),查出region_name的第2到第4个字母 #TRIM SELECT TRIM(' Sample ') #结果: 'Sample' SELECT LTRIM(' Sample ') #去除左边空格 SELECT RTRIM(' Sample ') #去除右边空格
2. 修改:
#建表 create table geography ( geographyid INT, region_name varchar(20), store_name varchar(20) ) #建视图 ##视图是虚拟表格,它是建立在表格之上的一个架构。而表格代表了实际存储的资料 CREATE VIEW V_REGION_SALES AS 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; SELECT * FROM V_REGION_SALES; #建索引 #建索引是为了加快查询,没有索引的表需要查询表格里所有的记录,有索引的先根据索引检索 CREATE INDEX IDX_STORE_NAME ON geography(store_name) #改变表格 # ADD: 增加 DROP: 删除 CHANGE: 改变名称 MODIFY: 改变种类 ALTER TABLE geography ADD zipcode char(6) ALTER TABLE geography CHANGE region_name regionname varchar(30) #改变名称,需要给出名称类型 ALTER TABLE geography MODIFY regionname varchar(20) #改变类型 ALTER TABLE geography DROP regionname #设置主键 #主键可以在建表时设置,也可以用ALTER TABLE设置 #设置为主键后,该值默认也会被设置为NOT NULL CREATE TABLE test ( testid int primary key, testdata varchar(20) ) CREATE TABLE test2 ( test2id int, test2data varchar(20), primary key (test2id) ) ALTER TABLE test3 ADD primary key (test3id) #外键 #法1 CREATE TABLE test1 ( test1id INT(11) primary key not null, test1data varchar(20) ) CREATE TABLE test2 ( test2id INT(11) primary key not null, fid INT(11) not null, test2data varchar(20), foreign key (fid) references test1(test1id) ) #法2 ALTER TABLE test2 ADD FOREIGN KEY (fid) REFERENCES test1(test1id) #删除表格 DROP TABLE test2 #删除表格后,此表格将不存在 #清楚表格内容 TRUNCATE TABLE geography #插值 INSERT INTO test1(test1id, test1data) VALUES(1,"testdata") #插入一条数据 INSERT INTO store_information(store_name, sales, date) SELECT store_name, sales, date FROM sales_information WHERE year(date) = 1998 #插入多条数据(从一个表里将数据都找出来然后插入另一个表里) #UPDATE记录 UPDATE test1 SET test1data = "message" WHERE test1id = 1 #DELETE记录 DELETE FROM test1 WHERE test1id = 1
相关文章推荐
- SQL基础语句总结
- SQL基础语句
- 精妙SQL语句,基础,提升,技巧
- SQL基础语句
- SQL 基础语句【表、约束、索引】
- sql管理基础语句
- 经典SQL语句大全之基础
- SQL基础:常用SQL语句详解
- SQL语句使用基础
- SQL基础查询语句(insert update delete)
- 基础SQL语句学习
- 数据库的基础增删改查SQL语句
- 15个初学者必看的基础SQL查询语句
- mysql使用基础 sql语句与数据完整性(二)
- 基础的 mysql sql 语句,简单篇,拿起就用
- SQL语句基础教程。
- MySQL/MariaDB基础及简单SQL语句
- 一条检验SQL基础的语句!
- SQL基础:常用SQL语句详解
- SQL基础---SQL UPDATE 语句