代码编织梦想

启动客户端: mysql -uroot -p123456

创建数据库 create database if not exists test default character set utf8;

查看所有数据库 show databases;

切换数据库 use test;

删除数据库 drop database if exists test;

查看当前库中的所有数据表 show tables;

创建表

create table if not exists tb_student(
id bigint primary key auto_increment, -- 列名称 数据类型 列级约束
username varchar(20) not null
-- primary key(id) 表级约束
)engine=innodb default charset utf8;

查看表结构 desc tb_student;

查看详细创建信息 show create table tb_student;

SQL注释 一般在编写sql脚本文件时需要添加合理的注释信息

单行注释 select 1;

#说明信息 select 1;

-- 说明信息

多行注释 /*开头 */收尾

数据类型

存储数据是处理数据的第一步 。只有正确地把数据存储起来,才能进行有效的处理和分析。否则只能是 一团乱麻,无从下手。那么,怎样才能把用户各种经营相关的、纷繁复杂的数据,有序、高效地存储起 来呢? 在MySQL中,一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据 表、插入数据。

要先创建一个数据库,而不是直接创建数据表呢?

因为从系统架构的层次上看,MySQL数据库系统从大到小依次是【数据库服务器、数据库、数据 表、数据表的行与列】。 数据类型主要给列上添加域完整性约束。开发者设置列的数据类型后,DBMS会对添加的数据进行合法 性验证,如果不合法则报错,拒绝添加

类型名称 说明 tinyint 1B,取值范围-128到127 smallint 2B,取值范围为-32768到32767 mediumint 3B,取值范围为-8388608到8388607 int或者Integer 4B,取值范围为2e9 bigint 8B,取值范围为9e18 float 4B,单精度浮点型,取值范围3.4e38 double 8B,双精度浮点型,取值范围1.7e308,总位数不超过15位 decimal和numeric 采用定点存放浮点数,具体字节数取决于定义时设置的参数

unsigned设置列为无符号型,只能存放大于等于0的数据,没有负数。当使用无符号类型时取值范围由 于没有负数部分,从而导致上限扩大一倍

create table t3(id int unsigned);
mysql> insert into t3 value(-10); -- 不允许存储负数
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> insert into t3 value(255); -- 存储数据的上线扩大一倍
Query OK, 1 row affected (0.01 sec)

可以在类型名后添加括号,其中包含一个正整数,例如int(5),这里的含义并不是要求只能存放5位长度 的整数;含义是当进行查询时自动使用空格填充到5个长,如果真实数据长度大于5,则按实际输出

mysql> create table t4(id int(2));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into t4 values(99999);
Query OK, 1 row affected (0.01 sec)
mysql> insert into t4 values(9);
Query OK, 1 row affected (0.01 sec)
mysql> select * from t4;
+-------+
| id |
+-------+
| 99999 |
| 9 |
+-------+
2 rows in set (0.00 sec)

decimal和numeric作为字符串存储浮点数,可以实现浮点数的精确存储,并不是float和double种使用 二进制浮点数存储。使用方法numeric(总位宽,小数位数),小数位数必须小于等于总位宽;小数位数最 大值30,总位宽最大值为65,注意可能存储的数据会超出范围,其中的符号位和小数点不占位宽,

mysql> create table t5(id numeric(5,3));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into t5 values(99.999);
Query OK, 1 row affected (0.01 sec)
mysql> insert into t5 values(-99.999); -- 位宽统计中符号位不算
Query OK, 1 row affected (0.01 sec)
mysql> insert into t5 values(100); -- 整数超出范围报错
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> insert into t5 values(9.1235); -- 小数位数多余则自动四舍五入
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> insert into t5 values(9.1234);
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> select * from t5;
+---------+
| id |
+---------+
| 99.999 |
| -99.999 |
| 9.124 |
| 9.123 |
+---------+
4 rows in set (0.00 sec)

int和numeric

int类型不能保存小数位,存储小数时会自动进行四舍五入

mysql> create table t6(id int);
Query OK, 0 rows affected (0.03 sec)
mysql> insert into t6 values(99.99);
Query OK, 1 row affected (0.01 sec)
mysql> select * from t6;
+------+
| id |
+------+
| 100 |
+------+
1 row in set (0.00 sec)

numeric可以保存小数位,如果小数位数为0,可以模拟得到int类型的存储效果。采用的实际存储 方式为字符串。查询效率远低于int

mysql> create table t7(id numeric);
Query OK, 0 rows affected (0.03 sec)
mysql> desc t7;
+-------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id | decimal(10,0) | YES | | NULL | |
+-------+---------------+------+-----+---------+-------+
1 row in set (0.00 sec)

数值列的扩展属性 auto_increment一般用于主键,可以实现该列的自动生成连续整数值

mysql> create table t8(id int auto_increment,name varchar(20));
ERROR 1075 (42000): Incorrect table definition; there can be only one auto
column and it must be defined as a key
mysql> create table t8(id int primary key auto_increment,name varchar(20));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into t8 values(null,'yan1');-- 插入数据时不指定插入的值或者设置插入值
为null则会自动添加一个自增值
Query OK, 1 row affected (0.01 sec)
mysql> insert into t8 values(99,'yan1'); -- 如果插入数据时不指定对应的值,则自增长
max(id)+1;如果指定对应的值,则自增效果失效
Query OK, 1 row affected (0.01 sec)
mysql> insert into t8(name) values('yan1');
Query OK, 1 row affected (0.01 sec)
mysql> select * from t8;
+-----+------+
| id | name |
+-----+------+
| 1 | yan1 |
| 99 | yan1 |
| 100 | yan1 |
+-----+------+
3 rows in set (0.00 sec)

在使用AUTO_INCREMENT时,应注意以下几点: 1、AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。 2、设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为 UNSIGNED,这样序列的编号个可增加一倍。 3、AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复(即是主键或者主键的一部分)。 AUTO_INCREMENT数据列必须具备NOT NULL属性。 4、AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号 是127,如加上UNSIGNED,则最大为255。一旦达到上限,AUTO_INCREMENT就会失效。 当auto_incement达到上限后,再次申请下一个id时,得到的值保持不变。主键值重复报错 5、当进行全表删除时,MySQL AUTO_INCREMENT会从1重新开始编号。这是因为进行全表操作 时,MySQL实际是做了这样的优化操作:先把数据表里的所有数据和索引删除,然后重建数据表。 如果想删除所有的数据行又想保留序列编号信息,可这样用一个带where的delete命令以抑制 MySQL的优化:delete from table_name where 1; 可用last_insert_id()获取刚刚自增过的值。 unsigned禁用负值 zerofill如果查询显示时,实际数据小于指定位宽,则自动添加0值

mysql> create table t9(id int(5) zerofill);
Query OK, 0 rows affected (0.03 sec)
mysql> insert into t9 values(12);
Query OK, 1 row affected (0.01 sec)
mysql> select * from t9;
+-------+
| id |
+-------+
| 00012 |
+-------+
1 row in set (0.00 sec)
mysql> insert into t9 values(123456);
Query OK, 1 row affected (0.01 sec)
mysql> select * from t9;
+--------+
| id |
+--------+
| 00012 |
| 123456 |
+--------+
2 rows in set (0.00 sec)

default用于设置默认值

mysql> create table t10(id int default 0,name varchar(20));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into t10 values(11,'yan1');-- 指定对应的数据,则default无效
Query OK, 1 row affected (0.01 sec)
mysql> insert into t10 values(null,'yan1'); -- 指定对应的数据,则default无效,即
使设置的值为null
Query OK, 1 row affected (0.01 sec)
mysql> insert into t10(name) values('yan1'); -- 只有不针对这个列进行数据插入时
default才能生效
Query OK, 1 row affected (0.00 sec)
mysql> select * from t10;
+------+------+
| id | name |
+------+------+
| 11 | yan1 |
| NULL | yan1 |
| 0 | yan1 |
+------+------+
3 rows in set (0.00 sec)

null是什么意思 null的意思为未知的数据,它既不是空字符串,不是任何一个具体的值;不能把任何值与一个null 值进行比较。因为null的意思是不确定的值。真正的null值比较必须使用特殊的运算符is null或者is not null

mysql> select null=null; -- =表示等值比较
+-----------+
| null=null |
+-----------+
| NULL |
+-----------+
1 row in set (0.00 sec)
mysql> select null!=null; -- 比较不相等
+------------+
| null!=null |
+------------+
| NULL |
+------------+
1 row in set (0.00 sec)
mysql> select null is null;
+--------------+
| null is null |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
mysql> select null is not null;
+------------------+
| null is not null |
+------------------+
| 0 |
+------------------+
1 row in set (0.00 sec)

字符串类型 char(n)定长字符串,n值用于表示所允许的最大长度,取值范围0-255 长度限制不区分中英文,表示是允许最多存储多少个字符 使用length函数获取的是字节数,不是字符数。在utf-8编码种一个汉字占用3个字节

mysql> create table c2(id char(5));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into c2 values("yan");
Query OK, 1 row affected (0.01 sec)
mysql> insert into c2 values("中国人民好");
Query OK, 1 row affected (0.01 sec)
mysql> insert into c2 values("中国人民好1");
ERROR 1406 (22001): Data too long for column 'id' at row 1

varchar(n)可变长度的字符串,n值取值范围为0-65535 实际存储多少个字符就占多少个位置,每个列所占用的长度根据具体内容变化

char和varchar char属于定长,varchar属于变长。选择最基本的依据就是定长使用char,变长使用varchar char允许的最大长度为255,varchar允许的最大长度为65535 如果存储的字符串长度变化不大,推荐优先考虑使用char,例如针对口令进行md5加密,固定长度 的行不容易产生碎片;对于长度很短的列,char的性能优于varchar,是因为varchar需要引入额外 一个或者两个字节存储字符串长度 char在计算种会自动去除空格;varchar不会去掉空格,但是进行字符串比较时,会去除空格后进 行比较;在插入数据时系统会自动去除字符串默认多余的空格

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42383952/article/details/127019100

mysql数据类型详解_iamdingj的博客-爱代码爱编程

MySQL中定义数据字段的类型对你数据库的优化是非常有意义的。 MySQL支持多种类型,大致可以分为三类:数值、日期(时间)和字符(字符串)类型。 一、数值类型 1、整数类型(精确值) MySQL支持SQL标准整数类

mysql 基本数据类型_noname365的博客-爱代码爱编程

Mysql的基本数据类型: 类型大小描述char[length]length字节定长字段,长度为0-255个字节varchar[length]string长度+1字节变长字段,在mysql5.03以前,长度为0-255个字节,在5.0.3以后,最大长度为65535字节。一个utf8字符占3个字节、一个gbk字符占两个字节。tinytextstring

mysql基本数据类型-爱代码爱编程

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 数值类型 MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(integer、smallint、decimal),以及近似数值数据类型(float、real、double preci

MySQL数据库管理语句用法(增、删、改、查、授权……)-爱代码爱编程

创建数据库、表语法格式示例查看数据表结构信息删除数据表示例删除数据库语法格式示例插入数据到表中语法格式示例查看表数据语法格式示例更新,改动表中数据语法格式示例删除表中数据语法格式示例克隆表克隆表描述示例创建临时表临时表概述示例用户授权管理用户授权语法格式示例删除授权语法格式示例 创建数据库、表 语法格式 创建数据库:create dat

MySQL数据库命名规范以及数据类型-爱代码爱编程

一、SQL SQL(Structure Query Language,结构化查询语言):它是使用关系模型的数据库应用语言,由IBM上世纪70年代开发出来。后由美国国家标准局(ANSI)开始着手制定SQL标准,先后有SQL-86,SQL-89,SQL-92,SQL-99等标准。 1. SQL的语言规范 mysql对于SQL语句不区分大小写,SQL语句关

db2删除大量数据_SQL 基础知识- 数据库与 SQL-爱代码爱编程

目录 What's 数据库数据库结构SQL 概要创建数据库与表删除和更新表一、What's 数据库   1.数据库(Database,DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。如:大型-银行存储的信息,小型-电话簿。   2.数据库管理系统(Batabase Management System,DBMS

Go by Example-golang操作json-爱代码爱编程

package main //Go by Example 中文:JSON 微信:6686496 import ( "encoding/json" "fmt" "os" ) type Response1 struct { Page int Fruits []string } type Response2 struct { Page int `j

oracle lob类型和mysql text_【学习笔记】oracle lob大对象数据类型字段详解 总结lob 10大问题...-爱代码爱编程

天萃荷净 oracle研究中心学习笔记:分享一篇关于Oracle数据库lob大对象数据类型字段的详细讲解,介绍ORACLE提供了CLOB,NCLOB,BLOB,BFILE共四种LOB类型。 何为LOB? lob为Oracle数据库的一个大对象数据类型,可以存储超过4000bytes的字符串,二进制数据,OS文件等大对象信息.最大可存储的容量根or

数据库:常见的数据类型-爱代码爱编程

文章目录 一、常见的数据类型1.数值型2、字符型3、日期型 一、常见的数据类型 1、数值型: 整型 小数: 定点数 浮点型 2、字符型: 较短的文本:char、varchar 较长的文本:text、blob(较长

MySQL | 报错 | Query OK, 0 rows affected, 1 warning (0.01 sec)-爱代码爱编程

问题描述 创建表时报如下warning mysql> CREATE TABLE IF NOT EXISTS score( -> stu_id VARCHAR(10), -> course_id VARCHAR(10), -> score INT -> ); Query OK, 0 rows

数据库中的数据类型-爱代码爱编程

目录 一、数据类型 1.整数型 2.小数型 3.字符型 4.日期时间型 5.混合型 二、选取数据类型的原则 人们通过长期的学习,能够很轻松的识别除汉字,字符。可是计算机不能是别,于是人们在每一个计算机语言里都界定了数据类型,他可以是字符型、数值型、日期时间型还有混合型,有了这些数据类型,计算机很容易读取数据。在SQL中,数据类型是一个标签,

mysql varchar字段自动忽略尾部空格-爱代码爱编程

背景   查询数据时,值带着空格也可以被查到,经查询,发现mysql varchar字段自动忽略尾部空格,特此记录 正文   参考该地址 MySQL comparison operator, spaces - Stack Overflow All MySQL collations are of type PADSPACE. This means t

mysqls数据库的数据类型_香锅不要麻辣的博客-爱代码爱编程

SQL注释 一般在编写sql脚本文件时需要添加合理的注释信息 单行注释select 1; #说明信息 多行注释/*开头 */收尾 数据类型 数据类型主要给列上添加域完整性约束。开发者设置列的数据类型后,DBMS会对添加的数据进行合法 性验证,如果不合法则报错,拒绝添加 数值型 5种整型 tinyint、smallint、mediumint、i

mysqls一款专为node.js生成sql语句的插件、链式调用、使用灵活、支持事物-爱代码爱编程

mysqls It is written in JavaScript,crud for mysql.You can also use transactions very easily. mysqls 一款专为node.js生成sql语句的插件,链式调用,使用灵活。支持生成sql语法,也支持生成语法之后直接调用,支持事物等特性。API参考很流行

mysql几种常见的数据类型_mysql中常用的数据类型都有哪些,对应的英文关键词是什么?-爱代码爱编程

转自:微点阅读  https://www.weidianyuedu.com/content/2817195356823.html 一、数据类型是什么? 数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。 有一些数据是要存储为数字的,数字当中有些是要存储为整数、小数、日期型等... 二、MYS

mysql常见的几种数据类型介绍_mysqlsqr有哪些类型-爱代码爱编程

转自:微点阅读  https://www.weidianyuedu.com 一、数据类型是什么? 数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。 有一些数据是要存储为数字的,数字当中有些是要存储为整数、小数、日期型等... 二、MYSQL常见数据类型 MySQL支持多种类型,大致可以分