创建数据库
CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
创建表
CREATE TABLE user2(
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(4) NOT NULL DEFAULT '张三',
pid INT UNSIGNED NOT NULL CHECK(pid > 0),
money DECIMAL(6,2) NOT NULL DEFAULT 0,
FOREIGN KEY fk_pid (pid) REFERENCES `user`(id) ON DELETE CASCADE,
INDEX i_name (name(1) DESC)
)ENGINE=INNODB
解释:创建user表
字段 类型 其他
id int 无符号 不为空 主键 自增
name varchar(最长4字) 不为空 默认‘张三’
pid int 无符号 不为空 检查必须大于0
money decimal(包括小数点后两位共6位) 不为空 默认0.00
外键 pid命名位fk_pid 和user1表下的id关联user1下的id被删除对应user2下pid也被删除
索引 name字段第一个字倒叙作引
UNSIGNED关键字:无符号,存在于各种int类型里,取消负数部分,例如tinyint不加无符号是-128到127,加上则存储编程0到255,在主键这里都是从1 开始计算不涉及负数部分,加上无符号可以增加1倍的存储量。
NOT NULL关键字:不为null。
PRIMARY KEY关键字:主键,MySQL必须有主键!
AUTO_INCREMENT关键字:自增。
VARCHAR(4):varchar是变长存储。括号内代表最长字符数,超出不报错,超出部分不被记录。
DECIMAL:一般用来计算金额的字符型,(6,2)代表最大存9999.99
FOREIGN KEY 命名(字段) REFERENCES `表名`(字段名) ON DELETE CASCADE:
(UNIQUE) INDEX 命名(字段名 [倒排]):普通索引或者唯一索引。mysql没有fulltext索引。上例varchar后边加了(1)
实际工作中如果索引项前几个字符就能区分,那么给前几个字符建立索引就可以
ENGINE=INNODB:引擎主要分innodb和myisam.前者支持事务行锁表锁,后者只支持表锁。
方法
IF用法 : “SELECT IF(money > 100000, '真有钱', '穷') AS isRich FROM user2 ”
FIND_IN_SET用法:例如article表type字段存储为 风景,宇宙,动物,人文 。
查找风景和人文类型的"SELECT * FROM article WHERE type FIND_IN_SET('风景','人文')
DATE_FORMAT用法 :"SELECT DATE_FORMAT(time,'%Y年%m月%d日') AS date FROM user WHERE id > 300"