一、创建表
 语法格式:
 create table <表名>(
 字段名1 数据类型,
 字段名2 数据类型,
 …
 );
 补充:MySQL中常见的数据类型
 int 整数(对应Java中的int)
 bigint 长整型(对应Java中的long)
 float 浮点型(对应Java中的float,double)
 char 定长字符串(对应Java中的String)
 varchar 可变长字符串,可以根据实际长度动态地分配存储空间(最多存255个字符,对应Java中的StringBuffer/StringBuilder)
 date 日期类型(对应Java中的java.sql.Date类型)
 BLOB 二进制大对象(存储图片、视频等流媒体信息)Binary Large Object(对应Java中的Object)
 CLOB 字符大对象(存储较大文本,比如存储4G的字符串)Character Large Object(对应Java中的Object)
 示例:
 
 给表的字段添加默认值:
 
 上图中sex字段的默认值为1.
 二、删除表
 drop table if exists <表名>;
 三、往表中插入数据
 
 注意:(1)insert语句可以颠倒表中字段地顺序,也可以不包含全部的字段(此时未插入的字段若有默认值则为默认值,否则为null)。
 (2)也可以只写表名,省略括号与其中的字段序列,此时values后的括号的值的顺序与个数必须与表一致。
 例如:
 
 一次插入多个数据(values后跟多个记录):
 
 四、表的复制(通过查询结果创建表)
 语法:create table <表名> as <select语句>;
 五、批量插入(将查询结果插入一张表中)
 语法:insert into <表名> <select语句>;
 六、修改表中的数据
 语法:update <表名> set 字段名1=值1,字段名2=值2,… where 条件;
 注意:没有条件整张表数据改。
 七、删除数据
 语法格式:delete from <表名> where 条件;
 注意:(1)没有条件全部删除。
 (2)若表的数据量特别大时,删除表时需要几十分钟甚至几个小时。delete语句执行后并没有释放表的存储空间,这有利于表的恢复(回滚)。若要释放表的存储空间(不能恢复),语句为"truncate table <表名>;"。
 八、创建表时的约束(Constraint)
 常见约束包括:
 1.非空约束(not null)
 
 2.唯一性约束(unique)
 
 
 注意:上图中说明约束分为列级约束(也称属性级约束)和表级约束(也称元组级约束)。列级约束写在字段后,表级约束写在最后。上图中的例子只有两个记录的usercode和username两个字段都相同时才会报错。
 3.主键约束(primary key)
 
 primary key也有表级约束。
 
 主键自增(auto)increment):
 
 navicat实现字段主键自增:
 
 4.外键约束(foreign key)
 示例:
 
 
 
 注意:外键可以为null;外键引用的字段必须是具有唯一性的字段。
 5.检查约束(check)
 注意:Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。
 九、索引
 索引相当于一本书的目录,通过目录可以快速地找到对应地资源。在数据库方面,查询一张表时有两种索引方式:
 第一种:全表扫描;
 第二种:根据索引扫描(效率很高);
 注意:索引虽然可以提高检索效率,但是不能随意地添加索引,因为索引也是数据库中地对象,也需要数据库不断地维护。比如,表中地数据经常被修改这样就不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护。
 添加索引是给某一个字段,或者说某些字段添加索引。
 
 索引的适用情况:
 数据量庞大,该字段很少的DML(增删改)操作,该字段经常出现在where子句中。
 注意:主键和具有unique约束的字段会自动添加索引。根据主键查询效率更高,尽量根据主键检索。
 语法格式:
 create index <索引名> on <表名>(<字段名>);
 drop index <索引名> on <表名>;
 示例:
 
 从上图中可以看出,未添加索引是select语句执行时扫描了14个记录,添加了索引后select语句执行时扫描了一条记录。
 索引的分类:
 
 注意:模糊查询时,第一个通配符为“%”时,这个时候索引是失效的。


















