MySQL

mysql -h 127.0.0.1 -uroot -p 密码
mysql> create database school; # 创建数据库 school
mysql> use school; # 选择数据库 school
mysql> create table class(class_id int, class_name varchar(128), class_teacher
varchar(64)); # 创建表 class
mysql> insert into class values (101, ' 六年级一班 ', ' 马老师 '); # 往表中插入 101 班记录
mysql> insert into class values (102, ' 六年级二班 ', ' 潘老师 '); # 往表中插入 102 班记录
mysql> select * from class; # 查询表 class 中的全部记录
mysql> select * from class where class_id=101; # 查询表 class 中的全部记录
mysql> desc class; #查询表结构
mysql> show create table userinfo;

列的类型:

整型:

(1)类型名称后面的小括号:

mysql> create table class6(class_id integer(5) zerofill , class_name varchar(128),
class_teacher varchar(64) ); # 创建表 class6
(2) UNSIGNED(无符号):
mysql> create table class6(id integer unsigned , name varchar(128), teacher
varchar(64) ); # 创建表 class6
mysql> create table class7(id integer zerofill , name varchar(128), teacher
varchar(64) ); # 创建表 class7, id 类型为 int unsigned
(3)AUTO_INCREMENT : 只能用于整数,在需要产生唯一标识符或顺序值时,可利用此属性,一

个表中最多只能有一个 AUTO_INCREMENT 列对于任何想要使用 AUTO_INCREMENT 的列,应

该定义为 NOT NULL,并定义为 PRIMARY KEY 或定义为 UNIQUE键。 例如,可按下列任何一种

方式定义 AUTO_INCREMENT 列:

mysql> create table class8(id integer auto_increment PRIMARY KEY , name
varchar(128), teacher varchar(64) ); # 创建表 class8 id 具有自增长属性
mysql> create table class9(id integer auto_increment UNIQUE , name varchar(128),
teacher varchar(64) ); # 创建表 class9 id 具有自增长属性
浮点型和定点数型:

float double decimal(M,D)        #M,D默认是10,0 

D 是小数点右边的位数(小数位)范围是 0 到 30,并且不能大于 M,可不指定,默认值
是 0
日期型和时间型:
YEAR 类型表示年,DATE 类型表示日期,TIME 类型表示时间,DATETIME 和 TIMESTAMP 表示日期和时间
mysql> use test; # 选择数据库 test
mysql> create table date_example (e_date date, e_datetime datetime, e_timestamp
timestamp, e_time time, e_year year); # 创建表 dt_example
mysql> insert into date_example values('2020-5-9', '2020-5-9 15:01:00', '2020-05-09
15:01:00', '15:56:01', 2011);
mysql> insert into date_example values('2020_5/9', '2020:5-9 15/01-00', '2020:05/09
15-01_00', '15:56:01', '2011'); # 效果同上面插入语句
常用的时间函数:
CURDATE() - 获得当前的 DATE, 可直接插入 DATE 类型中.
NOW() - 获得当前的 DATETIME, 可直接插入 DATETIME 和 TIMESTAMP 类型中.
TIME() - 获取参数给定时间串中的时分秒,可直接插入 TIME 类型中.
YEAR() - 获取参数给定时间串中的年份,可直接插入 YEAR 类型中.
MONTH() 、DAY()、HOUR()、MINUTE()、SECOND() 获取参数给定时间串中的月、日、时、分、秒值.
字符串类型:

CHAR:范围是0-255,未占满的空间会自动分配'0'

VARCHAR:范围是0-65535,输入多少字节就占多少空间,但不可超过预先确定的内存大小,更节约系统的空间

例:

mysql> create table char_example(e_char char(5), v_char varchar(5)); # 创建数据库
mysql> insert into char_example values('12345','12345'); # 正常插入数据
mysql> insert into char_example values('1 2 ','1 2 ');
#char 类型会屏蔽后面隐藏 的空格, varchar 不会
mysql> select concat('(',e_char, ')'), concat('(',v_char, ')') from char_example ; #
char 后面屏蔽的空格原型毕露
TEXT : 包括 TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT
注意: 允许的长度是指实际存储的字节数,而不是实际的字符个数,比如假设一个中文字符占两个字节, 那么 TEXT 类型可存储 65535/2 = 32767 个中文字符,而 varchar(100)可存储 100 个中文字 符,实际占 200 个字节,但 varchar(65535) 并不能存储 65535 个中文字符,因为已超出表达范围.
实战建议:
1、 char 长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定。超过255 字 节的只能用 varchar 或者 text;
2、 varchar 可变长度,可以设置最大长度;适合用在长度可变的属性。
3、 text 不设置长度, 当不知道属性的最大长度时,适合用 text, 能用 varchar 的地方不用 text;
4、 如果都可以选择,按照查询速度: char 最快, varchar 次之,text 最慢。
enum和set:

enum类型的值只能取列表中的一个元素,取值列表最多有65535个值;

例:

mysql> use test; #选择数据库 test

mysql> create table enum_example (e_enum enum(' ',' ',' 选择保密 ') ); # 创建表
mysql> insert into enum_example values(' '); # 插入记录 , 必须是 enum 选项中的值
mysql> insert into enum_example values(1); # 插入记录可以用数值表示
mysql> select e_enum + 0 from enum_example; # 查询 enum 选项对应的整数值
如果 ENUM 类型加上了 NOT NULL 属性,其默认值为取值列表的第一个元素。如果不加 NOT NULL 属
性,ENUM 类型将允许插入 NULL,而且 NULL 为默认值。
set类型的值最多只能有64个元素构成;

例:

mysql> use test; #选择数据库 test

mysql> create table set_example (interest set(' 足球 ',' 追剧 ',' 篮球 ',' 撩妹 ') ); # 创建表
mysql> insert into set_example values( ' 足球 , 撩妹 ' ); # 插入记录 , 必须是 enum 选项中的值
mysql> insert into enum_example values(9); # 插入相应位效果等同, 9 =>1001 选择 1,4
mysql> select interest+0 from set_example; # 以整数的方式查询
二进制类型:
1.二进制类型存储原始的二进制数据(如图片,视频,exe 文件等)。文本类型(TEXT)用来存储字符字符串(如 由英文字符、中文字符或其它语言字符组成的字符串)。
2.  二进制类型没有字符集,并且排序和比较基于列值字节的数值。而 TEXT 类型有字符集,并且根据字符集 的校对规则对值进行排序和比较。
二进制类型是存储二进制数据的数据类型,包括 BINARY、VARBINARY、BIT、TINYBLOBLOB、MEDIUMBLOB和 LONGBLOB。
Binary,VarBinary:(类似于char,varchar)
BLOB:(类似于Test)
实战建议
1、 binary 长度固定, 即每条数据占用等长字节空间;保存长度不超过 255 字节的二进制数据;
2、 varbinary 可变长度,可以设置最大长度,最大长度 65535;适合用在长度可变的二进制数据;
3、 blob 不设置长度, 当不知道属性的最大长度时,适合用 blob, 能用 varbinary 的地方不用 blob;
4、 如果都可以选择,按照查询速度: binary 最快, varbinary 次之,blob 最慢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值