mysql 数据约束条件_mysql数据类型和约束条件

上周内容回顾

库的增删改查

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.间隔客商操作语句至少敲三遍

做到脱稿

学习就是反复记忆的过程!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值