mysql的基本操作
建库:
create database 数据库名 character set utf8;
使用库
use 数据库名
建表
create table student( id int , name varchar(20), birthday date, score double ); char(2) //固定长度 varchar(5000) //最大长度不能超过20,可变长度 text
DML操作
insert into student(id,name,birthday,score) values(1,'张三','2020-09-21',99.6); insert into student values(1,'张三','2020-09-21',99.6); insert into student values(1,'张三','2020-09-21',99.6),(1,'张三','2020-09-21',99.6),(1,'张三','2020-09-21',99.6); update student set score=100 where name='张三'; delete from student where id=1
DQL操作
select 列1,列2 from 表名 where 条件 group by 列 having 条件 order by 列 limit 0,5
约束
主键约束
create table 表名( id int primary key, name varchar(20) ) //添加了主键约束的列,不允许为null,不允许有重复制。整张表中只能有一个主键. create table 表名(
id int primary key auto_increment, name varchar(20)
)
唯一约束
create table 表名( id int primary key, name varchar(20) unique )
非空约束
create table 表名( id int primary key, name varchar(20) unique phone varchar(11) not null )
外键约束
//被外键约束的列,它的取值必须是另一张的主键 create table dept( id int primary key auto_increment, deptname varchar(255) ) create table employee( id int primary key auto_increment, employeename varchar(50), did int, constraint fk_dept_employee foreign key(did) references dept(id) [on update cascade on delete cascade ] )
表与表之间的关系
1 一对多(主外键) a表中的一条记录与b表中的多条记录相对应,反过来b表中的一条记录只与a表中的一条记录对应。我们称a表与b表之间一对多的关系
2 一对一(主外键+唯一约束) a表中的一条记录与b表中的一条记录相对应,反过来b表中的一条记录也只与a表中的一条记录对应,我们称a与b之间一对一的关系
3 多对多(借助中间表) a表中的一条记录与b表中的多条记录相对应,反过来b表中的一条记录也与a表中的多条记录对应,我们称a与b之间多对多的关系
多表查询
内联查询
select * from 表1,表2 where 表1.外键=表2.主键
select * from 表1 inner join 表2 on 表1.外键=表2.主键
外联查询
select * from 表1 left join 表2 on 表1.外键=表2.主键
子查询
1 如果子查询返的结果是单行单列,此时可以使用 > < = 等关系运算进行比较
2 如果子查询返的结果是多行单列,此时可以使用in、not in进行比较
3 如果子查询返回的结果是多行多列可以将查询结果看成一张虚拟表,和其它表进行关联查询
SELECT * FROM employee,dept WHERE employee.`did`=dept.id AND employee.`salary`>=5000;
SELECT * FROM dept d, (SELECT * FROM employee WHERE salary>=5000) e WHERE d.id=e.did;

浙公网安备 33010602011771号