第06讲 mysql 常用字段

image
数值型
int float decimal

int 型 -(2的31次方)~(2的31次方-1) 如果int是个无符号的那么范围是(0 ~ 4294967295)
字符串:
char varchar text
日期型
date

==创建表首先要创建库切记==

3.3.1. 创建并选择数据库

如果管理员在设置权限时为你创建了数据库,你可以开始使用它。否则,你需要自己创建数据库:


mysql>  create database db100 character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| db100              |
| db2                |
| dblocal            |
| mysql              |
| performance_schema |
| test               |
+--------------------+
8 rows in set (0.00 sec)

mysql>

在Unix下,数据库名称是区分大小写的(不像SQL关键字),因此你必须总是以menagerie访问数据库,而不能用Menagerie、MENAGERIE或其它一些变量。对表名也是这样的。(在Windows下,该限制不适用,尽管你必须在一个给定的查询中使用同样的大小写来引用数据库和表。但是,由于多种原因,作为最好的惯例,一定要使用与数据库创建时的同样的大小写。)
创建数据库并不表示选定并使用它,你必须明确地操作。为了使menagerie成为当前的数据库,使用这个命令:

mysql> USE db100;
Database changed

如上表明后边执行创建表的话指定的库是db100;如果不指定创建表所在的库那么直接创建表就挂了,铁定报错
报错信息为

mysql> create table test300(name char(255));
ERROR 1046 (3D000): No database selected

数据库只需要创建一次,但是必须在每次启动mysql会话时在使用前先选择它。你可以根据上面的例子执行一个USE语句来实现。还可以在调用mysql时,通过命令行选择数据库,只需要在提供连接参数之后指定数据库名称。例如:

shell> mysql -h host -u user -p menagerie
Enter password: **
注意,刚才显示的命令行中的menagerie不是你的 密码。如果你想要在命令行上在-p选项后提供 密码,则不能插入空格(例如,如-pmypassword,不是-p mypassword)。但是,不建议在命令行输入密码,因为这样会暴露 密码,能被在机器上登录的其它用户窥探到。

创建表连接上边的

mysql>use db100;
mysql> create table test100 (num int);
Query OK, 0 rows affected (0.14 sec)

如上mysql语句表明在db100中创建一张表名为test100,表内部有一个字段num 为int类型 因为int并没有指定任何东西 现在的int表示是有符号的(????视频上这么说的为啥)视频insert上会验证

float型:存的小数;

decimal型:存放小数,精度高

实例验证:

mysql> create table test200(id int,salary float(4,2),salary2 decimal(4,2));
Query OK, 0 rows affected (0.10 sec)

说明:
1、创建一张表 表名为:test200
2、salary字段是float(4,2)范围为-99.99~99.99;
3、salary2字段是decimal(4,2)范围为-99.99~99.99;
4、我们可以使用float和decimal来存放小数,区别是decimal的精度更高

char型:用于存放字符串,范围1~255字符
varchar型:用于存放字符串,范围是0~65535-3字节;为什么-3 是因为 要0~3个长度来存放varchar本身的长度

char 演示:

mysql> use db100;
Database changed
mysql> create table test300(name char(255));
Query OK, 0 rows affected (0.11 sec)

mysql> create table test300(name char(256));
ERROR 1074 (42000): Column length too big for column 'name' (max = 255); use BLO
B or TEXT instead
mysql>

如上char不超长度创建成功。超了的话创建标的时候会报错。

varchar

mysql> create table test400(name varchar(65532));
Query OK, 0 rows affected, 1 warning (0.06 sec)

mysql> create table test400(article varchar(65532));
ERROR 1050 (42S01): Table 'test400' already exists
mysql> drop table test400;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+-----------------+
| Tables_in_db100 |
+-----------------+
| test100         |
| test200         |
| test300         |
+-----------------+
3 rows in set (0.00 sec)

mysql> create table test400(article varchar(65532));
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show create table test400;
+---------+--------------------------------------------------------------------
-----------------+
| Table   | Create Table
                 |
+---------+--------------------------------------------------------------------
-----------------+
| test400 | CREATE TABLE `test400` (
  `article` mediumtext
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+---------+--------------------------------------------------------------------
-----------------+
1 row in set (0.00 sec)

说明varchar能存放65532个字节但是 我试了下 能存下完整65535个字节没报错啊。不是说还要留下1~3个字节来存放varchar本身吗

视频说明varchar在创建表时候varchar(m)m这个值的大小和当前这个标的编码有关系
如果是utf8的话视频上说 最大的值是65532/3;但是我试了下 没毛病啊 没毛病啊 不报错。
如果表的编码是gbk时候m的最大值为32766 再大就超了 如下32767就报错了

mysql> create table test800(article varchar(32767)) character set gbk;
ERROR 1118 (42000): Row size too large. The maximum row size for the used table
type, not counting BLOBs, is 65535. You have to change some columns to TEXT or B
LOBs
mysql> show create table test700;
+---------+---------------------------------------
---------------------------------+
| Table   | Create Table
                                 |
+---------+---------------------------------------
---------------------------------+
| test700 | CREATE TABLE `test700` (
  `article` varchar(32766) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk |
+---------+---------------------------------------
---------------------------------+
1 row in set (0.00 sec)

如上创建test700 时 32766字节正常
创建test800 时32767字节就挂了;因为在gbk下一个汉字对应2个字节。

总的来说 能存储多少字节跟表所属编码有关。

text型:文本型 用来存放文本 如果内容较多的可以使用text字段

date型存放日期

mysql> create table test800(id int,name varchar(60),birthday date);
Query OK, 0 rows affected (0.01 sec)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有时有晌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值