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;

 

posted @ 2021-06-23 17:37  爱敲键盘的猫  阅读(40)  评论(0)    收藏  举报