SQL基础语法和举例(二)

7.BETWEEN操作符

    操作符 BETWEEN…AND…操作符在WHERE子句中使用,作用是选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

    格式:select 字段名1,字段名2 from 表名 where 字段名 between 字段值1 and 字段值2;

   例:select id,name from student where id between 904 and 906;

    表示的是查询表中id为904 到906中的id,name字段.

8.别名

   别名是指定的表或列设定一个方便阅读的名字,通过使用 SQL,可以为列名称和表名称指定别名(Alias)。只能起到显示作用,不修改表中的字段名。

   格式:SELECT  表1的别名.列1AS 列1的别名, 表2的别名.列3 AS 列3的别名 FROM 表1 AS 表1的别名,表2 AS 表2的别名 ;

   举例:select id asx_id , name as x_name from student;

   说明:查询出student表中id,name两个字段并且取了x_id,x_name别名。 

9.查询多个表

如果想要查询到一个结果集,可能分别在不同的表中,这时候就要查询多个表。

格式:SELE CT * FROM 表1,表2 WHERE 表1.id = 表2.id;

举例:selectstudent.name ,score.cource from student,score where student.id=score.id;


多个表之间的联系就需要用到JOIN这个关键字。JOIN关键字有如下几种用法:

 

a.INNERJOIN 关键字

    格式:SELECT * FROM 表1 [INNER] JOIN  表2 ON 表1.id = 表2.id ;

       举例:selectstudent.name ,score.cource from student inner join score onstudent.id=score.id;

b.Leftjoin 关键字

    格式:SELECT* FROM 左表 LEFTJOIN  右表 ON 左表.id = 右表.id ;

       举例:selectstudent.id ,score.name from student left join score on student.id=score.id;

 

说明:1.左表(student)所有数据都要返回到结果集中。

      2.如果右表(score)无法匹配的左表的数据,右表用NULL进行填充。

c.rightjoin 关键字

     格式:SELECT * FROM 左表 RIGHT JOIN  右表 ON 左表.id = 右表.id ;

举例:selectstudent.id ,score.name from student right join score on student.id=score.id;

说明:1.右表(score)所有行的数据都要返回,不管是否匹配。

     2.右表中无法再左表匹配的数据,左表(student)用NULL填充。

注:查询出student表中的name和score表中的cource字段。需要注意的是要查询的字段前面要跟上所属的表的名字,on后面可以看成一个表达式,作为两个表的的连接,要两个表中的分别两个字段值相等才可以对两个表进行查询。

d.fulljoin 关键字

         格式SELECT* FROM 表1 FULLJOIN  表2 ON 表1.id = 表2.id ;

举例:selectstudent.id ,score.name from student full join score on student.id=score.id;

说明:1.只要其中一个表中存在匹配,就返回行。

UNION 和UNION ALL 操作符

UNION操作符用于合并两个或多个SELECT 语句的结果集。

    格式:

    (SELECT 列FROM 表)

UNION [ALL]

   (SELECT 列FROM 表)

    举例:(select id,name fromstudent id between 901 and 903 order by desc limit 10)

   Union [all]

   (select id,name fromstudent id between 905 and 907 );

   要求:1.两次查询的列数必须一样,类型相似。

          2.union会自动去掉重复行,不想去掉就在UNION后面加上ALL。

          3.如果句子中没有order by,limit,可以不使用(),order  by一定要和limit一起使用,否则无意义。

注:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

 

四. SQL约束

   SQLNOT NULL 约束

NOTNULL 约束强制列不接受 NULL 值。NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新纪录或者更新记录。

 格式:CREATETABLE 表名 (字段名  字段类型 NOT NULL) ;

 举例:create table student (id int(10)not null);

说明:创建一个student表,并且里面有类型为int 长度为10,值不允许为空的id字段。

SQL UNIQUE 约束

UNIQUE 约束唯一标识数据库表中的每条记录。UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

创建unique约束

格式:CREATETABLE 表名(字段名 字段类型(字段大小),…UNIQUE (字段名));

举例:CREATE TABLEstudent(id int(10) NOT NULL,

name varchar(50)

        UNIQUE(id) );

说明:创建一个student表,里面有类型为int 长度为10,值不允许为空的id字段和类型为varchar长度为50的name字段,并且将id设为唯一值,不允许有重复。

追加一条unique约束

在已经创建好的表中为字段设置唯一值。

格式:ALTER TABLE 表名 ADD UNIQUE(列) ;

举例:alter tablestudent add unique(name);

追加多条unique约束

格式:ALTER TABLE 表名 ADD CONSTRAINT 约束名UNIQUE(字段1,字段2) ;

举例:alter tablestudent add constraint id_name_unique unique (id,name);

说明:将student表中的id和name字段设为唯一值。注意在设置的字段中是否已经有重复值,如果已经有重复值,将无法添加唯一约束。

撤销unique约束

格式:ALTER TABLE 表名 DROP INDEX 约束名;

举例:alter tablestudent drop index id_name_unique(name);

说明:在撤销一条unique约束时,其约束名是字段的名字。

SQL PRIMARY KEY 约束

PRIMARYKEY 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表应该都一个主键,并且每个表只能有一个主键。

PRIMARY KEY 主键的创建:

    格式:CREATETABLE 表名(字段名1 字段类型(字段大小),…

  PRIMARY KEY (字段名) );

   举例:下面的 SQL 在 "student" 表创建时对id字段创建 PRIMARY KEY 约束:

   CREATE TABLE student(

   id int NOT NULL,

    name VARCHAR(20),

   PRIMARY KEY (id)

   )

PRIMARY KEY 主键的追加:

格式:ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

举例:对name字段追加 PRIMARYKEY 约束

Alter table student addprimary key(name);

如果想要对多个字段追加主键:

格式:ALTERTABLE 表名 ADDCONSTRAINT 主键名 PRIMARY KEY(字段名1,字段名2);

举例:alter table student addconstraint id_name_key primary key(id,name);

撤销PRIMARY KEY 约束:

格式:ALTER TABLE 表名DROP PRIMARY KEY;

SQL FOREIGN KEY 约束

一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

创建FOREIGN KEY约束:

格式:CREATE TABLE 表名(字段1 字段类型,字段2 字段类型,FOREIGN KEY(字段2) REFERENCES  表2(表2的字段))

举例:将student表中的id作为主键,创建一个student2表的id作为外键

Create table student2(id int(10) ,

name varchar(20),

foreign key(id) refrences student(id)

);

追加FOREIGN KEY约束:

格式:ALTER TABLE 表名 ADD CONSTRAINT 外键约束名FOREIGN KEY(列) REFERENCES 表2(表2的列) ;

举例:将student表中的id作为主键,追加一个student2表的id作为外键

Alter table student2 add constraint id_foreign  foreignkey(id) refrences student(id);

撤销FOREIGN KEY约束:

格式:ALTER TABLE 表名 DROP FOREIGN KEY  外键约束名 ;

举例:撤销student2表的id字段的外键约束

alter table student2 drop foreign key id_foreign;

SQL CHECK 约束

CHECK约束用于限制列中的值的范围。

如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

CHECK 约束创建:

        格式:CREATETABLE 表名 (字段名 字段类型,...,CHECK (字段名0>=值));

        举例:在创建student表的同时,对id字段进行check约束>0

            Create table student(id int(10),

name varchar(20),

check(id>0));

CHECK 约束追加:

        单列:ALTER TABLE 表名 ADD CHECK(列>=值);

        举例:在已经创建好的student表中,对id的字段值大于0进行check约束

                Altertable student add check(id>0);

        多列:ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK(列>=值 AND 列<=值)

        举例:在已经创建好的student表中,对id的字段值大于0并且gread小于100进行check约束

                Alterteble student add constraint id_name_check check(id>0 and gread<100);

撤销CHECK 约束:

        格式:ALTER TABLE 表名 DROP CHECK 约束名 ;

        举例:撤销对student表的check约束

        Alter table student drop checkid_name_check;

 SQL DEFAULT 约束

DEFAULT约束用于向列中插入默认值。

如果没有规定其他的值,那么会将默认值添加到所有的新纪录。

        1.MySQL会给这些列自动加一个默认值为NULL的默认值。

        2.如果追加默认值会覆盖掉前面设定的默认值。

        3.如果删除默认值,他是不会自动回到default NULL。而是没有了默认值,没有默认值那么我们插入数据的时候就一定需要插入这一列的数据,这个数据也可以是NULL。

默认值添加:

        格式:CREATETABLE 表名 (字段名 字段类型DEFAULT 默认值,字段名 字段类型...)

举例:在创建student表时,对sex 字段设置默认值为“男”

Create table student(id int(10),sex char(10) default ‘男’,);

 

追加默认值约束:

        格式:ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值 ;

举例:在已有的student表中为sex字段添加默认值为‘男’

Alter table student alter sex set default ‘男’;

撤销默认值约束

        格式:ALTER TABLE 表名 ALTER 列名 DROP DEFAULT  ;

举例:撤销student表中id的默认值

Alter table student alter id drop default;

VIEW视图

什么是视图?

在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。

视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。

注:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。

创建视图:

格式:CREATE VIEW 视图名 AS SELECT 字段名 FROM 表名 WHERE 表达式;

举例:create view stu_view as (select id,name from student where sex=’男’);

视图的查询:

格式:SELECT 字段名 FROM 视图名WHERE 表达式;

举例:select  name from stu_viewwhere id=’902’;

撤销视图:

 格式:SQL DROP VIEW Syntax DROP VIEW view_name

 

 

你可能感兴趣的:(sql,数据库,mysql,select)