linux中mysql服务的数据类型和约束,以及常用的sql语句

数据类型和sql语句

数据类型和完整性约束

字符串类型

复制代码
字符串类型
char:列的长度固定为创建表时声明到长度:0-255
varchar:列中的值为可变字符串,长度:0-65535
在检索时,char列删除了尾部空格,而varchar则保留这些空格
					
binary和varbinary类似于char和varchar,
不同的是他们包含二进制字符,而不包含非二进制字符串
					
枚举型字符类型:enum:单选,只能在给定的范围选一个值				
集合型字符类型:set:多选,在给定的范围选一个或多个以上的值

数值类型

复制代码
数值类型
整数类型:int
tinyint(有符号型最大值127)
int整型的宽度仅显示为宽度,不是限制,因此建议整形无需指定宽度
整型的宽度仅为显示宽度,不是限制。因此建议整型无须指定宽度。
						
浮点数类型:float
浮点数和定点数都可以用类型名称后面加(M.D)的方式来表示(M.D)表示一共显示M位数字(总数位+小数位)
其中D位于小数点后面,M和D又称为精度和标度
float经常会出现小数部分数据丢失情况,原因是小数部分十进制转换二进制不能完全匹配,只能就近匹配,所以会造成数据丢失情况,小数位数多的建议使用double和decaimal
						
float:浮点型,含字节数4,32bit
double:双精度实型,含字节数8,64bit
decimal:数字型,128bit

时间和日期类型

复制代码
data:年月日
time:时分秒
datatime:年月日 时分秒
year:年份

注意:
插入年份时,尽量使用4位值
插入两位年份时,以69为分界线,<=69,是20开头
						 > 69,是19开头

完整性约束

复制代码
约束又称索引。用于保证数据的完整性和一致性
				
primary key(pk):标识该字段为该表的主键,可以唯一的标识记录,不可以为空
foreign key(fk):表示该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联
unique key(uk):标识该字段的值是唯一的,可以为空,一个表中可以有多个uk
auto_increment:标识该字段值自动增长,(整数类型,而且为主键)
default:为该字段设置默认值
not null:标识该字段不能为空值
unsigned:无符号型
zerofill:使用0填充
			
主键处理可以写在某一列的后面,也可以在独立一行声明
多列做主键称为复合主键

sql语句

增加

创建数据库

sql 复制代码
create database 数据库名;

create database 数据库名 default charset 'UTF8';      //创建数据库并制定字符类型

mysql创建用户

sql 复制代码
grant all on *.* to '用户名'@'%' identified by "密码";

建表

sql 复制代码
create table 表名(表头 字段类型(字符长度),表头 字段类型);

create table 表名 (表头,表头) values("内容","内容")engine =innodb;   //建表时候指定引擎


例:create table 表名(name varchar(50),age int);

插入数据

sql 复制代码
insert into  表名 values  ("内容","内容"); 
insert into 表名 (表头,表头) values("内容","内容");

例:insert into 表名 (name,age) values("xiaonan","21");

给表新增字段

复制代码
alter table 表名 add 新增字段名 新增字段类型 新增字段约束 插入哪里;

after 某个字段    //在某个字段后插入
first            //加入到最开始
不写             //默认加入到最后

修改

修改表名

复制代码
rename table 原表名  to  新表名;

alter table 原表名 rename to 新表名;

修改字段名称以及约束、字段类型

复制代码
alter table 表名 change 原字段名 修改后的字段名 字段类型 约束;

修改字段类型以及约束条件

复制代码
alter table 表名 modify 字段名 字段类型 约束;

修改字段

sql 复制代码
alter table 表名 change  旧字段  新字段 修饰符;    //change修改字段名称,类型,约束,顺序

alter table 表名 modify  字段  属性 修饰符;       //modify 不能修改字段名称

查询

查询当前数据库时间

复制代码
select now();

查询当前登录数据库的用户

复制代码
select user();

查询当前用户权限

复制代码
show grants;       //查询用户创建语句

查询数据库

sql 复制代码
show databases;

查询当前所在库

复制代码
select database();

查询表

复制代码
show tables;

查询建造过程

复制代码
show create table 表名;     //查询建表过程

show create database 库名;   //查询建库过程

查询表内容

复制代码
select * from 表名;

查询表结构

复制代码
desc 表名;

删除

删除字段

复制代码
alter table  表名  drop  字段;  

删除数据

复制代码
delete from  表名 where  主键字段=' ';  

delete from 表名;   //删除表中所有数据

删除表

复制代码
drop table 表名;

删除库

复制代码
drop database 库名;
相关推荐
易保山15 分钟前
MIT6.S081 - Lab11 networking(网络栈)
linux·操作系统·c
2302_7995257436 分钟前
【Linux】第十二章 安装和更新软件包
linux·运维·服务器
YH.1 小时前
MySQL 主从复制
mysql
ImAlex1 小时前
Linux脚本实现自动化运维任务实战案例:系统自动备份、日志轮转、系统更新、资源监控、自动化定时任务调度
linux·运维
杨凯凡1 小时前
Linux日志分析:安全运维与故障诊断全解析
linux·运维·服务器
laimaxgg2 小时前
MySQL复合查询
数据库·mysql
洞窝技术2 小时前
MYSQL:关于索引你想知道的
后端·mysql
愚润求学2 小时前
【Linux】进程优先级和进程切换
linux·运维·服务器·c++·笔记
jianghx10242 小时前
Centos 7 ssh连接速度慢(耗时20秒+)
linux·centos·ssh
岁月不能老3 小时前
Linux-Part8-考试(学习Linux第8天)
linux·运维·学习