您的位置:首页 > 博客中心 > 数据库 >

SQL基本语法介绍

时间:2022-03-14 00:22

一、数据定义语言(DDL):定义数据库中的数据对象

建立数据库操作: 

  语法:create  database   数据库名

建立表操作:   语法:create table 表名(列名1  列类型  [<列的完整性约束>],列名2  列类型  [<列的完整性约束>],   ... ...   ); 显示表结构操作:   语法:describe  表名;或 desc     表名; 删除表操作:

  语法:drop  table  [if exists]  tab_name [,tab_name]...

删除数据库操作:

  语法:drop  database [if exists] db_name

更改表结构操作

  语法:alter table 表名 action; 说明action 可以是如下语句:     add 列名 建表语句 [first | after 列名]

     可以为表添加一列,如果没指定first或者after,则在列尾添加一列,否则在指定列添加新列

    add primary key (列名)

     为表添加一个主键,如果主键已经存在,则出现错误

    add foreign key(列名) references 表名(列名)
     为表添加一个外键     alter 列名 set default 默认值

      可以更改指定列默认值

    change 旧列名 新列名 <建表语句> [first | after 列名]

       可以更改列类型和列名称,如果原列的名字和新列的名字相同

    modify 列名 <建表语句> [first | after 列名] 和change的作用相同     drop 列名     //可以删除一列     drop primary key      //可以删除主键     engine 类型名       //可以改变表类型     rename as 新表名     //可以将表名更改 二、数据操纵语言(DML):操纵数据实现对数据库的基本操作(查询、插入、删除和修改) 插入记录操作

  INSERT  [INTO] <表名> [列名] VALUES <值列表>

  注意事项1:每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验;

  注意事项2:每个数据值的数据类型、精度和小数位数必须与相应的列匹配;

  注意事项3:如果在设计表的时候就指定了某列不允许为空,则必须插入数据;

  注意事项4:具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值

插入多行数据

  INSERT INTO <表名>(列名)VALUES(<列名值>), (<列名值>), (<列名值>)……

  INSERT INTO <表名>(列名)SELECT <列名>FROM <源表名>

  例:INSERT INTO   TongXunLu (‘姓名‘,‘地址‘,‘电子邮件‘)   SELECT   SName,SAddress,SEmail    FROM   Students

更改记录操作

  UPDATE <表名> SET <列名 = 更新值>  [WHERE <更新条件>]

删除记录操作   DELETE FROM <表名> [WHERE <删除条件>] 查询记录操作   from子句:指定查询数据的表   where子句:查询数据的过滤条件   group by子句:对匹配where子句的查询结果进行分组   having子句:对分组后的结果进行条件限制   order by子句:对查询结果结果进行排序,后面跟desc降序或asc升序(默认)。       limit子句:对查询的显示结果限制数目   procedure子句:查询存储过程返回的结果集数据 在WHERE子句中使用谓词 :

  BETWEEN    AND    :在两数之间

  NOT   BETWEEN    AND :不在两数之间

  IN <值表>  :是否在特定的集合里(枚举)

  NOT IN <值表> :与上面相反

  LIKE  :是否匹配于一个模式

  IS NULL(为空的)或 IS NOT NULL(不为空的)REGEXP : 检查一个值是否匹配一个常规表达式。

多表查询—分类      内连接(INNER JOIN)   外连接

    ——左外联结   (LEFT JOIN)

    ——右外联结   (RIGHT JOIN)

  多表查询—内连接

    SELECT Students.SName, Sc.CourseID, Sc.Grade

    FROM   Students,Sc

    WHERE  Students.SNo = Sc.StudentID

  多表查询—三表内连接

    SELECT S.SName AS 姓名, CS.CName AS 课程, C.Grade AS 成绩

    FROM Students AS S

    INNER JOIN Sc AS C ON (S.SCode = C.StudentID)

    INNER JOIN Course AS CS ON (CS.CourseID = C.CourseID)

  多表查询—左外连接

    SELECT   S.SName,C.CourseID,C.Grade

    From   Students AS S

    LEFT JOIN   Sc AS C

    ON   C.StudentID = S.SNo

  多表查询—右外连接    

    SELECT Titles.Title_id, Titles.Title, Publishers.Pub_name

    FROM titles

    RIGHT OUTER JOIN Publishers

    ON Titles.Pub_id = Publishers.Pub_id

 

热门排行

今日推荐

热门手游