常用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字段都要添加进去,来看反例:

  1. 不在values中添加可自动增长的persId:
    1 INSERT  INTO person
    2 VALUES (\'小华\',\'\',\'编程\')

     

     

  2. 不在values中添加可null字段
    1 INSERT  INTO person
    2 VALUES (3\'小华\',\'\')

     

     

语法2:

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

 例子

  1. 不添加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 表名称

 

基础查询

  1. 结果样式:order by排序 ASC:小到大,DESC:大到小;group by 分组、distinct去重
  2. 笛卡尔积:select * from table1,table2
  3. 模糊查询:like_ %
  4. 统计处理:count()avg()sum()max()min()
  5. 条件限定:having 、where、in/not in和exists、between_and
  6. 属性、表重命名为新的属性、表:AS
  7. 运算符:> < = != or and not
  8. 查询某个属性并修改其值:select  Freight + 10 as\' 运费\',name as\' 姓名\'将一个查询结果作为下一次查询的条件(例子:【查询1】 查询出雇佣日期比Margaret Peacock还晚的员工。(Employees)
  9. 1 select  *
    2 from Employees
    3 where HireDate >(
    4     select HireDate
    5     from Employees
    6     where FirstName = \'Margaret \'
    7             AND LastName = \'Peacock\'
    8 )
  10. 将查询结果存储为一张新表

    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

高级查询

集合操作

  1. 并:union、union all(保留重复行),R U S,和并两表,要求两表的属性类型相同
  2. defference),exceptR-S,得出的结果是R中有的S中没有的行
  3. 交:intersect,两表共有的

连接 join(笛卡尔积的简化)

  1. 内链接 join,有的平台用 inner join
  2. 左外链接 left  [outer] join,
  3. 右链接 right join
  4. 全外链接 full join

除(覆盖)运算

以上是关于常用SQL语句的主要内容,如果未能解决你的问题,请参考以下文章

面试常用的代码片段

Mybatis动态sql技术

sql语句中嵌套时候用in 和=有啥区别

sql语句 嵌套查询 排序

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段

[AndroidStudio]_[初级]_[配置自动完成的代码片段]