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 表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、返回结果集的字段名,是用第一个查询语句的字段名来命名(
排序)。
*例子:(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(默认值)
例: CREATE TABLE 表名 (字段名 字段类型 NOT NULL) ;
PS:
CREATE TABLE student (id int(10) NOT NULL);
UNIQUE约束(唯一性)
UNIQUE约束,用来标识这个字段的数据的唯一性。
例(建表时): CREATE TABLE Persons (id int(10) NOT NULL,name varchar(50),UNIQUE (id));
单列
ALTER TABLE 表名 ADD UNIQUE(列) ;
多列
ALTER TABLE 表名 ADD CONSTRAINT UNIQUE约束名 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 表名 ADD FOREIGN KEY(列) REFERENCES 表2(表2的列) ;
CHECK关键字
设定列的值的范围。
添加的方法:
CREATE TABLE 表名 (字段名 字段类型,...,CHECK (字段名0>=值)) ;
追加的方法:
单列:ALTER TABLE 表名 ADD CHECK(列>=值);
多列:ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK(列>=值 AND 列<=值) ;
删除约束的方法:ALTER TABLE 表名 DROP CHECK 约束名 ;
1.我们MySQL会给这些列自动加一个默认值为NULL的默认值。
2.我们如果追加默认值会覆盖掉前面设定的默认值。
3.如果删除默认值,他是不会自动回到default NULL。而是没有了默认值,没有默认值那么我们插入数据的时候就一定需要插入这一列的数据,这个数据也可以是NULL。
添加的方法:
CREATE TABLE 表名 (字段名 字段类型 DEFAULT 默认值,字段名 字段类型...)
追加的方法:
ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值 ;
删除约束的方法:
ALTER TABLE 表名 ALTER 列名 DROP DEFAULT ;
1.暴露部分数据给外部。
2.视图主要用于读取数据,因为插入数据要受到原来的表的限定。
3.视图实质上并不是一张表,尽管看起来一模一样,但是数据实质上市存在原来的表中的。
4.简化我们某些较为复杂的业务逻辑。
删除视图:DROP VIEW 视图名 ;
获取两个值之间的数据,使用如下语句:
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 ;
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(非空)
例: 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(列名...) ;
向已存在的表中添加唯一约束时,需要注意这一列中是否已经有重复值,如果已经有重复值,将无法添加唯一约束。
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 视图名 ;