首页 > 数据库 >mysql

mysql

时间:2023-03-13 19:35:39浏览次数:38  
标签:编码 UTF 约束 插入 mysql null 主键

一、计算机如何存储字符 如何存储英文字符

  1. ASCII
:对英文字母及其符号进行了编码,总共有128个
  1. Latin-1
:对欧洲字符进行了编码,总共有256个,兼容ASCII 如何存储中文字符
  1. GB2312
:对6000多常用的汉字进行了编码,兼容ASCII
  1. GBK
:对2万多汉字进行了编码,兼容GB2312
  1. BIG5
:台湾繁体字编码
  1. Unicode
:对世界上主流国家常用的语言进行了编码,具体分为三种存储方案,UTF-8、UTF-16、UTF-32 MySQL中文乱码产生的原因 MySQL默认使用Latin-1编码,没有对汉字进行编码 解决MySQL中文乱码
  • 确保脚本文件的编码为UTF-8
  • 设置客户端连接服务器端的编码为UTF-8
set names utf8;
  • 设置服务器端创建数据库,存储字符的编码为UTF-8
  create database xz charset=utf8;   针对于有部分同学交互模式下依然有乱码:① 退出交互模式② 手动设置命令行的编码为UTF-8 chcp 65001③ 重新进入到交互模式,查询数据即可解决查看时的乱码 练习 编写脚本文件01_sina.sql,先删除再创建数据库sina,设置编码为UTF-8,进入数据库sina,创建保存新闻数据的表news,包含的列有编号、标题、发表时间、来源、详情;插入若干条数据。 二、列类型 在创建数据表的时候,指定的列所能存储的数据类型 create table news( nid 列类型 ); 数字型 tinyint 微整型,占1个字节,范围-128~127 smallint 小整型,占2个字节,范围-32768~32767 int 整型,占4个字节,范围-2147483648~2147483647 bigint 大整型,占8个字节,范围 decimal(M,D) 定点小数,小数点不会发生变化,M代表总的有效位数,D代表小数点后的有效位数。(工资) boolean 布尔型,只有两个值,分别是true和false,通常用于存储只有两个值的数据,例如:是否在线、性别、是否已婚..... true和false是关键字,不能加引号 MySQL中没有真正的布尔型,会转为tinyint,true转为1,false转为0 日期时间型 date 日期型, 格式 '2022-10-20' time 时间型,格式 '14:29:30' datetime 日期时间型, 格式 '2022-10-20 14:29:30' 字符串型 varchar(M) 变长字符串,不会产生空间浪费,数据操作速度相对慢,通常用于存储变化长度的数据,例如:标题、姓名、文章详情... M的最大值是65535 char(M) 定长字符串,可能会产生空间浪费,数据操作速度相对快,通常用于存储固定长度的数据,例如:身份证号码、手机号码... M的最大值是255 text(M) 大型变成字符串,M的最大值是2GB
  varchar(5) char(5)
a a\0 a\0\0\0\0
ab ab\0 ab\0\0\0
一二三 一二三\0 一二三\0\0
选择使用合理的列类型 create table t1( id int, title varchar(64), is_have boolean, -- true -1 false -0 ctime datetime, phone char(11), detail varchar(10240) );   三、列约束 MySQL可以对插入的值进行验证,只有通过验证才允许插入,例如:编号不能出现重复、性别只能是男或者女、.... create table laptop( lid int 列约束 ); 1.主键约束 primary key :声明了主键约束的列,不能插入重复的值,一个表中只能有一个主键约束,通常加在编号列,会加快数据的查询速度。 null:空,表示一个暂时无法确定的值,例如:无法确定一个商品的价格,无法确定一个员工性别.... 主键约束的列禁止插入null 2.非空约束 not null:声明了非空约束的列,不允许插入null   3.唯一约束 unique:声明了唯一约束的列,禁止插入重复的值,允许插入null,甚至多个null 主键约束 = 唯一约束 + 非空约束   自增列 auto_increment:自动增长,声明了自增列,在插入值的时候,只需要赋值为null,就会获取最大值然后加1插入。 自增列必须添加在整数形式的主键列上        

标签:编码,UTF,约束,插入,mysql,null,主键
From: https://www.cnblogs.com/liangdian0828/p/17212533.html

相关文章

  • Docker搭建MySQL集群
    采用MySQL架构PerconaXtraDBCluster1.安装PXC集群#用pull拉PXC5.7.20版本[root@localhost~]#dockerpullpercona/percona-xtradb-cluster:5.7.205.7.20:Pulli......
  • mark:通过实现从mysqldump全量导出中导出某个库的所有行
    环境python3 mysqldump_export_one_db.py#encoding=utf-8'''用于mysqldump--all-databases...全库导出数据后,需要从SQL文件中抽取某个库的信息生成新SQL文件,如果......
  • mysql查询所有表+表结构
    selecttable_nametableName,engine,table_commenttableComment,table_collationtableCollation,create_timecreateTimefrominformation_schem......
  • 14.mysql主从复制之从服务器宕机处理
    1.查看从库上mysql的错误日志,里面有记录主从挂掉时的binlog信息2.有了binlog和position信息后,只需要重新在从库上进行changemasterto配置即可,配置后开启slave状态,没有报......
  • 15.mysql优化建议一
    硬件优化:1.为提高数据库的IOPS性能,可以使用ssd或者pcie-ssd告诉磁盘设备2.当数据库系统tps过高或者业务量较高时,一定要配置阵列卡,阵列级别选择REID1+0,而不要选择其他格式......
  • 16.MySQL数据库之mysql-5.7 show engine innodb status 详解,常用的地方一、死锁分析 
     一、show engine innodb status 简介:show engine innodb status 是mysql提供的一个用于查看innodb引擎时间信息的工具,就目前来说有两处比较常用的地......
  • Mysql优化
    1,表设计一定要优化,冗余数据最少,少用连接查询。如果在实际应用中,使用了极其复杂的连接,子查询,则数据表的设计得要重新考虑了。2,尽量用char而不是varchar,因为固定长度得str......
  • [转]mysql问题解决SELECT list is not in GROUP BY clause and contains nonaggregate
    原文地址:mysql问题解决SELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn-慕尘-博客园(cnblogs.com)今天在Ubuntu下的部署项目,发现一些好......
  • MySQL当中between的边界问题
    between边界:闭区间,notbetween边界:开区间日期边界问题,如:'2023-03-1012:00:00','2023-03-1312:00:00'如果用between '2023-03-10' and '2023-03-13' ,这样'2023-......
  • 16条MySQL使用规范
     1.禁止使用select*阿里开发规范中,有这么一句话:**select***会查询表中所有字段,如果表中的字段有更改,必须修改SQL语句,不然就会执行错误。查询出非必要的字段,徒增......