一,表的创建
(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 对表结构的增删改(不常用)
实际开发中很少对已经设计好的表的结构进行修改,也就是对字段进行修改,因为其成本较高。