day34_数据库mysql
目录
1、数据库介绍
1.1 架构关系
数据库服务器:运行数据库管理软件
数据库管理软件:管理数据库
数据库:即文件夹,用来组织文件/表
表:即文件,用来存放多行内容/多条记录
1.2 mysql账号操作
mysql基于socket编写的C/S架构软件
1、数据库操作
1.1 增
语法:
create database 数据库名 charset 字符编码;
数据库命名规则:
字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字,如create\select\use等等
不能单独使用数字
最长128位
1.2 删
语法:
drop database 数据库名;
1.3 改
语法:
改变编码格式
alter database 数据库名 charset 字符编码
改变数据库名称:
只能删了重建,后续学习如何保存
drop database 数据库名;
create database 数据库名;
1.4 查
语法:
查看所有的数据库
show databases;
查看当前所在的数据库
select database()
2、表操作
对表结构的操作
2.0 选择表
语法:
use 表名;
唯有此语法不加分号也行
2.1 列约束条件
auto_increment 自增
primary key 主键索引,加快查询速度,列的值不能重复
not null 非空
default 设置默认值
2.2 列类型
2.2.1 数字
- 整型
tinyint
smallint
int (************************) 推荐使用
mediumint
bigint
a.整数类型
b.取值范围
c.unsigned 加上代表不能取负数 只适用于整型
- 浮点型
float: 不一定精确
decimal(m,d): 非常精确的数字,m是数字总个数(负号不算),d是小数点后个数,四舍五入。
2.2.2 字符串
char(长度):
定长,无论插入的字符是多少个,永远固定占规定的长度
varchar(长度):
可变长度,根据插入的字符串的长度来计算所占的字节数,但是有一个字节是用来保存字符串的大小的
注意点:如果不能确定插入的数据的大小, 一般建议使用 varchar(255)
2.2.3 时间日期类型
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 年某时)
实例:
2.2.4 枚举类型
enum() :列出所有的选项
2.1 增
语法:
创建表
create table 表名(
字段1名 数据类型(字符数) 约束条件,
字段2名 数据类型(字符数) 约束条件
)charset utf8;
新增列:
alter table 表名
add 字段名 数据类型(完整的约束条件),
add 字段名 数据类型(完整的约束条件);
alter table 表名
add 字段名 数据类型(完整的约束条件) first;
alter table 表名
add 字段名 数据类型(完整的约束条件) after 字段名;
2.2 删
语法:
删除表:
drop table 表名;
删除列:
alter table 表名
drop 字段名;
2.3 改
改表名:
alter table 表名
rename 新表名
修改字段:
alter table 表名
modify 字段名 数据类型(完整的约束条件);
alter table 表名
change 旧字段名 新字段名 新数据类型(完整的约束条件);
2.4 查
基本结构:desc 表名;
或者descirbe 表名;
更详细定义信息:show create table 表名;
2.5 复制表结构
create table 表名 like 表名;
3、表记录操作
对表数据的操作
3.1 增
语法:
插入完整数据(顺序插入)
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 ...;
3.2 删数据
语法:
delete from 表名
where 筛选条件
truncate table 表名 ## 不能跟where条件,直接删除整个表数据,保留表结构
delete与truncate的区别:
1、delete 之后,插入的数据从上一次主键自增加1开始,truncate则是从1开始
2、delete 删除,是一行一行删除,truncate:全选删除,truncate删除的速度是高于delete的
3.3 改
语法:
# 一次只能修改一条记录,可以修改这条记录的多个值
update 表名 set
字段1名=值1,
字段2名=值2,
字段3名=值3
where 条件;
3.4 查
语法:
select * from 表名;
select 字段名 from 表名
where 筛选条件 # 没有条件就选中列中所有值
筛选条件:
1、字段名 相关
> >= < <= != <>
between ... and...
in (a,b,c)
not in (a,b,c)
like 'x%' 以x开头
like '%x' 以x结尾
like '%x%' 包含x
distinct 避免重复