本篇是系列性,由浅入深,主要是为了本人日后回看时再学习,如果道友对Mysql也是零基础的话,强烈建议从头开始看
本篇是系列性,由浅入深,主要是为了本人日后回看时再学习,如果道友对Mysql也是零基础的话,强烈建议从头开始看
SQL:ANSI SQL标准
SQL-86,SQL-89,SQL-92,SQL-99,SQL-03
MySQL 数据类型:
字符型
数值型
日期时间型
内建类型
字符型:
CHAR(255个字符), BINARY: 定长数据类型;
VARCHAR(6W多个字符), VARBINARY: 变长数据类型;需要结束符,结束符至少要占用一个空间
TEXT:TINYTEXT(255),TEXT(6w多),MEDIUMIEXT(1k多),LONGTEXT(4亿多)
以2进制来标志 2的几次方
BLOB: TINYTBLOB,BLOB,MEDIUMBLOB,LONGBLOB
ENUM,SET
数值型:
精确数值型
整型:TINYINT,SMALINIT,MEDIUMINT,BIGINT
十进制型:DECIMAL
近似数值型
浮点型数据:
FLOAT
DOUBLE
BIT
日期时间型:
DATE
TIME
DATETIME
TIMESTAMP
YEAR(2),YEAR(4)
字符类型修饰符:
NOT NULL:非空约束;
NULL:
DEFAULT 'STRING':指明默认值;
CHARACTER SET '':使用的字符集;
COLLATION: 使用的排序规则
mysql> SHOW CHARACTER SET;
mysql> SHOW COLLATION;
整型数据修饰型:
NOT NULL
NULL
DEFAULT NUMBER
AUTO_INCREMENT:
UNSIGNED
PRIMARY KEY|UNIQUE KEY
NOT NULL
mysql> SELECT LAST_INSERT_ID();
日期时间类型修饰符:
NOT NULL
NULL
DEFAULT
内建类型SET和ENUM的修饰符:
NOT NULL
NULL
DEFAULT
SQL MODE:定义mysqld对约束等的响应行为:
修改方式:
mysql> SET GLOBAL sql_mode='MODE';
mysql>SET @@global.sql_mode='MODE';
需要修改权限:仅对修改后新创建的会话有效,对已经建立的会话无效;
mysql> SET SESSION sql_mode='MODE';
mysql> SET @@session.sql_mode='MODE';
常用MODE:TRADITIONAL,STRICT_TRANS_TABLES,or STRICT_ALL_TABLES
SQL:DDL,DML
DDL:数据定义语言;
CREATE,ALTER,DROP
DB组件:数据库,表,索引,视图,用户,存储过程,存储函数,触发器,事件调度器等
CREATE相关的常用命令
mysql> help create
DML:数据操作语言:
INSERT,DELETE,UPDATE,SELECT
数据库:
CREATE,ALTER,DROP
{DATABASE|SCHEMA}
[IF EXISTS]
[IF NOT EXISTS]
表:二维关系
设计表:遵循规范用法;
定义:字段,索引
字段:字段名,字段数据类型,修饰符。不区别大小写,但自己使用时尽量区分
约束:索引,应该创建在经常用作查询条件的字段上;
索引:实现级别在存储引擎;
分类:
稠密索引,稀疏索引
B+索引,hash索引,R数索引,FULLTEXT索引
聚集索引(按主键),非聚集索引(按指针),
简单索引(索引在一个字段),组合索引(索引在多个字段)
创建表:CREATE TABLE
mysql> HELP CREATE TABLE
(1)直接创建;
(2)通过查询现存的表创建;新表会被直接插入查询而来的数据
(3)通过复制现存的表的结构创建,只复制表,不复制数据
注意:Storage Englne是指表类型,也即在表创建时指明其使用的存储引擎;
同一个库中表要使用同一种存储引擎类型。
查看表结构:
DESCRIBE tabl_name;
查看表状态信息:
SHOW [FULL] TABLES [{FROM | IN} db_name] [LIKE 'pattern' |WHERE exor ]
例子:show table status like 't1' \G
修改表:ALTER TABLE
删除表:DROP TABLE