一,表的创建

 (1)建表

        建表语句属于DDL语句。建表语法:

                create table 表名(字段名 数据类型,字段名 数据类型);

Notations:建议表名以t_或tbl_开始,可读性较强。数据库中命名规范,所有标识符全部小写,单词之间用下划线分开。

(2) mysql中的数据类型

        掌握一些常见的数据类型:

        varchar:可变长度的字符串,它会根据实际长度动态分配空间,最长255
        char:定长字符串,只给数据分配定长的空间。数据长度比较固定的选用char,比如性别字段,最长255

        int:整数型,最长11.

        bigint:长整型

        float:单精度浮点型

        double:双精度浮点型数据
        date:短日期

        datetime:长日期
        clob:字符大对象,可以存4G的字符串,通常用于存储文章、说明等。凡是长度超过255的都需要clob。

        blob:二进制大对象,专门存视频、声音等流媒体对象。往blob的字段插入数据的时候需要使用IO流。

(3)创建表实例

        创建一个学生表:

     > create table t_student(
    -> id bigint,
    -> name varchar(4),
    ->  sex char(1) default '男',
    -> grade int(1),
    ->  email varchar(255));

Notations:default表示如果插入数据没有指定sex,会默认为男。

二,表的删除

        删除表:drop table if exists 表名;

三,数据的操作

(1)insert的基本使用

1.1 插入单条数据

        语法:

                insert into 表名(字段1,字段2,字段3,...)values (值1,值2,值3,...)

Notations:字段和值要一一对应。如果字段不写完没写的字段会是NULL,还可以在建表时使用default指定默认值。insert语句一旦执行成功,表中一定会多一条记录。

        如果有数据类型是日期,键盘只能输入字符串,这时需要用到str_to_date的单行处理函数。使用格式:

                str_to_date('字符串日期','日期格式')

Notations:%Y:年 %m:月 %d:天 %h:时 %i:分(因为m已经用了,而minute第二位是i)

        使用insert插入日期格式的数据:

        > insert into t_user(id,name,birth)
       -> value(1,'hui',str_to_date('1989-4-20','%Y-%m-%d'));

Notations:如果插入字符串的格式刚好是'%Y-%m-%d',mysql会自动做类型转换,不用写str_to_date

1.2 插入多条数据

        例如:

     > insert into t_user(name,birth,now_time) value
    -> ('J','1999-8-15',now()),
    -> ('P','2007-4-5',now());

(2)查询日期格式的数据

        例如查询上一条insert插入的数据,需要使用date_format函数:
        select id,name,date_format(birth,'%m/%d/%Y') as birth from t_user;

        查询结果:

+------+------+------------+
| id   | name | birth      |
+------+------+------------+
|    1 | hui  | 04/20/1989 |
+------+------+------------+

 Notations:

1,如果不用date_format函数,查找出来的date类型也会转换成varchar类型,默认是'%Y-%m-%d'。

2,date和datetime:date是短日期,只有年月日。datetime是长日期,有时分秒(长日期默认格式:%Y-%m-%d %h:%i:%s)。

        在mysql中可以使用now()获取当前时间,如:

        > insert into t_user(name,birth,now_time)
       -> value('HONG','2000-01-02',now());

(3)update修改数据

        语法格式:

        update 表名 set 字段1=值1,字段2=值2,.... where 条件;

Notations:没有条件会使得所有数据更新。

(4)delete语句删除数据

        delete from 表名 where 条件;

Notations:没有条件数据会全部删除.

(5)对表整体的操作

5.1 快速复制表

        语法:

        create 表名 as select * from 已有的表名;

        这个会复制表的所有内容。

5.2 查询结果插入表(很少用)

        inser into 表名 select * from 另一张表;

5.3 删除数据量高的表

        delete语句(属于DML)比较慢:delete from 表名; delete删数据后数据在硬盘上的真实存储空间不会被释放,这种缺点是删除效率低,优点是支持回滚。

        而truncate语句(属于DDL)删除效率高,缺点是不支持回滚。语法:

        truncate table 表名;

5.4 对表结构的增删改(不常用)

        实际开发中很少对已经设计好的表的结构进行修改,也就是对字段进行修改,因为其成本较高。