数据库
(1)增
create database my_database default charset utf8;
(2)删
drop database my_database;
(3)查
show databases;
(4)选
use my_database;
数据表
(1)增
create table t1(
id int not null auto_increment primary key,
name varchar(5),
age char(1),
gender char(1),
department_id int
constraint fk_t1_t2 foreign key(department_id) references t2(id)
) engine=innodb auto_increment=1 default charset=utf8
#innodb 支持实物,原子性操作,可以回滚
#myisam 与innodb相反
#not null 表示不为空
#auto_increment 表示自增,表中只能有一个自增列
#primary key 主键,表示约束,不为空且不重复,有加速查找作用
一个表只能有一个主键,主键可以由多列组成,当由一列组成时,值必须是唯一,当时多列组成时,组合必须是唯一。
##foreign key 外键,把表1的某列或者多列与另一个表的某列或者多列进行关联起来,并约束表1只能是表2的指定内容(与excel里的插入下拉表同理)
**只有当主键是由两列组成时,外键可以由两列组成并进行关联约束。
**在表与表之间外键名不能够重复,所以命名格式最好是fk_表1名_列名_表2名_列名。
数据类型:数字,字符串,时间
数字:(整数部分)int,bigint,tyinint,(小数部分)float,double,decimal[精确的,推荐使用]
字符串:char(10)查找速度快[定长时用合适] *****
varchar(10)节省空间[不定长时用合适] *****
PS:mysql的数据优化层面上要把定长数据列往前放
时间类型:datetime
(2)删
drop table t1; #删除有外键约束的表时,要把外键先删除才可以删除表
启动外键约束:set foreign_key_checks=1;
禁用外键约束:set foreign_key_checks=0;
查看当前外键是否有启动:select @@foreign_key_checks;
(3)改
alter table new_t1 rename t1; #修改表名
alter table t1 modify age int; #修改字段的数据类型
alter table t1 modify height int first #把字段移到第一列
alter table t1 modify height int after gender #把字段移到指定字段的后一列
alter table t1 change department_id dpm_id smallint; #修改字段名和字段类型
alter table t1 add QQnumber int(10); #增加新字段
alter table t1 add height int not null; #增加新字段并设置不为空的约束条件
alter table t1 add weight int first; #增加新字段并放置到第一列处
alter table t1 add mail varchar(15) after gender; #增加新字段并放置到指定列的后一列处
alter table t1 add primary key(id) #增加主键
alter table t1 add constraint fk_t1_t2 foreign key(workid) references department(id)
#增加外键
alter table t1 drop QQnumber; #删除字段
alter table t1 engine=innodb; #修改表的引擎
alter table drop foreign key fk_t1_t2; #删除外键
alter table drop primary key(id); #删除主键
alter table t1 auto_increment=20 #修改自增列的初始值
补充自增:mysql:自增步长基于会话级别(不能给某张表设置步长,每登录一次mysql就是一次会话,重新登录有恢复默认步长为1)
sql server:自增步长基于表级别
1.会话级别:查看全局变量 show session variables like ‘auto_inc%’; ***
设置会话步长 set session auto_increment_increment=2; ***
设置自增起始值 set session auto_increment_offset=10;
2.全局级别:查看全局变量 show global variables like ‘auto_inc%’;
设置会话步长 set global auto_increment_increment=22; 这个一旦设置了,以后每次登录 mysql都是这个步长,不要轻易使用
设置自增起始值 set global auto_increment_offset=10; 这个一旦设置了,以后每次登录mysql都是这个起始值
(4)查
show tables; #查看数据库里有哪些表
desc t1; #查看表结构
show create table student \G; #查看创建表时的SQL语句