MySQL的增删改查-CRUD
MySQL的增删改查-CRUD
Create(增) Retrieve(检索) Update(修改) Delete(删除)
建表语句的语法格式:
create table 表名{
字段名1 数据类型
字段名2 数据类型
字段名3 数据类型
}
关于MySQL当中常见的数据类型:
int 整数型
bigint 长整型(java中的long)
float 浮点型
char 定长字符串
varchar 可变长字符串(最大255)
date 日期类型
BLOB 二进制大对象(存储图片、视频等流媒体信息)Binary Large OBject
CLOB 字符大对象(存储较大文本,比如:可以存储4G的字符串) Character Large OBject
char和varchar如何选择?
在实际的开发中,当某个字段中的数据长度不发生改变的时候是定长的,例如:性别、生日等都是此阿勇char。
当一个字段的数据长度不确定,例如:简介、姓名等都此阿勇varchar。
表名在数据库当中一般建议以:t_或者tbl_开始
案例:创建学生表
学生信息包括:学号(bigint)、姓名(varchar)、性别(char)、班级编号(varchar)、生日(date)
create table t_student(
no bigint,
name varchar(255),
sex char(1),
classno varchar(255),
birth char(10)
)
insert-插入数据
语法格式:
insert into 表名(字段名1,字段名2,字段名3,...) values(值1,值2,值3,...)
要求:字段的数量和值的数量相同,并且数据类型要对应相同。
字段可以省略不写,但是后面的values对数量和顺序都有要求
insert into 表名 values(值1,值2,值3,...)
例如:
insert into t_student(no,name,sex,classno,birth) values(10001,'zhangsan','1','gaosan1ban','1999-12-22');
应为当前DOS窗口采用的是GBK而数据库采用的是UTF_8,所以无法插入中文。
mysql> select * from t_student;
+-------+----------+------+------------+------------+
| no | name | sex | classno | birth |
+-------+----------+------+------------+------------+
| 10001 | zhangsan | 1 | gaosan1ban | 1999-12-22 |
+-------+----------+------+------------+------------+
1 row in set (0.00 sec)
注意:
mysql> insert into t_student(name) values('lisi'); //如果仅插入一条数据,那么其他字段默认插入为NULL,如需设置默认插入值,则需要在创建表的语句 数据类型后面添加 defalut 默认值;
Query OK, 1 row affected (0.01 sec)
mysql> select * from t_student;
+-------+----------+------+------------+------------+
| no | name | sex | classno | birth |
+-------+----------+------+------------+------------+
| 10001 | zhangsan | 1 | gaosan1ban | 1999-12-22 |
| NULL | lisi | NULL | NULL | NULL |
+-------+----------+------+------------+------------+
2 rows in set (0.00 sec)
需要注意的地方:
当一条insert语句执行成功之后,表格当中必然会多一行记录。
即使多的这一行记录当中某些字段是NULL,后期也没有办法在执行
insert语句插入数据了,只能使用update进行更新。
一次插入多行数据
格式:insert into 表名() values(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
mysql> insert into t_student values(10002,'wangwu','1','gaosan2ban','2000-11-02'),(10003,'xiaoming',
'1','gaosan1ban','1998-02-01');
将查询结果插入到一张表中
语法:
insert into 表名 select语句
例如:
mysql> insert into dept1 select * from dept;
表的复制
语法:
create table 表名 as select语句;
将查询结果当做表创建出来。
例如:
mysql> create table t_student01 as select no,name from t_student;
mysql> select * from t_student01;
+-------+----------+
| no | name |
+-------+----------+
| 10001 | zhangsan |
| NULL | lisi |
| 10002 | wangwu |
| 10003 | xiaoming |
+-------+----------+
4 rows in set (0.00 sec)
update-修改数据
语法格式:
update 表名 set 字段名1=值1,字段名2=值2...where 条件;
注意:没有条件整张表数据会全部更新
案例:将学生表中lisi的学号修改为10004 性别1 班级gansan1ban出生日期1999-09-09
+-------+----------+------+------------+------------+
| no | name | sex | classno | birth |
+-------+----------+------+------------+------------+
| 10001 | zhangsan | 1 | gaosan1ban | 1999-12-22 |
| NULL | lisi | NULL | NULL | NULL |
| 10002 | wangwu | 1 | gaosan2ban | 2000-11-02 |
| 10003 | xiaoming | 1 | gaosan1ban | 1998-02-01 |
+-------+----------+------+------------+------------+
4 rows in set (0.00 sec)
mysql> update t_student set no=10004,sex='1',classno='gaosan1ban',birth='1999-09-09'where name='lisi
';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from t_student;
+-------+----------+------+------------+------------+
| no | name | sex | classno | birth |
+-------+----------+------+------------+------------+
| 10001 | zhangsan | 1 | gaosan1ban | 1999-12-22 |
| 10004 | lisi | 1 | gaosan1ban | 1999-09-09 |
| 10002 | wangwu | 1 | gaosan2ban | 2000-11-02 |
| 10003 | xiaoming | 1 | gaosan1ban | 1998-02-01 |
+-------+----------+------+------------+------------+
4 rows in set (0.00 sec)
更新所有记录:
update t_student set no='10000',name='xingming',sex='1',classno='banji',birth='2000-01-01';
delete-删除数据
语法格式:
delete from 表名 where 条件;
注意:没有条件全部删除。
例如:
删除10部门数据
mysql> delete from dept1 where deptno=10;
删除所有记录
mysql> delete from dept1;
怎么删除大表?(重点)
mysql> truncate table student; //表被截断,不可回滚,永久丢失。

浙公网安备 33010602011771号