创建数据库
create database 数据库名称 default character set utf8 collate utf8_general_ci;
create database 数据库名称 default charset utf8 collate utf8_general_ci;
create database 数据库名称 default character set gbk collate gbk_chinese_ci;
创建表
create table 表(
列名 类型 是否可以为空,
列名 类型 是否可以为空,
)engine=InnoDB default charset=utf8
InnoDB 支持事务和原子操作
是否为空,null表示空
not null #不可为空
null #可以为空
auto_increment #自增 后面需要加索引和数字 一般是主键索引 primary key
使用递增的时候 如果之前是1 2 3 你可以直接insert为7 之后递增的就是 8 9 10 如果删了8 9 10 后面递增的显示的就是11 12 13 truncate 这个表之后 递增从1开始重新计数
primary key #主键 一张表只有一个主键
default xx 默认值
删除表
drop table 表名 #直接删除表 包括表结构
delete from 表名 #清空表内容 可以配合where使用 清楚的auto_increment的字段记忆删除的内容
truncate table 表名 #清空表内容 清除的auto_increment的字段从1重新开始 速度相对delete快一些
create table userinfo(
nid int not null auto_increment primary key,
name varchar(10),
age int,
part_nid int
)engine=innodb default charset=utf8;
create table part(
nid int not null auto_increment primary key,
caption varchar(30)
)engine=innodb default charset=utf8;
insert into part(caption) values ("行政") ;
insert into part(caption) values ("人事") ;
insert into part(caption) values ("财务") ;
insert into part(caption) values ("综合服务") ;
添加外键
alter table userinfo add constraint 外键名称 foreign key userinfo(关联字段) references part(关联字段)
alter table userinfo add constraint fk_u_p foreign key userinfo(part_nid) references part(nid);
修改表
列
添加列:alter table 表名 add 列名 类型
删除列:alter table 表名 drop column 列名
修改列:alter table 表名 modify column 列名 类型 --修改类型
alter tavle 表名 change 原列名 新列名 类型; --修改列名 类型
主键
添加主键:alter table 表名 add primary ker(列名);
删除主键:alter table 表名 drop primary key;
alter table 表名 modify 列名 int,drop primary key;
外键
添加外键:alter table 从表 add constraint 外键名称 foreign key 从表(外键字段) 主表(主键字段)
删除外键:alter table 表名 drop foreign key 外键名称
默认值
修改默认值:alter table 表名称 alter i set dafault 1000;
删除默认值:alter table 表名称 alter i drop default;
数值类型
数值
bit 二进制 定义几位存储数据按照二进制
tinyint 有符号-128^127 无符号0^255
smallint
int 无符号使用int unsigned
bigint
decimal 十进制小数 精确的一般薪水有这个类型
float
double
字符串
char 定长 查找速度快 浪费空间 最大是255字符
varchar 变长 查看速度相对慢 节省空间最大是255字符
text 2**16
mediumtext 2**24
longtext 2**32
时间:
DATE YYYY-MM-DD
TIME HH-MM-SS
TEAR YYYY
DATETIME YYYY-MM-DD HH-MM-SS
TIMESTAMP YYYYMMDD HHMMSS
枚举和set
enum 枚举 在内存中创建了几个值 只能从枚举的数值中获取一个
set 集合 可以将set中的字段进行组合获取
create table shirts(
name varchar(20),
size enum('x-small','small','medium','large','x-large')
);
insert into shirts (name,size) values ('dress','small'),('t-shirt','large');
create table myset(col set('a','b','c','d'))engine=innodb default charset=utf8 ;
insert into myset(col) values ('a,d'),('c,d,a');
create table tb1(
nid int not null default 2,
num int null
)engine=innodb default charset=utf8;
create table tb2(
nid int not null auto_increment primary key ,
num int null
)engine=innodb default charset=utf8;
create table student(
name varchar(10) not null ,
num int not null,
age int not null default 19,
gender int not null,
primary key (name,num)
)engine=innodb default charset=utf8;
create table tb3(
num int not null auto_increment primary key,
name varchar(10) not null ,
age int not null default 19,
gender int not null
)engine=innodb default charset=utf8;
f5 disn