SQL精编3

BETWEEN关键字
获取两个值之间的数据,使用如下语句:

    SELECT * FROM 表名 WHERE 条件列 BETWEEN 值1 AND 值2 ;

需要值1与值2以外:
    SELECT * FROM 表名 WHERE 条件列 NOT BETWEEN 值1 AND 值2 ;

PS:SELECT * FROM Persons
   WHERE LastName
   BETWEEN 'Adams' AND 'Carter'


Alias(别名)使用格式:表名 AS 表的别名,列名 AS 列的别名。


同时查询多个表
     使用格式:SELECT  表1的别名.列1 AS 列1的别名, 表2的别名.列3 AS 列3的别名 FROM 表1 AS 表1的别名, 表2 AS 表2的别名 ;


JOIN关键字

使用两个表中相关联的字段的值,进行筛选返回的数据:

SELECT * FROM 表1,表2 WHERE 表1.id = 表2.id ;

当然我们还可以使用JOIN关键字,JOIN关键字有如下几种用法:


 JOIN:        如果表中有至少一个匹配,则返回行
     SELECT * FROM 表1 [INNER] JOIN  表2 ON 表1.id = 表2.id ;

 LEFT  JOIN:  即使右表中没有匹配,也从左表返回所有的行
     SELECT * FROM 左表 LEFT JOIN  右表 ON 左表.id = 右表.id ; 

RIGHT JOIN:  即使左表中没有匹配,也从右表返回所有的行

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


 FULL  JOIN:  只要其中一个表中存在匹配,就返回行
    SELECT * FROM 表1 FULL JOIN  表2 ON 表1.id = 表2.id ;
 


UNION关键字

UNION关键字,联合,用于合并两个或多个SELECT语句的结果集。

格式:    
(SELECT 列 FROM 表)
           
UNION [ALL] 

(SELECT 列 FROM 表)
PS:
   (SELECT id FROM student WHERE id BETWE 
EN'901'ADD'904'ORDER BY id LIMIT 10)             
    UNION  
   (SELECT id FROM student WHERE id BETW EN'905'ADD'907' ORDER 
BY id DESC LIMIT 10) ;                          


要求:1、两次查询的列数必须一样,类型相似。
   
      2、union会自动去掉重复行,想去掉就在UNION后面加上ALL。
(UNION ALL)结果不唯一。
           
      3、如果句子中没有(order by,limit),可以不使用()。
      
     *4、在联合语句的查询子句中如果要使用ORDER BY进行排序,那么

必须跟上LIMIT限定,否则ORDER BY无用。
          
      5、返回结果集的字段名,是用第一个查询语句的字段名来命名(
排序)。 

  

    6、用于将两个查询逻辑完全相反的结果集合并到一起。


*例子:(SELECT id AS hehe FROM student ORDER BY id LIMIT 10)
             UNION     
               (SELECT birth  FROM student DESC id LIMIT 10)
       ORDER BY hehe;
                                          
SQL约束

SQL中的几种约束:
NOT NULL(非空)        UNIQUE(唯一性)
 
 PRIMARY KEY (主键) FOREIGN KEY(外键)

 CHECK (值限定) DEFAULT(默认值)


NOT NULL(非空)


NOT NULL约束该字段不能接受NULL值,不向此字段加入数据值,就无法插入新的数据。


     例:  CREATE TABLE 表名 (字段名  字段类型 NOT NULL) ;  
     
PS:
   CREATE TABLE student (id int(10) NOT NULL);


(SHOW CREATE TABLE text;):查询表的基本信息语句



UNIQUE约束(唯一性)
 
UNIQUE约束,用来标识这个字段的数据的唯一性。
    例(建表时): CREATE TABLE Persons (id int(10) NOT NULL,name varchar(50),UNIQUE (id));   


使用ALTER TABLE语句加入表中,一个表中可以有多个UNIQUE指定的列:


    单列
 ALTER TABLE 表名 ADD UNIQUE(列) ;
      
    多列  
ALTER TABLE 表名 ADD CONSTRAINT  UNIQUE约束名 UNIQUE(列名...) ;

    向已存在的表中添加唯一约束时,需要注意这一列中是否已经有重复值,如果已经有重复值,将无法添加唯一约束。


删除UNIQUE约束  UNIQUE约束:ALTER TABLE 表名 DROP INDEX  UNIQUE约束名
        PS:   ALTER TABLE student DROP INDEX  id;
(删除一列约束)



PRIMARY KEY(主键)

主键,用于约束唯一标识数据库表中的每条记录。

要求:
1.主键必须包含唯一的值(不能重复)。

        2.主键不能包含NULL值(不能不填(第一次可以不填,会自动补默认值))。

        3.每个表只能有一个主键。

    PRIMARY KEY 主键的创建(建表时):

                CREATE TABLE Person (id int NOT NULL,name  VARCHAR(20),PRIMARY KEY (id));

使用ALTER TABLE语句加入表中:

ALTER TABLE 表名 ADD PRIMARY KEY(列) ;


删除主键约束:

             ALTER TABLE 表名 DROP PRIMARY KEY ; 

注意:当我们的要指定作为外键的字段中数据不符合外键约束时,外键添加不上。


FOREIGN KEY约束(外键)

外键约束,用来指向另一个表中的PRIMARY KEY。

    外键用来预防破坏表之间连接的动作。防止非法数据的插入因为外键必须是他指向的那个表的值之一。
例子:
CREATE TABLE 表名(字段1 字段类型,字段2 字段类型,FOREIGN KEY(字段1) REFERENCES  表2(表2的字段))


使用ALTER TABLE语句加入表中,一个表中可以有多个FOREIGN指定的列


    ALTER TABLE 表名 ADD FOREIGN KEY(列) REFERENCES 表2(表2的列) ;


删除FOREIGN约束,需要外键约束(CONSTRAINT):

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


CHECK关键字
设定列的值的范围。

  添加的方法:

    CREATE TABLE 表名 (字段名 字段类型,...,CHECK (字段名0>=值)) ;

  追加的方法:

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



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

删除约束的方法:ALTER TABLE 表名 DROP CHECK 约束名 ;


DEFAULT关键字

    设定的默认值。

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

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

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


添加的方法:  
CREATE TABLE 表名 (字段名 字段类型 DEFAULT 默认值,字段名 字段类型...)

追加的方法:
  ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值 ;

删除约束的方法:
ALTER TABLE 表名 ALTER 列名 DROP DEFAULT  ;


VIEW视图

约束用于限制介入表的数据的类型。
  1.暴露部分数据给外部。

  2.视图主要用于读取数据,因为插入数据要受到原来的表的限定。

  3.视图实质上并不是一张表,尽管看起来一模一样,但是数据实质上市存在原来的表中的。

  4.简化我们某些较为复杂的业务逻辑。


创建修改视图(一样):      CREATE VIEW 视图名  AS  SELECT STATEMENT(查询语句) ;


删除视图:DROP VIEW 视图名 ;
 















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值