mysql 学习day2

85 阅读2分钟

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;

注意一定要先删除从表 再删除主表。