SQL基础语,(二)

【1】BETWEEN操作符:

BETWEEN 操作符用于选取介于两个值之间的数据范围内的值,这些值可以是数值、文本或者日期。

(1)查询出条件列中值在值1与值2之间的所有数据的指定列的值:SELECT 列 FROM 表名 WHERE 条件列 BETWEEN 值1 AND 值2:

例:mysql> select grade from score where id between 901 and 905;
+-------+
| grade |
+-------+
|    98 |
|    80 |
|    65 |
|    88 |
|    95 |
|    70 |
|    92 |
|    94 |
+-------+;

(2)如果需要的是值1与值2以外的,我们可以在BETWEEN前加上NOT:SELECT 列 FROM 表名 WHERE 条件列 NOT BETWEEN 值1 AND 值2 ;

例:mysql> select name from student where id not between 901 and 904;
+------+
| name |
+------+
| 王五 |
| 王六 |
+------+


【2】Alias(别名): 定义:为我们指定的表或列设定一个方便阅读的名字。

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

例:mysql> select a.id as a_id,b.grade as b_grade from student as a,score as b;
+------+---------+
| a_id | b_grade |
+------+---------+
|  901 |      98 |
|  902 |      98 |
|  903 |      98 |
|  904 |      98 |
|  905 |      98 |
|  906 |      98 |
|  901 |      80 |
|  902 |      80 |
|  903 |      80 |
|  904 |      80 |
|  905 |      80 |
|  906 |      80 |......

【3】同时查询多个表:
      有时候我们需要查询的值可能存在同一个表中,而我们只能有一个结果集,那么我们就可以同时查询多个表。

SELECT 表1.列1,表2.列1 FROM 表1,表2... ;

例:mysql> select student.id,score.grade from student,score;
+------+-------+
| id   | grade |
+------+-------+
|  901 |    98 |
|  902 |    98 |
|  903 |    98 |
|  904 |    98 |
|  905 |    98 |
|  906 |    98 |
|  901 |    80 |
|  902 |    80 |
|  903 |    80 |
|  904 |    80 |
|  905 |    80 |
|  906 |    80 |
|  901 |    65 |
|  902 |    65 |
|  903 |    65 |
|  904 |    65 |,,,,,,

【4】链接(JOINS)

(1)JOIN:通常我们一个软件的数据库中,不会只有一张表,我们要处理繁多的零散的数据,我们将数据保存于数据库中,我们使用表将数据们有序地存在一起,不过一张表显然是不够我们使用的。正常情况下,我们的软件的数据库将维护很多张表,而表与表之间又有这一定联系,这个时候我们将会在获取数据时,同时访问多张表,并将数据返回到一个结果集上,那么这个时候,我们可以使用两个表中相关联的字段的值,进行筛选返回的数据。
格式:SELECT * FROM 表1,表2 WHERE 表1.id = 表2.id ;

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

例:mysql> select * from student inner join score on student.id = score.id;
+------+--------+------+------------+------------+--------------+------+--------
+-------+
| id   | name   | sex  | birth      | department | address      | id   | cource
| grade |
+------+--------+------+------------+------------+--------------+------+--------
+-------+
|  901 | 张老大 | 男   | 1985-07-22 | 计算机     | 北京市海淀区 |  901 | 计算机
|    98 |
|  901 | 张老大 | 男   | 1985-07-22 | 计算机     | 北京市海淀区 |  901 | 英语
|    80 |
|  902 | 李二狗 | 男   | 1986-01-11 | 中文系     | 北京市昌平区 |  902 | 计算机
|    65 |
|  902 | 李二狗 | 男   | 1986-01-11 | 中文系     | 北京市昌平区 |  902 | 中文
|    88 |
|  903 | 张三   | 女   | 1990-02-27 | 中文系     | 湖南省永州市 |  903 | 中文
|    95 |
|  904 | 李四   | 男   | 1990-11-09 | 英语系     | 辽宁省阜新市 |  904 | 计算机
|    70 |
|  904 | 李四   | 男   | 1990-11-09 | 英语系     | 辽宁省阜新市 |  904 | 英语
|    92 |
|  905 | 王五   | 女   | 1991-01-19 | 英语系     | 福建省厦门市 |  905 | 英语
|    94 |
|  906 | 王六   | 男   | 1988-06-23 | 计算机     | 湖南省衡阳市 |  906 | 计算机
|    90 |
|  906 | 王六   | 男   | 1988-06-23 | 计算机     | 湖南省衡阳市 |  906 | 英语
|    85 |

(3)LEFT JOIN:SELECT * FROM 左表 LEFT JOIN 右表 ON 左表.id = 右表.id ;即使右表中没有匹配,也从左表返回所有的行。(左表所有数据都要返回到结果集中;如果右表无法匹配的左表的数据,右表用NULL进行配对。)

例:l> select * from student left join score on student.id=score.id;
---+--------+------+------------+------------+--------------+------+--------
----+
   | name   | sex  | birth      | department | address      | id   | cource
ade |
---+--------+------+------------+------------+--------------+------+--------
----+
01 | 张老大 | 男   | 1985-07-22 | 计算机     | 北京市海淀区 |  901 | 计算机
 98 |
01 | 张老大 | 男   | 1985-07-22 | 计算机     | 北京市海淀区 |  901 | 英语
 80 |
02 | 李二狗 | 男   | 1986-01-11 | 中文系     | 北京市昌平区 |  902 | 计算机
 65 |
02 | 李二狗 | 男   | 1986-01-11 | 中文系     | 北京市昌平区 |  902 | 中文
 88 |
03 | 张三   | 女   | 1990-02-27 | 中文系     | 湖南省永州市 |  903 | 中文
 95 |
04 | 李四   | 男   | 1990-11-09 | 英语系     | 辽宁省阜新市 |  904 | 计算机
 70 |
04 | 李四   | 男   | 1990-11-09 | 英语系     | 辽宁省阜新市 |  904 | 英语
 92 |
05 | 王五   | 女   | 1991-01-19 | 英语系     | 福建省厦门市 |  905 | 英语
 94 |
06 | 王六   | 男   | 1988-06-23 | 计算机     | 湖南省衡阳市 |  906 | 计算机
 90 |
06 | 王六   | 男   | 1988-06-23 | 计算机     | 湖南省衡阳市 |  906 | 英语
 85 |
07 | 王小宝 | 男   | NULL       | NULL       | NULL         | NULL | NULL
ULL |

(4)RIGHT JOIN:SELECT * FROM 左表 RIGHT JOIN 右表 ON 左表.id = 右表.id ;即使左表中没有匹配,也从右表返回所有的行。(1.右表所有行的数据都要返回,不管是否匹配;2.右表中无法再左表匹配的数据,左表用NULL填充。

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

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

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

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

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

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

例子:    mysql> select id,name from student
    -> union
    -> select id,grade from score;

+------+--------+
| id   | name   |
+------+--------+
|  901 | 张老大 |
|  902 | 李二狗 |
|  903 | 张三   |
|  904 | 李四   |
|  905 | 王五   |
|  906 | 王六   |
|  907 | 王小宝 |
|  901 | 98     |
|  901 | 80     |
|  902 | 65     |
|  902 | 88     |
|  903 | 95     |
|  904 | 70     |
|  904 | 92     |
|  905 | 94     |
|  906 | 90     |
|  906 | 85     |
+------+--------+   

【6】SQL约束:SQL 约束用于规定表中的数据规则;如果存在违反约束的数据行为,行为会被约束终止;约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

分类:

(1)NOT NULL - 指示某列不能存储 NULL 值。也就是说如果不向此字段加入数据值,就无法插入新的数据。

格式:CREATE TABLE 表名 (字段名 字段类型 NOT NULL;

例子: mysql> create table teacher(id int not null,name vachar(10));

mysql> desc teacher;

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   |     | NULL    |       |
| name  | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

(2)UNIQUE约束:UNIQUE约束,用来标识这个字段的数据的唯一性。说白了就是防止重复。
例: CREATE TABLE Persons (
id int(10) NOT NULL,
name varchar(50)
UNIQUE (id)
);

(3)追加UNIQUE约束:UNIQUE约束还能使用ALTER TABLE语句加入表中,一个表中可以有多个UNIQUE指定的列:ALTER TABLE 表名 ADDUNIQUE(列) ;向已存在的表中添加唯一约束时,需要注意这一列中是否已经有重复值,如果已经有重复值,将无法添加唯一约束。

(4)PRIMARY KEY:主键,用于约束唯一标识数据库表中的每条记录。

要求:

1.主键必须包含唯一的值。
2.主键不能包含NULL值
3.每个表只能有一个主键。

例子:PRIMARY KEY 主键的创建:
CREATE TABLE Person (
id int NOT NULL,
name VARCHAR(20),
PRIMARY KEY (id)

追加PRIMARY KEY约束
PRIMARY KEYE约束还能使用ALTER TABLE语句加入表中:
ALTER TABLE 表名 ADD PRIMARY KEY(列) ;
删除主键约束:
ALTER TABLE 表名 DROP PRIMARY KEY ;

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

追加FOREIGN约束

FOREIGN约束还能使用ALTERTABLE语句加入表中,一个表中可以有多个FOREIGN指定的列:
ALTERTABLE 表名 ADD FOREIGN KEY(列) REFERENCES 表2(表2的列) ;

删除FOREIGN约束,需要外键约束(CONSTRAINT)
ALTERTABLE 表名 DROP FOREIGN KEY 外键约束 ;





















  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值