mysql 基础 | 青训营笔记

60 阅读3分钟

类型

用途

int

整型,相当于java 的int

bigint

整型,相当于java 的 long

flfloat

浮点型

double

浮点型

datetime

日期类型

timestamp

日期类型(可存储时间戳)

char

定长字符

varchar

不定长字符

text

大文本,用于存储很长的字符内容

blob

字节数据类型,存储图片、音频等文件

MySQL 案例实战教程

MySQL的数据类型

MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

备注: char 和varchar 一定要指定长度,flfloat 会自动提升为double,timestamp 是时间的混合类型,理

论上可以存储 时间格式和时间戳。

建表操作

语法

在 SQL 中,我们有如下约束:

-- 删除表

DROP TABLE IF EXISTS 表名;

-- 新建表

create table 表名(

字段名 类型 约束(主键,非空,唯一,默认值),

字段名 类型 约束(主键,非空,唯一,默认值),

)编码,存储引擎;NOT NULL - 指示某列不能存储 NULL 值。

UNIQUE - 保证某列的每行必须有唯一的值。

PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助

于更容易更快速地找到表中的一个特定的记录。

FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

CHECK - 保证列中的值符合指定的条件。

DEFAULT - 规定没有给列赋值时的默认值。

插入、删除、更新

插入语句

删除语句

更新语句

案例5:基本 select 查询语句

初始化数据

DROP TABLE IF EXISTS websites;

CREATE TABLE websites (

id int(11) NOT NULL AUTO_INCREMENT,

name char(20) NOT NULL DEFAULT '' COMMENT '站点名称',

url varchar(255) NOT NULL DEFAULT '',

alexa int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',

sal double COMMENT '广告收入',

country char(10) NOT NULL DEFAULT '' COMMENT '国家',

PRIMARY KEY (id)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO websites(name, url,alexa,sal,country ) VALUES ('腾讯', 'www.qq.com',

18, 1000,'CN' ) ;

delete from websites where id = 5;

update websites set sal = null where id = 3

DROP TABLE IF EXISTS websites;

CREATE TABLE websites (

id int(11) NOT NULL AUTO_INCREMENT,

name char(20) NOT NULL DEFAULT '' COMMENT '站点名称',

url varchar(255) NOT NULL DEFAULT '',

alexa int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',

sal double COMMENT '广告收入',查询语句

分页查询

mysql 的分页是最优雅

案例7. distinct 关键字

DISTINCT 关键词用于返回唯一不同的值。

country char(10) NOT NULL DEFAULT '' COMMENT '国家',

PRIMARY KEY (id)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO websites VALUES

(1, 'Google', 'www.google.cm/', '1', 2000,'USA'),

(2, '淘宝', 'www.taobao.com/', '13',2050, 'CN'),

(3, '菜鸟教程', 'www.runoob.com/', '4689',0.0001, 'CN'),

(4, '微博', 'weibo.com/', '20',50, 'CN'),

(5, 'Facebook', 'www.facebook.com/', '3', 500,'USA');

CREATE TABLE IF NOT EXISTS access_log (

aid int(11) NOT NULL AUTO_INCREMENT,

site_id int(11) NOT NULL DEFAULT '0' COMMENT '网站id',

count int(11) NOT NULL DEFAULT '0' COMMENT '访问次数',

date date NOT NULL,

PRIMARY KEY (aid)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO access_log (aid, site_id, count, date) VALUES

(1, 1, 45, '2016-05-10'),

(2, 3, 100, '2016-05-13'),

(3, 1, 230, '2016-05-14'),

(4, 2, 10, '2016-05-14'),

(5, 5, 205, '2016-05-14'),

(6, 4, 13, '2016-05-15'),

(7, 3, 220, '2016-05-15'),

(8, 5, 545, '2016-05-16'),

(9, 3, 201, '2016-05-17'),

(10, 88, 9999, '2016-09-09');

select * from websites

select id, name, url, alexa, sal, country from websites (推荐使用的方式)

select * from websites limit 2,3 ; --从第2条(下标从0开始)开始查,查3条数据

select * from websites limit 3 ; --从第0条(下标从0开始)开始查,查3条数据

select distinct country from websites案例8. where 语句

作为条件筛选, 运算符: > < >= <= <> != =

is null is not null

like in