上周内容回顾
库的增删改查
show databases;
show create databese db;
create database db1;
alter datebase charset='gbk'
drop database db1;
表的增删改查
# 操作表之前一定要明确库
use db1;
# 查看当前所在的库
select database();
show tables;
show create table t1;
desc t1;
create table t1(id int,name varchar(32));
alter table modify/rename/change ...
drop table t1;
记录的增删改查
select * from t1;
select id,namm,password from t1;
insert into t1 values(1,'jason');
insert into t1 values(),(),();
update t1 set name='jasonNB' where id=1;
delete from t1 where id>3;
存储引擎
show engines;
myisam
innodb现在主要使用的存储引擎
memory
blackhole
create table t1(id int,name char(32)) engine='Memory';
mysql的基本数据类型整型
tinyint
smallint
int
bigint
# 默认都是自带正负号的
create table t2(id int unsigned);
# unsigned不带符号
mysql的基本数据类型之浮点型
float
float(255,30)
double
double(255,30)
decimal
decimal(65,30)
精确度
float < double < decimal
# 1.有时候看似需要用数字存储的数据内部可能使用的是字符类型,字符类型可以避免存储转化的问题
# 2.python对数字其实不是很敏感,之所以能够做数据分析是因为模块(聚合怪)
mysql的基本数据类型之字符类型
char
定长
varchar
变长
# 子分类型括号里面的数字用来限制存储的字符个数
严格模式
show variables like '%mode%'
set global sql_mode='STRICT_TRANS_TABLES'
今日内容概要
数字类型与字符类型括号后面的数字区别
字符类型括号里的数字用来表示存储限制
整型类型括号里的数字用来表示展示长度(不够是否zerofill填充等,一般默认设置就可以了)
数据类型之时间类型
以后主要是模块收集而来的时间而非自己输入
数据类型之枚举与集合(单选与多选)
一选一,比如统计人的性别,国家等
enum 语句
多选多或多选一,如兴趣爱好
set 语句
创建表的完整语法
修改表
查询流程
插入数据的两种方式
针对主键
今日内容详细
数字类型与字符类型括号后面的数区别
1.我们知道字符类型括号里面的数字里面的标识用来表示存储限制
2.针对整型其实我们需要额外注意并不是用来标识存储限制
整型后面的数字回用于控制展示长度的,并且我们在定义整型字段的时候根本无需制定,默认使用的就可以了
# zerofill数字不够用0填充
create table ti(id int(4) zerofill);
日期类型
date
# 年月日
datetime
# 年月日时分秒
time
# 是分秒
year
# 年
create table user(id int,
name char(16),
birth date,
register_time datatime,
study_time time,
join_date year);
# 手动模拟时间数据
insert into user values(x,x,x,x,x,x)
枚举类型
其实就是多选一,比如统计人的性别
create table userinfo(
id int,
name varchar(32),
gender enum('male','female','others')
);
# 使其只能进行选择,而非输入
集合类型
其实就是多选多(多选一),比如统计人的爱好
create table user1(
id int,
name varchar(32),
hobbies set('basketball','football','doublecolorball')
);
创建表的完整语法
create table 表名(
字段名1 字段类型(宽度) 约束条件,
字段名2 字段类型(宽度) 约束条件,
);
1.字段名和字段类型是必须的!!!
2.宽度和约束是可选的(按需求)
3,约束条件可以有多个(空格隔开即可)
4.常见表的最后一个字段结尾不能加逗号
字段的约束条件
unsigned无符号
zerofill 0填充
not null
# 非空输入某一个字段必须有内容,但是也可以输入的是('') 结果也是空
not null
create table t1(
id int,
name varchar(32) not null
);
default
# 默认值 不进行输入便选定一个默认的数值输出结果
create table t2(
id int,
name varchar(32),
gender enum('男','女','其他') default '男'
);
unique
# 唯一/联合唯一不能重复的唯一值,可以是多个组合但是单个字段可以重复,多个字段的组合不能重复
create table t3(
id int unique,
name varchar(32) unique
);
# 联合唯一
create table t4(
id int,
ip varchar(32),
port int,
unique(ip,port)
);
primary key主键
create table t5(
id int primary key,
name char(32)
);
1.在约束层面上的效果等价于not null 加 unique
2.innodb存储引擎都规定了所有的表都应该有一个主键字段
'''
1.如果·没有主键字段且表中有非空且唯一的字段会自动升级
2.如果没有主键字段且表中也没有其他带有约束条件的字段,那么innodb会采用采用内部隐藏的一个字段位主键,但是该字段无法使用到
3.我们在创建表的时候应该设置一个id字段并且id字段是表的主键
'''
auto_increment 自增 其实就是专门给primary key用的
################################
'''以后我们自创建表的时候,针对主键字段固定按照下列的语句书写'''
主键字段名 int primary key auto_increment
###################################
# 联合主键:多个字段联合起来作为表的一个主键,本质还是一个主键(了解)
create table t18(
ip char(16),
port int,
primary key(ip,port)
);
desc t18;
# 非空且唯一
修改表
# mysql对大小写并不敏感
语法:
1. 修改表名
ALTER TABLE 表名
RENAME 新表名;
2. 增加字段
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…],
ADD 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] FIRST;
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;
3. 删除字段
ALTER TABLE 表名
DROP 字段名;
4. 修改字段 # modify只能改字段数据类型完整约束,不能改字段名,但是change可以!
ALTER TABLE 表名
MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
查询流程
1.客户端输入sql语句
2.基于网络将sql语句发送给服务端
3.腐竹段校验审核执行sql语句
4.将sql语句的结果给予网络返回给客户端
5.客户端收到信息后渲染成表给用户看
# 了解
只复制表数据语句
create table t8 select * from t7;
只复制表结构语句
create table t9 like t7;
插入数据的两种方式
insert into t1 values(按照字段依次填值)
insert into t19(id) values(按照字段依次填值)
针对主键
1.不会因为数据的删除而自动重置/回退
# 在分析中有利于有记录利于工作进行 不推荐直接完全格式化
2.如果真的想重置主键只能格式化表
delete from 不可以
truncate 可以
作业
1.今日笔记整理
2.间隔客商操作语句至少敲三遍
做到脱稿
学习就是反复记忆的过程!!!!!!!!!