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; //表被截断,不可回滚,永久丢失。
posted @ 2020-07-19 15:25  MrXiaoK  阅读(283)  评论(0)    收藏  举报