数据库级别
SHOW DATABASES; 显示所有的数据库
CREATE DATABASE 数据库名称; 新建数据库
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 设置数据库的编码方式为utf8(推荐使用)
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; 设置数据库的编码方式为gbk
USE 数据库名称; 进入数据库
drop database 数据库名称; 删除数据库
数据表级别
show tables;
desc tb1; 查看数据表的基本结构信息
delete from 表名; 清除表内容,自增列表在原来的基础上增加
truncate table 表名; 清除表内容,速度快,自增列表回到原点从新开始增加
drop table 表名; 直接删除表
select * from 表名; 查找数据表中的数据
创建数据表
1.create table tb1(nid int, name varchar(10));
2.create table 表名(
列名 类型 是否可以为空
列名 类型 是否可以为空
)engine=innodb default charset=utf8;
engine=innodb 数据库引擎 default charset=utf8;
charset=utf8;设置表级别的编码方式
# innodb支持事务,原子操作,回滚
一个事务中的所有任务都要完成后,事务才算完成。如果一个完成而其他的没有完成,就会发生回滚,整个事务回到初始状态
举例:银行转钱
#null 数据可空 not null数据不可空
a. 默认值
创建列时,可以指定数据的默认值,当插入时如果没有主动设置,则自动添加默认值
create table tb1{ nid int not null default 2, 设置nid列的值不可为空,如果不进行设置,值默认为2 num int not null, 设置num列的值不可为空 }engine=innodb default charset=utf8;
b.自增列
(一张表只能有一个,数字,必须是索引-主键)
自增列必须为表格索引主键,因此要在后面加上primary key
在创建表时,在某一列的后面添加auto_increment,该列的数值就是自增的
create table tb1{ nid int not null auto_increment primary key,设置该列的值不为空,且数值自增 }engine=innodb default charset=utf8;
c.主键索引
一个数据表只能由一个主键索引,创建表的时候在列的后面加上primray key,该列就是表的主键,唯一不能重复,不能为null,- 一般情况下,自增列设置主键
添加主键的方法:
nid int auto_increment primary key,
create table xxx( nid.... auto_increment primary key, .... );
或者:
alter table 表名 add primary key(列名)
删除主键:
alter table 表名 drop primary key;
或者:
alter table 表名 modify 列名 int,drop primary key;
如下是创建一个数据表的去边写法:
create table tb5( nid int not null auto_increment primary key, name varchar(16), age int default 19 )engine=innodb default charset=utf8;
外键:
两张表建立约束,来限制从表某一列插入数据值必须为主表某列中已经存在的数据
从表:需要被限制的表格
主表:被其他表格引用的表
注意使用外键时,被限制的列和限制列中的数据类型要相同
增加外键:
alter table 从表 add constraint 外键名称(一般是FK_从表_主表) foreign key 从表(外键字段 ) references 主表(主键字段)
或者在创建表时添加外键:
onstraint FK_从表_主表 foreign 从表(外键字段 ) references 主表(主键字段 #添加语句,创建两表之间的外键来约束class的添加值
删除外键:
alter table 从表 drop foreign key 外键名称
举例如下:
1. create table userinfo( -> student_num int not null auto_increment primary key, -> age int, -> class int)engine=innodb default charset=utf8; 2.create table class_info( -> nid int not null auto_increment primary key, -> class varchar(20))engine=innodb default charset=utf8; 给表userinfo 中的class列限制插入值为class_info中的数据。就需要使用外键: alter table userinfo add constraint FK_userinfo_class_info foreign key userinfo(nid) references class_info(nid);
或者直接创建表1时添加外键:
create table userinfo(
-> student_num int not null auto_increment primary key,
-> age int,
-> class int,
-> constraint FK_userinfo_class_info foreign key (class) references class_info(class) #添加语句,创建两表之间的外键来约束class的添加值
)engine=innodb default charset=utf8;
修改表结构,添加列,删除列,修改列:
添加列:alter table 表名 add 列名 类型
删除列:alter table 表名 drop column 列名
修改列:
alter table 表名 modify column 列名 类型 (只能改类型)
alter table 表名 change 原列名 新列名 类型 (可以修改列名和类型)
添加,删除外键,主键:
修改默认值: ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值;
删除默认值:ALTER TABLE 表名 ALTER 列名 drop default;