表里写中文
create table 表名 (字段)DEFAULT CHARSET=utf8 存汉字指定表的字符集
DDl 数据库定义语言 create alter drop
DML 数据库操作语言 insert update delete
DCL 数据库控制语言 grant revoke
DTL 数据事物语言 commit rollback savepoint
tinyint -128~127(有符号) 0~255(无符号)
int 整数
float(总宽度,小数位数) 单精度浮点
double 双经典浮点
定长 char 不够空格补齐 超出无法写入
变长 varchar 按数据根据实际大小分配存储空间
大文本 text/blob
枚举类型
enum 单选
set 多选
日期时间类型:
年 year YYYY 4位数 当用2位数赋值默认01~69为2000~2069 70~99视为1970~1999
日期 date YYYYMMDD[maxscale]
4,1 Top
时间 time 8字节 HHMMSS 默认赋值为null
timestamp 4字节 未赋值时自动以当前时间赋值
select now() 获取系统当前时间
year() 动态获得系统日期时间
sleep(N) 休眠N秒
curdate() 获取当前的系统日期
curtime() 获取的当前的系统时刻
month() 获取时间中的月份
date 获取指定时间中的日期
time() 获取时间中的时刻
day(now())
date(20191224)_
date (now())
time (now())
数值类型的宽度是显示宽度,不能限制字段赋值的大小,字段值的大小由类型决定
int(4)unsigened zerofill用0补位
引类型 btree B+tree hash
键值类型 index 普通
unique fulltext 唯一
primary key 全文
foreign key 外键
在已由的表中设置index字段
-crate index(索引名) on 表名;
-drop index 索引名 on 表名;
-create table ….index(字段名)
主键 primary key 限制如何给字段赋值
主键有唯一性,不能赋空值
创建主键
create …字段 primary key
或
create …primary key(字段)
已有表创建主键字段
alter table t10 add primary key(字段);
创建符合主键:表中的多改字段一起作主键,赋值时,只要主键字段的值不同时重复即可
主键通常和auto_increment 连用 让字段的值自动增长
向表中插入记录时 不给自动增长的字段赋值,字段的值用当前字段最大的值+1后把结果作为当前新记录字段的值。
即不赋值的时候自+1,如果不想自增长就直接赋值,赋值后再自增长以最大值加1
mysql> insert into t1 (name,age,pay) values(“smith”,25,18800),(“tom”,26,20500),(“lee”,27,26000);
mysql> insert into t1 values(null,”tom2”,30,20000);设置id值为空等效于上面的命令
删除主键的时候先去调自增长属性让后再删除主键
alter table change 旧字段 新字段 新类型
alter table drop primary key
mysql> alter table modify id int(4) not null;
mysql> alter table t1 drop primary key;
外键 foreign key
让当前字段的值再另一个表中字段的值范围内选择
存储引擎必须时innodb 字段的类型要一致
被参考字段必须时索引类型的一种(primary key)
mysql> create table gztab(gz_id int(2),pay float(7,2),foreign key(gz_id) references workerlist(yg_id)on delete cascade on update cascade)engine=innodb;
同步删除 同步更新
gztab_ibfk_1 外键标志change
mysql> update workerlist set yg_id=8 where yg_id=1;
mysql> delete from workerlist where yg_id=4;
测试更新删除的变化
删除外键
删除外键标志gztab_ibfk_1再删除主键primary key