1029 MySQL操作表 MySQL操作表数据行

zbcaicai 2019-10-29

数据库介绍

架构关系

数据库服务器:运行数据库管理软件
数据库管理软件:管理数据库
数据库:即文件夹,用来组织文件/表
表:即文件,用来存放多行内容/多条记录

mysql账号操作

mysql基于socket编写的C/S架构软件

数据库操作

语法:
create database 数据库名 charset 字符编码;
数据库命名规则:
字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字,如create\select\use等等
不能单独使用数字
最长128位

语法:
drop database 数据库名;

语法:
改变编码格式
alter database 数据库名 charset 字符编码
改变数据库名称:
只能删了重建,后续学习如何保存
drop database 数据库名;
create database 数据库名;

语法:
show databases;

表操作

对表结构的操作

选择表

语法:
use 表名;
唯有此语法不加分号也行

列约束条件

auto_increment 自增
primary key 主键索引,加快查询速度,列的值不能重复
not null 非空
default 设置默认值

列类型

数字

整型:
tinyint
smallint
int(*******)推荐使用
mediumint
bigint
整数类型
取值范围
unsigned 加上代表不能取负数 只适用于整型
浮点型:
float:不一定精确
decimal(m,d):非常精确的数字,m是数字总个数(负号不算),d是小数点后个数,四舍五入。

字符串

char(长度):
定长,无论插入的字符是多少个,永远固定占规定的长度
varchar(长度):
可变长度,根据插入的字符串的长度来计算所占的字节数,但是有一个字节是用来保存字符串的大小的
注意点:如果不能确定插入的数据的大小,一般建议使用varchar(255)

时间日期类型

YEAR
YYYY(1901/2155)
DATE
YYYY-MM-DD(1000-01-01/9999-12-31)
TIME
HH:MM:SS(‘-838:59:59‘/‘838:59:59‘)
DATETIME (********) #最常用的
YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)
TIMESTAMP
YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)

枚举类型

enum():列出所有的选项

语法:
创建表
create table 表名(
字段1名 数据类型(字符数) 约束条件,
字段2名 数据类型(字符数) 约束条件;
);
新增列:
alter table 表名(
add 字段名 数据类型(完整的约束条件),
add 字段名 数据类型(完整的约束条件);
);
alter table 表名
add 字段名 数据类型(完整的约束条件) first;
alter table 表名
add 字段名 数据类型(完整的约束条件) after 字段名;

语法:
删除表:
drop table 表名;
删除列:
alter table 表名 drop 字段名;

改表名:
alter table 表名 rename 新表名
修改字段:
alter table 表名 modify 字段名 数据类型(完整的约束条件);
alter table 表名
change 旧字段名 新字段名 新数据类型(完整的约束条件);

基本结构:desc 表名;或者descirbe 表名;
更详细定义信息:show create table 表名;

复制表结构

create table 表名 like 表名;

表记录操作

对表数据的操作

语法:
插入完整数据(顺序插入)
insert into 表名(字段1,字段2,字段3...字段n) values(值1,值2,值3...值n);
insert into 表名 values(值1,值2,值3...);
指定字段插入数据
insert into 表名(字段1,字段2,字段3...) values(值1,值2,值3...);
插入多条记录
insert into 表名 values
(值1,值2,值3...值n),
(值1,值2,值3...值n),
(值1,值2,值3...值n);
插入查询结果
insert into 表1名(字段1,字段2,字段3...字段n) select (字段1,字段2,字段3...字段n) from 表2名 where ...;

删数据

语法:
delete from 表名 where 筛选条件
truncate from 表名 ## 没有where条件,直接删除整个表
delete与truncate的区别:
delete 之后,插入的数据从上一次主键自增加1开始,truncate则是从1开始
delete 删除,是一行一行删除,truncate:全选删除,truncate删除的速度是高于delete的

语法:
一次只能修改一条记录,可以修改这条记录的多个值
update 表名 set 字段1名=值1,字段2名=值2,字段3名=值3 where 条件;

语法:
select * from 表名;
select 字段名 from 表名 where 筛选条件 # 没有条件就选中列中所有值
筛选条件:
字段名 相关
> >= < <= != <>
between ... and...
in (a,b,c)
not in (a,b,c)
like ‘x%‘ 以x开头
like ‘%x‘ 以x结尾
like ‘%x%‘ 包含x
distinct 避免重复

相关推荐