操作符 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字段.
别名是指定的表或列设定一个方便阅读的名字,通过使用 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别名。
如果想要查询到一个结果集,可能分别在不同的表中,这时候就要查询多个表。
格式: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操作符用于合并两个或多个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 语句中的列的顺序必须相同。
SQLNOT NULL 约束
NOTNULL 约束强制列不接受 NULL 值。NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新纪录或者更新记录。
格式:CREATETABLE 表名 (字段名 字段类型 NOT NULL) ;
举例:create table student (id int(10)not null);
说明:创建一个student表,并且里面有类型为int 长度为10,值不允许为空的id字段。
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约束时,其约束名是字段的名字。
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;
一个表中的 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;
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;
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;
什么是视图?
在 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