sql基本语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql基本语句相关的知识,希望对你有一定的参考价值。

由于唯一的一个粉丝的要求,加上自身的反省,今天复习一下sql语言(用的是是mysql)

【】表示可无()表示必须有

数据库与表的建立

  1. 建立数据库  create database 数据库名称
  2. 使用数据库 use 数据库名称
  3. 建立表 create table 表名 {列名 数据类型 完整性约束条件}
  4. 完整性约束条件包括主键primary key、非空not null、默认值default、唯一性unqiue、外键foreign key、检查check。
  5. 约束性条件还可以通过constraint 列名 约束条件进行定义
  6. 数据类型主要包括整数类型、小数类型、时间、字符串类型。复合类型(enum、set)、二进制类型。
  7. 其他选项设置在建立表后面进行(1)存储引擎的设置engine=存储引擎(InnoDB  或者 MyISAM)(2)字符集设置 default charset=字符集类型
  8. 设置自增型字段 字段名 数据类型 auto_increment            建议设置成为主键否者可能会建表失败

数据库表的操作

  1. 复制表结构 create table 表名 like 源表 、create table 新表名 select *from 源表
  2. 查看表的结构 desc 表名 或者 describe 表名 或者 show create table 表名 (查询结果比前两个更详细)
  3. 删除表中字段 alter table 表名 drop 字段名
  4. 添加新字段 alter table 表名 add 新字段名 数据类型 【约束条件】 【first|after 旧字段名】
  5. 修改字段名或者数据类型 alter table 表名 change 旧字段名 新字段名 数据类型  、仅对表中的数据类型进行修改 alter table 表名 modify 字段名 数据类型
  6. 修改约束条件 添加约束条件 alter table 表名 add constraint 约束名 约束类型 (字段名)
  7. 删除约束条件  主键 alter table 表名 drop primary key、外键 alter table 表名 drop foreign key 、删除唯一约束 只需删除该字段唯一索引 alter table 表名 drop index 唯一约束名
  8. 修改存储引擎 alter table 表名 engine= 新的存储引擎、修改表的字符集 alter table 表名default charset =新的字符集 、自增字段的初始值 alter table 表名auto_increment=新的初始值、压缩类型alter table 表名 pack_keys=新的压缩类型(pack_key只对MyISAM有效)
  9. 修改表名 rename table 表名 to 新表名等效于 alter table 旧表名 rename 新表名
  10. 删除表 drop table 表名

数据库表内记录的操作

  1. 使用insert into 表名 values (值列表) 向自增型 auto_increment字段插入数据是建议插入null
  2. 未完待续

数据库表的查询

        select [all|distinct不显示重复字段] 目标表达式星号或者列号用逗号隔开两个表达式 ,【目标表达式】/*可以通过表达式空格别名进行表的别名*/

          from 表名或者视图名,【表名或者视图名】/*可以通过表达式空格别名进行表的别名*/

        where 条件表达式

                           [group by 列名 【having <条件表达式>】]

                           [order by 列名 【asc|desc】]

常用的查询条件

比较

=,>,<,>=,<=,!=,<>,!>,!<;NOT 比较

确定范围 between(条件)and(条件);not 前边的表达
确定集合 in (条件);not
字符匹配 like (条件);not
空值

is null;not is null

多重条件 and, or, not

 

 

 

 

 

 

 

like ‘刘%‘通配符%可以代替任何长度字符、_字符可以代替单个字符 当字符中有这两个符号时可以通过 escape‘换码字符‘ 列如 like ‘db\_design‘ escape‘\‘;把_转义为真正的_

查询空值不能用=

子句查询

  1. order by对查询结果按照一个或多个属性的升序(asc)或者降序(desc)
  2. 聚集函数
    1. count(*)统计元组个数
    2. count([distinct|all] <列名>)
    3. sum([distinct|all] <列名>)
    4. avg([distinct|all] <列名>)
    5. max([distinct|all] <列名>)
    6. min([distinct|all] <列名>)
  3. group by 对查询结果按照一列或者多列的值进行分组 值相等的为一列
  4. where 函数中不能用聚集函数所以应该
    select sno avg(grade)
    form sc
    where avg(grade)>=90
    group by sno 是错误的
    应该是
    select sno avg(grade)
    form group by sno
    having avg(grade)>=90

     

连接查询

  1. 【<表名1>.】<列名1>比较运算符【表名2.】<列名2>当比较运算符为=时称为等值连接 其他为非等值连接
  2. 用谓语连接【<表名1>.】<列名1>between【表名2.】<列名2>and【表名2.】<列名3>连接谓语中的列名称为连接字段。连接条件中的各连接字段类型必须是可比的
  3. 自身连接自身连接需要给表取两个别名列如
    select first.cno,second.cpno
    from course first,course second
    where first.cpno=second.cno;
  4. 外链接 外链接关键字为from 表名 left outer join sc on(连接)        左表连接右表连接把left改为right
  5. 多表连接 再多个表之间进行连接

嵌套查询

  1. 一个select-from-where 为一个查询块可以嵌套在另一个where 或者having
    select-from-where
                     -(select-from-where)
    1. 带in 的子查询
    2. 带比较运算符的子查询
    3. 带有any或者all的子查询
    4. 带有exist的子查询存在返回true不存在返回false
    5. 集合查询  并(union)交(intersect)差(except)

(待续...)


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

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段

动态SQL基础概念复习(Javaweb作业5)

Mybatis超强大的动态SQL大全

mybatis学习日志二

使用 with as 优化SQL

Mybatis超强大的动态SQL大全