常用SQL语句
Posted hello,vicme!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用SQL语句相关的知识,希望对你有一定的参考价值。
写在前面
本文记录对表中数据的操作的基本SQL语句,以对数据库数据操作“增删改查”来覆盖复习SQL语句,对于数据库的创建、删除、和对表的创建、修改、删除不做记录,因为现在这个可以很高效方便的通过图形界面快速完成,所以本文仅仅记录一些数据操作的、逻辑性的数据操作SQL语句——数据的增、删、改、查,其中“查”为重难点,所以写在后面,详细记录。
建立一个简单的表来做实验 ,表中pers为person的简写,persId自动增长
增
增,即向数据表中插入数据或者说添加新的一条记录。
语句 :INSERT INTO ...
语法1:
INSERT INTO 表名称 VALUES (值1, 值2,....)
例子:
1 INSERT INTO person 2 VALUES (1,\'张华\',\'男\',\'阅读\')
对于这种不在表名后面写出字段(属性)的插入方式,需要在VALUES值中添加所有的字段,包括可null的字段和自动增长的id字段都要添加进去,来看反例:
- 不在values中添加可自动增长的persId:
1 INSERT INTO person 2 VALUES (\'小华\',\'男\',\'编程\')
- 不在values中添加可null字段
1 INSERT INTO person 2 VALUES (3\'小华\',\'男\')
语法2:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
例子
- 不添加ID(已经设置自增长)和不添加可null项,仅仅添加not null:
1 INSERT INTO person(persName) 2 VALUES (\'小华\')
这个没问题,避免了语法1中的不足,在开发中更为灵活,但是要注意,写入的值对应好相对的属性,避免一些由于类型相同而错位的问题。
语法3:
在values的值一次加入多组
1 insert into students 2 values (5,\'李白\',\'男\',18),(6,\'后羿\',\'男\',19),(7,\'周哥\',\'男\',22)
改
改,即对数据中已有数据的更新、修改。
语句:Update...SET...
语法
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
以下是例子,一张修改前的表如下
执行修改:
UPDATE person
SET persSex = \'男\',
persHobby = \'思考\'
WHERE persId = 4
修改结果:
删
删,即删除,删除数据库中不用的数据,具体的是删除整个表(这里不写)、删除某条记录。
语句:DELETE
语法
DELETE FROM 表名称 WHERE 列名称 = 值
以下是一个栗子:
删除前:
执行删除
1 DELETE FROM person 2 WHERE persId = 4
删除后:
查
查,即查询,通过一定条件限制,查询出符合要求的数据,查有很多技巧和用处,是重难点。
语句:SELECT
基本查询语句:
简单查询单个或多个属性:
SELECT 列名称 FROM 表名称
查询全部属性:
SELECT * FROM 表名称
基础查询
- 结果样式:order by排序 ASC:小到大,DESC:大到小;group by 分组、distinct去重
- 笛卡尔积:select * from table1,table2
- 模糊查询:like和 _ 和 %
- 统计处理:count()、avg()、sum()、max()、min()
- 条件限定:having 、where、in/not in和exists、between_and
- 属性、表重命名为新的属性、表:AS
- 运算符:> < = != or and not
- 查询某个属性并修改其值:select Freight + 10 as\' 运费\',name as\' 姓名\'将一个查询结果作为下一次查询的条件(例子:【查询1】 查询出雇佣日期比Margaret Peacock还晚的员工。(Employees)
-
1 select * 2 from Employees 3 where HireDate >( 4 select HireDate 5 from Employees 6 where FirstName = \'Margaret \' 7 AND LastName = \'Peacock\' 8 )
-
将查询结果存储为一张新表
1 CREATE table mytableone AS 2 SELECT * 3 FROM students, 4 (SELECT student,classes,score 5 FROM score_t 6 WHERE score > 80) as R1 7 WHERE students.id = R1.student
高级查询
集合操作
- 并:union、union all(保留重复行),R U S,和并两表,要求两表的属性类型相同
- 差(defference),except,R-S,得出的结果是R中有的S中没有的行
- 交:intersect,两表共有的
连接 join(笛卡尔积的简化)
- 内链接 join,有的平台用 inner join
- 左外链接 left [outer] join,
- 右链接 right join
- 全外链接 full join
除(覆盖)运算
以上是关于常用SQL语句的主要内容,如果未能解决你的问题,请参考以下文章