标签:应该 位置 字段 允许 设置 varchar lte 结构 主键
语法
1. 改表名rename
alter table 表名
rename 新表名
2. 增加字段add
alter table 表名
add 字段名 数据类型 (完整性约束条件)
add 字段名 数据类型(完整性约束条件)
3. 删除字段 drop
alter table 表名
drop 字段名;
4. 修改字段
modify 字段名 数据类型 (完整约束条件);
change 旧字段名 新字段名 旧数据类型 (完整性约束条件);
change 旧字段名 新字段名 新数据类型(完整性约束条件);
复制表结构+记录 (key不会复制: 主键、外键和索引) mysql> create table new_service select * from service;
1. char : 定长,简单粗暴,浪费空间,存取速度快.
char(10) 意思就是存储字符时,小于10个字符,会向右填充空格来满足长度.但是检索或者查询时,会自动删除尾部空格,除非你打开它.
2. vachar : 变长,节省空间,存取速度慢
carchar(10): 不会自动填充空格,如果‘ad ‘尾部空格也会被存到.检索时,你怎么存的就怎么显示.
效率 : char > varchar > text
补充:
text : 用于保存变长的大字符串 如:878787(2**13 -1)个字符
length : 查看字节数
char_length : 查看字符数
tinyint(m) 1个字节 范围(-128~127)
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节 范围(-8388608~8388607)
int(m) 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(+-9.22*10的18次方)
作用:用于保证数据的完整性和一致性.
- not null 和 defult
- unique : 唯一
- primary key : 主键
- auto_increment : 自增长
- foreign key : 外键
1. 如果字段不允许为空,就必须写上 not null.
例子: sex enum(‘male‘,‘female‘) not null default ‘male‘; ###enum: 性别要从后面给出的条件中挑选出一个,且不能为空,如果不填的话,默认值就是 ‘male‘.
注意:not null 和 ‘‘ 不一样!
2. unique: 设置唯一约束
2.1 unique 和 not null 碰到一起的话,desc 改表结构的话,会看到该字段的 key 会是 primary.
2.2 联合唯一:
create table service(
id int primary key auto_increment,
name varchar(20),
host varchar(15) not null,
port int not null,
unique(host,port) #联合唯一
);
mysql> insert into service values
-> (1,‘nginx‘,‘192.168.0.10‘,80),
-> (2,‘haproxy‘,‘192.168.0.20‘,80),
-> (3,‘mysql‘,‘192.168.0.30‘,3306)
-> ;
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> insert into service(name,host,port) values(‘nginx‘,‘192.168.0.10‘,80);
ERROR 1062 (23000): Duplicate entry ‘192.168.0.10-80‘ for key ‘host‘
3. primary key : 设置主键
单列做主键
多列做主键(复合主键)
注意! 一个表内只能有一个主键 primary key
单列主键我们就不举例了,
多列做主键
create table service(
ip varchar(15),
port char(5),
service_name varchar(10) not null,
primary key(ip,port)
);
4. auto_increment : 自增长
约束字段为自增长,被约束的字段必须同时被 key键约束.
4.1 在创建表的时候设置初始值 auto_increment = 3 ;
或者是创建表时不设置,然后在创建完后修改它 : alter table 表名 auto_incretment = 3 ;
对于自增的字段,在用 delete 删除后,再插入值,该字段扔按照删除前的位置继续增长.
应该用 truncate 清空表,比起 delete 一条一条的删除, truncate 会方便很多,在删除大表时用 truncate.
4.2 自增步长:auth_increment_increment
设置步这里面涉及三个问题:
1. 级别:
#基于表级别
create table t1(
id int。。。
)engine=innodb,auto_increment=2 步长=2 default charset=utf8
#mysql自增的步长:
show session variables like ‘auto_inc%‘;
#基于会话级别 set session
set session auth_increment_increment=2 #修改会话级别的步长
#基于全局级别的 set global
set global auth_increment_increment=2 #修改全局级别的步长(所有会话都生效)
2.步长和起始偏移量 : auto_increment_increment and auto_increment_offset
~~偏移量 : offset
WARNING:::::
If the value of auto_increment_offset dayu auto_increment_increment ,the value of offset is ignored(被忽略).
翻译:如果 偏移量的值大于步长的值的话,那么偏移量的值将被忽略. 如果 OFFSET > INCREMENT.
Example: 设置 auto_increment_increment = 3 , auto_increment_offset = 4 . 这种情况的话, offset 的值还是初始值,不会变成4.
5. foreign key
这个知识点,我另写了一篇,大多是习题.通过实例理解这个外键,多思考...
http://www.cnblogs.com/ugfly/p/7487990.html 直接拉到最底那部分.
MySQL:表的操作 知识点难点总结:表完整性约束及其他常用知识点二次总结🙄
标签:应该 位置 字段 允许 设置 varchar lte 结构 主键
原文地址:http://www.cnblogs.com/ugfly/p/7498382.html