1.合并查询
select * from user1 union select * from user2;
与select * from user1 union all select * from user2;
的相同点是都是对数据做了纵向拼接,列数必须相同;
不同点是第二个语句不会去掉重复的行,第一个语句则会去掉。
2.内连接查询
select * from student inner join grade on student.sid=grade.sid;
也可以写成 select * from student,grade where student.sid=grade.sid;
select * from t_employees e inner join t_departments d on e.department_id=d.department_id inner join t_locations l
on d.location_id=l.location_id;
*内连接的时候如果不写join后面的东西,则会是笛卡尔积。
3.外连接
SELECT * FROM student LEFT JOIN grade ON student.sid=grade.sid;
可以将LEFT改成RIGHT.
与内连接的区别就是左(右)外连接确保左(右)边的数据都会完整的显示出来,没有
匹配的另外一张表的数据显示NULL。
4.新增操作:
INSERT INTO 表名(列名) VALUES(值);
值与列名要一一对应,包括个数 顺序,类型。
5.修改。
UPDATE 表名 SET 列名=值 WHERE 条件。
6.删除
DELETE FROM 表名 WHERE 条件;
DELETE FROM 表名;仅仅是删除了表中的数据。删除表还是得
TRUNCATE TABLE 表名;#先把表销毁 在按照原来表的格式创建一个。
7.数据类型。
包括数值 字符串 日期时间等。
char占的是固定的空间 比如声明了长度是10,但是只存了1个数据 剩下九个数据都是用空格补了、
text是长文本数据 没有约束、
8.数据表的创建
CREATE TABLE 表名(
列名 1 数据类型 [约束条件],
列名 2 数据类型 [约束条件]
)[charset=utf8];
9.数据表的修改
ALTER TABLE 表名 操作。
ALTER TABLE 表名 ADD 列名 数据类型 [约束];
ALTER TABLE 表名 MODIFY 要修改的列名 数据类型 [约束];
ALTER TABLE 表名 DROP 列名;#删除列时 每次只能删除一列。
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 约束;
ALTER TABLE 旧表名 RENAME 新表名;
DROP TABLE 表名;
10.约束
数据库其实可以插入两个相同的行。
加约束 PRIMARY KEY NOT NULL UNIQUE
AUTO_INCREMENT自动增长 一般是给int类型的主键。
default默认值约束
外键约束:CONSTRAINT 约束名字 FOREIGN KEY 列名 REFERENCES 被引用表(列名)
eg:
create table subject(
subjectId INT PRIMARY KEY AUTO_INCREMENT,
subjectName VARCHAR(20) UNIQUE NOT NULL,
subjectHours INT DEFAULT 10,
specialId INT NOT NULL,
CONSTRAINT fk_subject_specialId FOREIGN KEY(specailId) REFERENCES Specailty(id)
)charset=utf8;
注意一定要先删除从表 再删除主表。