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 最慢。