mysql-210712-05
- 创建表
- MySQL中字段的数据类型
- char和varchar
- 插入语句
- 删除表
- 复制表
- 将查询结果插入表中
- 修改数据
- 删除数据
- 增删改查术语
创建表
语法
create table 表名(
字段名01 数据类型,
字段名02 数据类型,
字段名03 数据类型,
...
);
表名在数据库中一般以:
t_ 或 tbl_ 开始
案例1
创建学生表
学生信息包括:
学号、姓名、性别、班级编号、生日
学号:bigint
姓名:varchar
性别:char
班级编号:varchar
生日:char
create table t_student(
sno bigint,
sname varchar(255),
ssex char(1),
sclassno varchar(255),
sbirth char(10)
);
MySQL中字段的数据类型
类型 | 描述 |
---|
char(长度) | 定长字符串,存储空间固定,适合作为主键或外键( String ) |
varchar(长度) | 变长字符串,存储空间等于时间数据空间( StringBuffer、StringBuilder ) |
double(有效数字位数,小数位) | 数值型 |
float(有效数组位数,小数位) | 数值型( java中float、double ) |
int(长度) | 整型 ( java中int ) |
bigint(长度) | 长整型(java中long) |
date | 日期型 年月日( Java中java.sql.Date类型 ) |
datetime | 日期型 年月日 时分秒 毫秒 |
time | 日期型 时分秒 |
BLOB | Binary Large Object (二进制大对象)(存储图片,视频等流媒体)(Object) |
CLOB | Character Large Object (字符大对象)(存储较大文本,比如,4G字符串)(Object) |
其他… | |
BLOB
是二进制,
使用java语言的存储的时候,
需要用流(IO)操作向数据库中添加数据
char和varchar
在实际开发中,当某个字段中的数据长度不发生变化时,是定长的,例如:性别、生日、等都是才用char
当一个字段的数据长度不确定时,例如:简介、姓名等都是采用varchar
日期一般格式为:
1999-09-09 10个字节
1999-09-09 09:09:09 19个字节
插入语句
语法格式
insert into 表名 (字段1,字段2,字段3...) values (值1,值2,值3...);
字段名的数量和值的数量相同,并且数据类型要相对应
-------------------------------------------------------------------
insert into 表名 values (值1,值2,值3...);
也可以省略字段名,但是值的类型必须和数据库中列中的类型顺序保持一致
案例1
mysql> insert into t_student (sno,sname,ssex,sclassno,sbirth) values (1,'bgy01','1','z20-03','1999-09-09');
mysql> insert into t_student values(2,'bgy02','1','z20-03','2000-02-02');
案例2(字段名不全)
mysql> insert into t_student (sname) values ('bgy-yyds');
Query OK, 1 row affected (0.00 sec)
mysql> select * from t_student;
+------+----------+------+----------+--------+
| sno | sname | ssex | sclassno | sbirth |
+------+----------+------+----------+--------+
| NULL | bgy-yyds | NULL | NULL | NULL |
+------+----------+------+----------+--------+
1 row in set (0.00 sec)
其他字段不写,会自动填充为NULL
案例3(插入多行)
insert into t_student
(sno,sname,ssex,sclassno,sbirth)
values
(1,'bgy01','1','z20-03','1999-09-09'),
(2,'bgy02','1','z20-03','2000-02-02');
删除表
// 如果这个表存在的话就删除
drop table if exists t_student;
复制表
语法
create tabel 表名 as select语句;
将查询结果当做表创建出来
案例1
mysql> create table emp01 as select * from emp;
mysql> show tables;
+--------------------------------+
| Tables_in_mysql_test_210711_01 |
+--------------------------------+
| dept |
| emp |
| emp01 |
| salgrade |
| t_student |
+--------------------------------+
5 rows in set (0.00 sec)
案例2
mysql> create table emp02 as select empno,ename from emp;
mysql> show tables;
+--------------------------------+
| Tables_in_mysql_test_210711_01 |
+--------------------------------+
| dept |
| emp |
| emp01 |
| emp02 |
| salgrade |
| t_student |
+--------------------------------+
6 rows in set (0.00 sec)
mysql> desc emp02;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| empno | int | NO | | NULL | |
| ename | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
将查询结果插入表中
语法格式
insert into 表名 select查询语句;
案例1
// 复制表
mysql> create table dept01 as select * from dept;
// 将查询结果插入表中
mysql> insert into dept01 select * from dept;
mysql> select * from dept01;
+--------+------------+----------+
| DEPTNO | DNAME | LOC |
+--------+------------+----------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
+--------+------------+----------+
8 rows in set (0.00 sec)
修改数据
语法格式
update
表名
set
字段1,字段2,字段3...
where
条件;
没有条件将表中的数据全部更新
案例1
// 将部门10的loc修改为shanghai,将部门名称修改为renshibu
update
dept01
set
loc='shanghai' , dname='renshibu'
where
deptno=10;
案例2
// 更新全部数据
update
dept01
set
loc='x',dname='y';
删除数据
语法格式
delete from 表名 where 条件;
注:没有条件全部删除
delete删除可以事务回滚
delete删除相当于把表格清空,但是表格中的单元格还在
删除很大的表
// 表被截断,不可回滚
// 永久丢失,永久丢失,永久丢失
truncate table 表名;
相当于删除的只剩下表头
案例1
delete from t_student where sno=1;
delete from t_student;
truncate table dept01;
增删改查术语
CRUD 操作
Create 增
Retrieve 检索
Update 修改
Delete 删除