本篇文章延续MYSQL学习笔记1继续记录MYSQL的相关知识。
1.between关键字
用来获取两个值之间的数据,可以是日期,数字,或者是文本。
SELECT id FROM student WHERE id BETWEEN 901 and 905;//获取id为901到905之间的数据,包括边界值
SELECT id FROM student WHERE id NOT BETWEEN 901 and 905;//获取id为901到905之外的数据,不包括边界值
2 .Alias别名
为列名或者表名设定一个方便阅读的名字
SELECT id AS st_id FROM student;
SELECT st.id AS st_id FROM student as st;
如果需要同时查询多个表并将数据返回到一个结果集中,用WHERE关键字能实现,但用JOIN关键字更方便。
3.1 INNER JOIN 内联,左右表都匹配才返回该行数据。
SELECT * FROM student [INNER] JOIN score ON student.id = score.id;
LEFT JOIN 左表所有数据都会返回到结果集中,如果遇到左右表不匹配的,右表数据用null进行配对.
SELECT * FROM student LEFT JOIN score ON student.id = score.id;
3.3 RIGHT JOIN 右表的所有数据都要返回到结果集中,如果左右表有不匹配的,左表用null进行匹配。
SELECT * FROM student RIGHT JOIN score ON student.id = score.id;
3.4 FULL JOIN 只要其中一个表中存在匹配就返回行。(只有在5.1以上才能使用全联接功能)
SELECT * FROM student FULL JOIN score ON student.id = score.id;
4.UNION关键字
联合,用于合并多个select语句的结果集。
UNION [ALL]
(SELECT grade FROM score);
a)返回的结果集只有name一列,score中的grade数据被合并到了name列中。
b)两次查询的列数必须一样。
c)如果不加ALL会自动去掉重复的内容
d)ORDER BY 与LIMIT 必须要联合使用才生效,如果不使用它们可以不加括号。
5.NOT NULL约束
NOT NULL约束该字段不能接受null值。
CREATE TABLE student (id int NOT NULL);
6.NUIQUE约束
UNIQUE约束,用来表示这个字段的数据的唯一性。
CREATE TABLE student (id int(10),name varchar(20),UNIQUE(id)); //在建表时使用UNIQUE约束
ALTER TABLE student ADD UNIQUE(id); //追加UNIQUE约束,如果id在表中已经有重复值,则添加失败。
ALTER TABLE student DROP index id; //删除UNIQUE约束
用于约束唯一标示数据库表中的每条记录,每个表只能有一个主键,且值不能为null。
CREATE TABLE student (id int(10),name varchar(20),PRIMARY KEY (id)); //在建表时创建主键
ALTER TABLE student ADD PRIMARY KEY(id) ;
ALTER TABLE student DROP PRIMARY KEY; //删除主键
8.FOREIGN KEY 外键
用来指向另一个表中的PRIMARY KEY。外键用来预防破坏表之间的连接的动作,也可以防止非法数据的插入因为外键是他指向的那个表的值之一。
CREATE TABLE score (id int(10),grade int(10),FOREIGN KEY (id) REFERENCES student (id));
ALTER TABLE score ADD FOREIGN KEY (id) REFERENCES student (id);
ALTER TABLE score DROP FOREIGN KEY score_ibfk_1; //最后外键约束名通过 show create table score;能查看到。
设定列的值的范围。
CREATE TABLE student (id int(10),name varchar(20),CHECK(id>=0)); //建表时设定
ALTER TABLE student ADD CHECK(id>=0);
ALTER TABLE score ADD CONSTRAINT 约束名 CHECK(id>=0 and grade>=60); //多列限定
ALTER TABLE student DROP CHECK 约束名;
10.DEFAULT默认值
MYSQL会给列自动添加一个null的默认值,如果自己追加默认值则会覆盖掉之前设定的默认值,如果将默认值去掉过后,将会得到的不是null默认值,而是没有默认值,就是说插入数据的时候必须插入这一列的数据,即使是null也行,但是不插入数据就不行。
CREATE TABLE student (id int(10),name varchar(20) DEFAULT 'abc'); //在建表时添加默认值
ALTER TABLE student ALTER name SET DEFAULT 'abc'; //追加默认值
ALTER TABLE student ALTER name DROP DEFAULT; //删除默认值
11.VIEW视图
a)暴露部分数据给外部。
b)视图主要用于读取数据,因为插入数据要受到原来的表的限定。
c)视图实质上并不是一张表,尽管看起来一模一样,但是数据实质上市存在原来的表中的。
d)简化我们某些较为复杂的业务逻辑。
创建视图(修改视图和创建一样):
CREATE VIEW 视图名 AS (查询语句);
删除视图
DROP VIEW 视图名;