1、创建表
---1.1建表语句的语法格式
---1.2建表
---1.3常见的字段的数据类型
2、删除表
3、向表中插入数据
---3.1概述
---3.2插入数据的四种方式
4、default默认值
5、表的复制
---5.1定义
---5.2两种方式
---5.3将查询结果插入到某张表中
6、增/删/改表结构
---6.1语法结构
---6.2示例
7、update 修改数据
---7.1语法格式
---7.2safe-updates模式
---7.3例子
8、删除数据
---8.1语法格式
---8.2例子
---8.3删除大表中的数据
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型,
...
);
注意:
表名在数据库当中一般建议以t_
或者tbl_
开始。
VARCHAR长度最好是2的倍数,方便存储中文。
create table t_student(
no bigint,
name varchar(255),
sex char(1),
classno varchar(255),
birth char(10)
);
数据类型 | 占用字节数 | 描述 |
---|---|---|
char | char(n) | 定长字符串,存储空间大小固定使用char(2)来表示类型戒状态 |
varchar | varchar(n) | 变长字符串,存储空间等亍实际数据空间,只包含英文字符的字符串 |
int | 4个字节 | 表示整型,比如自增 ID 和表示數量 |
bigint | 8个字节 | 表示长整型,比如自增 ID(数量比较大的情况下) |
float(有效数字位数,小数位) | float(有效数字位数,小数位) | 数值型 |
double(有效数字位数,小数位) | double(有效数字位数,小数位) | 数值型 |
date | 8字节 | 表示日期和时间 |
BLOB | Binary Large Object (二进制大对象) | |
CLOB | Character Large Object(字符大对象) | |
其它….. |
insert into t_student(no,name,birth) values(1,‘Jack‘,‘1980-10-19‘);
insert into t_student(no,name,birth) values(1,‘Jack‘,str_to_date(‘1980-10-19‘,‘%Y-%m-%d‘));
insert into t_student(no,name,birth) values(1,‘Jack‘,now());
drop table t_student;
(如果数据库中没有该表格,则会报错)。drop table if exists t_student;
Insert into 表名(字段名1,字段名2,…) values(值1, 值1,…);
注意:字段和数值必须一一对应,字段与数据个数必须相同,数据类型必须一致。
1、向t_student 表格中所有字段插入数据。
Insert into t_student(
no, name, sex, classno, birth)
values(
1, ‘张三‘, ‘男‘, ‘高三十六班‘, ‘1999-09-09‘);
Insert into t_student(
no, name, sex, classno, birth)
values(
2, ‘李四‘, ‘男‘, ‘高三十六班‘, ‘1999-08-08‘);
2、向t_student 表格中部分字段插入数据。
Insert into t_student(
name, classno)
values(
‘王五‘, ‘高三十六班‘);
默认情况下,当表创建之后,没有指定约束也没指定默认值,系统默认值就是NULL ,默认值NULL表示:若插入的时候没有指定任何数据,默认插入 NULL 值。
目前王五的 no、sex、birth 值为 null ,我们可以往里插入值吗?
Insert into t_student(
no, sex, birth)
values(
3, ‘男‘, ‘1999-10-10‘);
以上执行insert语句只能导致底层数据表中新增一条记录,
若希望NULL值变为其它值,我们必须使用UPDATE更新语句。
3、向t_student 表格中所有字段插入数据(省略字段,但是要按照顺序插入)。
Insert into t_student
values(
3, ‘王五‘, ‘女‘, ‘高三六班‘, ‘1999-10-10‘);
4、一次插入多条数据。
Insert into t_student
(no, name, sex, classno, birth)
values
(4, ‘赵六‘, ‘男‘, ‘高三十六班‘, ‘1999-11-11‘),
(5, ‘周七‘, ‘女‘, ‘高三六班‘, ‘1999-12-12‘);
show variables like ‘%char%‘;
set character_set_results = ‘GBK‘;
1、创建表格时给字段设置默认值:default默认值。
create table t_student(
no bigint,
name varchar(255),
sex char(1),
classno varchar(255) default ‘高三十六班‘,
birth char(10)
);
1、将查询结果当作一张表创建。
2、语法结构:CREATE TABLE 表名 as select查询语句;
1、完全复制t_student表到t_student1:
create table t_student1 as
select * from t_student;
2、选择性复制t_student表到t_student2:
create table t_student2 as
select name, classno from t_student;
INSERT INTO 表名 select查询语句;
insert into t_student1
select * from t_student1
where classno = ‘高三十六班‘;
2、复制t_student表为t_student1,再将t_student表中数据插入到t_student1中。(在新建表上操作比较好、安全性高)
create table t_student1
as select * from t_student;
insert into t_student1
select * from t_student
where classno = ‘高三十六班‘;
新增:ALTER TABLE 表名 ADD 字段名 字段类型(长度);
修改:ALTER TABLE 表名 MODIFY 字段名 字段类型(长度);
删除:ALTER TABLE 表名 DROP 字段名;
1、给t_student表添加一个电话字段:
alter table t_student add tel varchar(10);
2、将字段tel长度扩展到20个长度
alter table t_student modify tel varchar(20);
3、将t_student 表中的tel字段删除
alter table t_student drop tel;
UPDATE 表名
SET 字段名 = 字段值,字段名 = 字段值
WHERE 条件;
注意:update如果没有条件限制,将把整张表的数据全部更新。
1、MySql运行在safe-updates模式下,该模式会导致非主键条件下无法执行update或者delete命令。
2、解决方法
show variables like ‘SQL_SAFE_UPDATES‘;
查看开关状态。
执行命令:SET SQL_SAFE_UPDATES = 0;
修改数据库模式(关;1为开)。
1、将编号no为5的classno改为高三九班,birth改为1999-03-03。
update t_student set
classno = ‘高三九班‘,
birth = ‘1999-03-03‘
where no = 5;
2、将所有性别sex改为男。
update t_student set
sex = ‘男‘;
3、将t_student表中的classno包含“十六”的改为“网红班级”。
update t_student set
classno = ‘网红班级‘
where classno like ‘%十六%‘;
4、将t_student表中名字为王五、赵六、周七的性别改为女。
update t_student
set sex = ‘女‘
where name in (‘王五‘, ‘赵六‘, ‘周七‘);
DELETE FROM 表名 WHERE 条件限制;
注意:若没有条件限制,会将表中所有记录全部删除。
1、将t_student 表中no为5的学生删除。
delete from t_student
where no = 5;
2、将t_student表中的数据全部删除。
delete from t_student;
3、将t_student表中classno为“网红班级”的name为“赵六”的删除掉。
delete from t_student
where classno = ‘网红班级‘ and
name = ‘赵六‘;
1、删除比较大的表中的数据时,delete效率低。
2、使用truncate table 表名;
,此时表被截断,不可回滚。
原文:https://www.cnblogs.com/yu011/p/13338348.html