建表语句
语法格式:
create table 表名:(
字段名1 数据类型
字段名2 数据类型
字段名3 数据类型
。。。
);
数据类型
关于mysql当中字段的数据类型?(一下只说常见的)
int 整数型 (java中的int)
bigint 长整型 (java中的 long)
float 浮点型 (java中的float double)
char 定长字符串 (java中的int string)
varchar 可变长字符串 (java中的stringbuffer/StringBuilder)
date 日期类型 (对应java中的java.sql.date类型)
BLOB 二进制大对象 (存储图片、视频等流媒体信息)(java中的object)
CLOB 字符大对象 (存储较大文本,比如,可以存储4g的字符串)(java中的object)
数据类型的选择
char和varchar怎么选择
在实际的开发中,当某个字段的数据长度不发生改变的时候,是定长的,例如:性别、生日等都是采用char
当一个字段额数长度不确定,例如:简介、姓名等都是采用varchar
BLOB和CLOB类型的使用?
电影表:tmovie
id(int) name(varchar) playtime (date/char) haibao(BLOB) history(CLOB)
———————————————————————————————————————-
1 蜘蛛侠
2
3
表名在数据库当中一般建议以:t或者tbl_开始。
创建学生表:
学生信息包括:
学号、姓名、性别、班级编号、生日
学号:bigint
姓名:varchar
性别:char
班级编号:int
生日:char
create table t_student(
no bigint,
name varchar(255),
sex char(1),
classno varchar(255),
birth char(10),
);
插入数据
语法格式:
insert into 表名(字段名1,字段名2,字段名3,。。。)values(值1,值2,值3,。。。)
要求:字段的数量和值的数量相同,并且数据类型要对应相同。
mysql> insert into t_student(no,name,sex,classno,birth) values(1,’zhangsan’,’1’,’gaosan1ban’);
ERROR 1136 (21S01): Column count doesn’t match value count at row 1
insert into t_student(no,name,sex,classno,birth) values(1,’zhangsan’,’1’,’gaosan1ban’,’1950-10-12’);
mysql> select from t_student;
+———+—————+———+——————+——————+
| no | name | sex | classno | birth |
+———+—————+———+——————+——————+
| 1 | zhangsan | 1 | gaosan1ban | 1950-10-12 |
+———+—————+———+——————+——————+
insert into t_student(name,sex,classno,birth,no) values(‘lisi’,’1’,’gaosan1ban’,’1950-10-12’,2);
+———+—————+———+——————+——————+
| no | name | sex | classno | birth |
+———+—————+———+——————+——————+
| 1 | zhangsan | 1 | gaosan1ban | 1950-10-12 |
| 2 | lisi | 1 | gaosan1ban | 1950-10-12 |
+———+—————+———+——————+——————+
insert into t_student(name) values(‘wangwu’);
//除name字段之外
,剩下的所有字段自动插入null。
mysql> select from t_student;
+———+—————+———+——————+——————+
| no | name | sex | classno | birth |
+———+—————+———+——————+——————+
| 1 | zhangsan | 1 | gaosan1ban | 1950-10-12 |
| 2 | lisi | 1 | gaosan1ban | 1950-10-12 |
| NULL | wangwu | NULL | NULL | NULL |
+———+—————+———+——————+——————+
insert into t_student(no) values(3);
mysql> select from t_student;
+———+—————+———+——————+——————+
| no | name | sex | classno | birth |
+———+—————+———+——————+——————+
| 1 | zhangsan | 1 | gaosan1ban | 1950-10-12 |
| 2 | lisi | 1 | gaosan1ban | 1950-10-12 |
| NULL | wangwu | NULL | NULL | NULL |
| 3 | NULL | NULL | NULL | NULL |
+———+—————+———+——————+——————+
drop table if exists t_studet; //当这个表存在的话删除。
create table t_student(
no bigint,
name varchar(255),
sex char(1) default 1,
classno varchar(255),
birth char(10),
);
insert into t_student (name) values(‘zhangsan’);
mysql> select from t_student;
+———+—————+———+————-+———-+
| no | name | sex | classno | birth |
+———+—————+———+————-+———-+
| NULL | zhangsan | 1 | NULL | NULL |
+———+—————+———+————-+———-+
需要注意的地方:
当一条insert语句执行成功之后,表格当中必然会多条记录
即使多的这一行记录当中某些字段是null,后期也没有办法在执行
insert语句插入数据了,只能使用update进行更新。
//字段可以省略不写,但是后面的value对数量和顺序都有要求。
insert into t_student values(1,’jack’,’0’,’gaosan2ban’,’1986-10-23’);
mysql> select from t_student;
+———+—————+———+——————+——————+
| no | name | sex | classno | birth |
+———+—————+———+——————+——————+
| NULL | zhangsan | 1 | NULL | NULL |
| 1 | jack | 0 | gaosan2ban | 1986-10-23 |
+———+—————+———+——————+——————+
insert into t_student values(1,’jack’,’0’,’gaosan2ban’);
ERROR 1136 (21S01): Column count doesn’t match value count at row 1
//一次插入多行数据
insert into t_student (no,name,sex,classno,birth) values(3,’rose’,’1’,’gaosi2ban’,’1955-12-14’),(4,’laotie’,’1’,’gaosi2ban’,’1952-12-14’);
mysql> select from t_student;
+———+—————+———+——————+——————+
| no | name | sex | classno | birth |
+———+—————+———+——————+——————+
| NULL | zhangsan | 1 | NULL | NULL |
| 1 | jack | 0 | gaosan2ban | 1986-10-23 |
| 3 | rose | 1 | gaosi2ban | 1955-12-14 |
| 4 | laotie | 1 | gaosi2ban | 1952-12-14 |
+———+—————+———+——————+——————+
