数据库
首页 > 数据库> > 数据库2/字符编码/配置文件/字段类型/约束条件

数据库2/字符编码/配置文件/字段类型/约束条件

作者:互联网

mysql基础2

字符编码与配置文件

\s  # 查看数据库基本信息(用户、字符编码)
------------------------------------------

mysql  Ver 14.14 Distrib 5.6.44, for Win64 (x86_64)

Connection id:          6 
Current database:
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.6.44 MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    gbk
Conn.  characterset:    gbk
TCP port:               3306
Uptime:                 6 hours 42 min 50 sec

Threads: 1  Questions: 12  Slow queries: 0  Opens: 67  Flush tables: 1  Open tables: 60  Queries per second avg: 0.000
  #字符编码配置
  
  [mysqld]      #服务端配置块
      character-set-server=utf8
      collation-server=utf8_general_ci
      
  [client]  	  #客户端配置块
      default-character-set=utf8
  [mysql]
      default-character-set=utf8 
      
   ---------------------------注意事项--------------------------------
  [mysqld]      #服务端配置块 修改后,数据库服务需要重新起动
  

存储引擎

mysql-官网-存储引擎

事务,XA协议,两段提交

查看存储引擎命令

mysql> show engines;
序号 engine/引擎名称 support/支持 Comment/描述 Transactions/事务 XA/一种协议 Savepoints/保存点
1/重要 InnoDB default/默认使用 Supports transactions, row-level locking, and foreign keys
支持事务、行级锁定和外键
YES/支持 YES/支持 YES/支持
2/重要 MyISAM YES MyISAM storage engine no no no
3 BLACKHOLE YES /dev/null storage engine (anything you write to it disappears)/ no no no
4 CSV YES CSV storage engine
5 MEMORY YES Hash based, stored in memory, useful for temporary tables/
基于哈希存储在内存中,对临时表有用
no no no
6 ARCHIVE YES Archive storage engine no no no
7 FEDERATED NO Federated MySQL storage engine NULL NULL NULL
8 PERFORMANCE_SCHEM YES Performance Schema no no no

创建表的完整语法

create table 表名(
	 字段名1 字段类型(数字) 约束条件,
	 字段名2 字段类型(数字) 约束条件,
    字段名3 字段类型(数字) 约束条件
)engine=存储引擎;

--------重要------------------
1.字段名和字段类型是必须的(至少写一个)
2.数字跟约束条件是可选的(可有可无)
3.约束条件可以写多个 空格隔开即可
4.最后一个字段的结尾千万不能加逗号

字段类型之整型

整型名称 大小 范围(无负号) 范围(有负号) 用途
tinyint 1bytes (0,255) -128~127 小整数
smallint 2bytes (0,65 535) (-32 768,32 767) 大整数值
mediumint 3Bytes (0,16 777 215) (-8 388 608,8 388 607) 大整数值
int 4bytes 0,4 294 967 295) (-2 147 483 648,2 147 483 647) 大整数值
bigint 8bytes (0,18 446 744 073 709 551 615) (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) 极大整数值

字段类型之浮点型

浮点型 精度
float 单精度
double 双精度
decimal 十进制小数型

验证精确度问题

  --------------例子-----------------------------
  create table t10(id float(255,30));
  create table t11(id double(255,30));
  create table t12(id decimal(65,30));
  insert into t10 values(1.11111111111111111111111111111);
  insert into t11 values(1.11111111111111111111111111111);
  insert into t12 values(1.11111111111111111111111111111);
  
  --------验证结果-----------
  mysql> select * from t10,t11,t12 \G;
  *************************** 1. row ***************************
  id: 1.111111164093017600000000000000
  id: 1.111111111111111200000000000000
  id: 1.111111111111111111111111111110
  1 row in set (0.00 sec)
  
  
  --------总结------------
  精确度
  float < double < decimal
  一般情况下float足够使用,如果追求非常完美的精确度,可以用字符串代替

字符串类型之字符类型

字符类型 优点 缺点
char 定长 整存整取 速度快 浪费存储空间
varchar 变长 节省存储空间 存取数据的速度慢于char
  char(4)  
      最大只能存储四个字符 如果超过范围则直接报错
      如果不超出范围 则用空格填充至四个字符
  
  -------------------------------------------
  varchar(4)
      最大只能存储四个字符 如果超过范围则直接报错
      如f果不超出范围 则有几位就存几位
        
        
-----------验证两者区别------------------
create table t15(id int, name char(4));
create table t16(id int, name varchar(4));


mysql> insert into t15 value (1,'jason');
ERROR 1406 (22001): Data too long for column 'name' at row 1
    
mysql> insert into t15 value (1,'jaso');       #char必须插入四个字符
Query OK, 1 row affected (0.00 sec)

------------结果------------------------------
1.结果验证 超出范围两者都会报错

数字含义

数字大部分情况下都是用来限制字段的存储长度 但是整型除外!!!
	不是用来限制存储的长度 而是展示的长度

create table t13(id int(3)); 
create table t14(id int(3) zerofill);

总结
	以后涉及到整型字段的定义 类型后面不需要加括号写数字 除非有业务需求必须固定位数
    eg:
    	00000000013
    	00123123031

字段类型之枚举与集合

枚举
	多选一
    	eg:性别(男 女 其他)

create table t15(
	id int,
 	name varchar(32),
	gender enum('male','female','others')
);
集合
	多选多(包含多选一)
    	eg:爱好(唱 跳 rap)
create table t16(
	id int,
	name varchar(32),
	hobbies set('read','run','music','rap')
);

字段类型之日期类型

日期类型 表示
date 年月日
datetime 年月日时分秒
time 时分秒
year 年份
create table t17(
	id int,
	name varchar(32),
 	birth date,
  	reg_time datetime,
 	study_time time,
 	join_time year
);
insert into t17 values(1,'jason','2022-11-11','2000-11-11 11:11:11','11:11:11','1995');

mysql> select * from t17;
+------+-------+------------+---------------------+------------+-----------+
| id   | name  | birth      | reg_time            | study_time | join_time |
+------+-------+------------+---------------------+------------+-----------+
|    1 | jason | 2022-11-11 | 2000-11-11 11:11:11 | 11:11:11   |      1995 |
+------+-------+------------+---------------------+------------+-----------+
1 row in set (0.00 sec)

字段约束条件

insert into 表名 vlaues()  # 默认按照创建表的字段顺序添加
insert into 表名(字段) vlaues()  # 可以自定义字段顺序
=====================================================================================
1.unsigned	无负号
	id int unsigned
2.zerofill	零填充
	id int zerofill
3.not null	非空
	name varchar(32) not null
4.default 	默认值
	name varchar(32) default 'jason'
5.unique	唯一值
	id int unique   单列唯一
 	
 	host varchar(32)
 	port int		
	unique(host,port)  联合唯一

标签:约束条件,11,配置文件,no,int,数据库,table,create,id
来源: https://www.cnblogs.com/zongliang-ya/p/16589527.html