表操作

一 : 修改表表表表表表表表表: ALTER TABLE

语法
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次方)
四 : 枚举类型(enum)和集合类型(set)

  1. enum 单选 只能在给定的范围内选择,如单选框,多选框.
  2. set 多选 只能在给定的范围内炫则一个或多个值(爱好1,爱好2,爱好3..)
: 完整性约束 重点重点重点!!!!!

作用:用于保证数据的完整性和一致性.

  1. not null 和 defult
  2. unique : 唯一
  3. primary key : 主键
  4. auto_increment : 自增长
  5. 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  直接拉到最底那部分.

最新文章

  1. 山东省第七届ACM省赛------The Binding of Isaac
  2. 关于MariaDB5.5不是有效的Win32 应用程序
  3. iOS 选择的照片或者拍照的图片上添加日期水印
  4. MemCache在win7上的可视化配置以及Nodejs/Net应用
  5. Inno Setup 插件大全
  6. 【测试】在hr用户下自行创建T1和T2表写一条SQL语句,(NL连接)
  7. 启动程序的同时传参给接收程序(XE8+WIN764)
  8. C#- WinForm获取 当前执行程序路径的几种方法
  9. Springmvc中@RequestParam传值中文乱码解决方案(转)
  10. cos-26上传
  11. Java中Thread类的start()和run()的区别
  12. EasyUI - DataGrid 组建 - [ 排序功能 ]
  13. Linux/Unix
  14. 团队作业4----第一次项目冲刺(Alpha版本)4.28
  15. 读lodash源码之从slice看稀疏数组与密集数组
  16. 在表单提交之前做校验-利用jQuery的submit方法
  17. 《Java大学教程》--第2章 选择
  18. jQuery File Upload的使用
  19. POJ 2442 - Sequence - [小顶堆][优先队列]
  20. SpringMVC统一转换null值为空字符串的方法 !

热门文章

  1. 32位linux(centos)下mongoDB的安装
  2. 深入理解php内核 编写扩展 II:参数、数组和ZVALs
  3. 深入理解javascript函数进阶系列第三篇——函数节流和函数防抖
  4. Mysql 的 IF 判断
  5. node.js之fs模块
  6. NGUI_Button
  7. java 之 桥接模式(大话设计模式)
  8. QWT与QT Designer
  9. day5、文件乱码怎么解决
  10. 《Effective Modern C++》翻译--简单介绍