mysql初入门
1.认识数据库
-
操作文件夹相当于数据库中的库
-
增
-
create database db1 charset utf8;
-
-
查
-
show create database db1;
-
show databases;
-
-
改
-
alter database db1 charset gbk;
-
-
删
-
drop database db1;
-
-
-
操作文件相当于操作数据库中的表
-
切换文件夹 use db1;
-
查看当前所在文件夹 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;
-
-
-
操作文件内容相当于操作数据库中的记录
-
增
-
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