1.认识数据库

  1. 操作文件夹相当于数据库中的库

      • create database db1 charset utf8;

      • show create database db1;

      • show databases;

      • alter database db1 charset gbk;

      • drop database db1;

  2. 操作文件相当于操作数据库中的表

    1. 切换文件夹 use db1;

    2. 查看当前所在文件夹 select database();

      • create table t1(id int,name char);

      • show create table t1;

      • desc t1;(这个比较好)

      • show tables;

      • alter table t1 modify name char(6);

      • alter table t1 change name NAME char(7);

      6. 删
      • drop table t1;

  3. 操作文件内容相当于操作数据库中的记录

      • insert t1(id,name) values(1,'egon1'),(2,'egon2'),(3,'egon3');
      • select id,name from t1;
      • select * from t1;
      • update t1 set name='SB';
        update t1 set name='ZL' where id=2;
      • delete from t1;
        delete from t1 where id=1;

         

2.表的增删改查

1.创建表通过复制内容

create table t1 select host,user from mysql.user;
这个同时复制了表的记录和结构
create table t2 select host,user from mysql.user where 1>2;
这个就不包含表的记录 只拷贝表的结构
create t3 like mysql.user;
同2

3.数据

1.int 后面括号只代表显示宽度,如果超过宽度 则无意义。

2.日期类型

create table student(
id int,
  name char(6),
  born_year year,
  birth_date date,
  class_time time,
  reg_time datetime
);

3.枚举类型和集合类型

create table consumer(
id int,
  name char(16),
  gender enum('male','female'),
  hobbies set('play','music','football','run')
);

4.约束条件

1.not null 和 default

create table t4(
id int,
  name char(6),
  gender enum('male','female') not null default 'male'
);

5.unique key

# 单列唯一
create table department(
id int unique,
  name char(10) unique
);
或者
create table department(
id int,
  name char(10),
   unique(id),
   unique(name)
);
# 联合唯一
create table services(
id int unique,
  ip char(15),
  port int,
   unique(ip,port)
);
insert into services values
(1,'192.168.0.1',80),
(2,'192.168.0.1',70),
(3,'192.168.0.1',90),
(4,'192.168.0.2',90);

6.主键

1.primary key
2.约束: not null ,unique
3.对于innodb存储引擎来说,一张表必须有一个主键
# 单列主键
create table t5(
id int primary key,
  name char(17)
);
insert into t5 values(1,'alex'),(2,'zl');
# 复合主键
create table t6(
ip char(15),
  port int,
   primary(ip,port)
);

# 主键自增
auto_increment
create table t7(
id int primary key auto_increment,
  name char(6)
);
insert into t7(name) values ('hehe'),('alex');
insert into t7(id,name) values (3,'hehe'),(5,'alex');
insert into t7(name) values ('hehe'),('alex');
# 步长
auto_increment_increment默认值为1
# 起始偏移量
auto_increment_offset 默认为1
# 设置步长
局部
set session auto_increment_increment = 5;
全局
set global auto_increment_increment = 5;
设置起始偏移量(一定要小于等于步长)
局部
set session auto_increment_offset = 5;
全局
set global auto_increment_offset = 5;



# 清空表:
不可以 delete from t7;
delete 要和 where一起使用
delete from t7 where id = xxx;
使用 truncate
truncate t7;

7.外键 foreign key

用于建立表之间的关系

# 先建被关联的表 并且保证被关联的字段唯一
create table dep(
id int primary key,
name char(16),
   comment char(50)
);
# 在建立关联表
create table emp(
  id int primary key,
  name char(20),
gender enum('male','female'),
  dept_id int,
   foreign key(dept_id) references dep(id)
);
# 插记录 先插被关联表插入记录
insert into dep values(1,'It','IT'),(2,'sale','SALE'),(3,'Fd','FD');
# 在插入关联记录
insert into emp values(1,'egon','male',1),(2,'zl','male',3),(3,'wyj','female',2),(4,'xpq','male',1);

# 删除记录 先删关联表数据 再删被关联数据
delete from emp where dept_id = 1;
delete from dep where id = 1;

# 实现同步 删除和更新(最后不用)
create table emp(
  id int primary key,
  name char(20),
gender enum('male','female'),
  dept_id int,
   foreign key(dept_id) references dep(id)
   on delete cascade
   on update cascade
);

8.两张表之间关系:

多对一 出版社 书(foreign key)

create table press(
id int primary key auto_increment,
  name char(20)
);
create table book(
book_id int primary key auto_increment,
  name char(20),
  press_id int not null,
   foreign key(press_id) references press(id)
   on delete cascade
   on update cascade
);
insert into press(name) values('北京工业出版社'),('人民工业出版社'),('清华大学出版社');

insert into book(name,press_id) values('乾坤大挪移',1),('降龙十八掌',1),('葵花宝典',2),('九阴真经',3),('九阳神功',3);

多对多 作者 书

create table author(
id int primary key auto_increment,
  name varchar(20)
);
create table author2book(
  id int not null unique auto_increment,
book_id int not null,
  author_id int not null,
   constraint fk_author foreign key(author_id) references author(id),
   constraint fk_book foreign key(book_id) references book(book_id),
   primary key(author_id,book_id)
);
insert into author(name) values('alex'),('egon'),('武沛齐'),('张良'),('王亚静');
insert into author2book(author_id,book_id) values(11,1),(12,2),(12,1);

一对一 客户 和 学生

create table customer(
int id primary key auto_increment,
  name varchar(20) not null,
  qq int,
  phone int

);
create table student(
id int primary key auto_increment,
  class_name varchar(20),
  customer_id int unique, # 这里的外键一定要唯一的
   foreign key student(customer_id) references customer(id)
);

 

原文地址:https://www.cnblogs.com/zhangsir0228/p/14782571.html