主要是为了时常拿出来看看,复习用
数据库操作主要包括
1.创建数据库 (CREATE DATABASE)
2.查看数据库 (SHOW DATABASES)
3.修改数据库 (ALTER DATABASE)
4.删除数据库 (DROP DATABASE)
一 创建数据库
1. CREATE DATABASE IF NOT EXISTS 数据库名称 DEFAULT CHARSET 默认编码集 COLLATE 校对规则;
2、语法解释:
IF NOT EXISTS:如果该数据库不存在则创建,防止创建错误;
DEFAULT CHARSET:默认编码集通常选择utf8,其它编码集不推荐,ThinkPHP也推荐默认为utf8编码集;
COLLATE:校对规则就是默认的排序方式,这与默认编码集相对应,如果设置了默认编码集为utf8,这个选项可以省略,直接用默认值:utf8_general_ci。
3、实例:
任务:创建员工数据库
CREATE DATABASE IF NOT EXISTS user DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
因为设置了默认编码集,可以省略校对规则:COLLATE,语句可简写为:
CREATE DATABASE IF NOT EXISTS user DEFAULT CHARSET utf8;
二、查看数据库
1、语法:
SHOW DATABASES;
2、语法解释:
服务器上通常会有很多数据库,因此,这里使用复数。
3、实例:
SHOW DATABASES;
三、修改数据库
ALTER DATABASE 数据库名称 修改的项目
2、语法解释:
数据库创建成功后,可修改项主要是默认编码集和校对规则,其它不必修改
如果原数据库编码集不是utf8,可用该语句修改成为utf8;
如果校对规则不是utf8-general-ci,也可用该语句进行修改。
3、实例:
任务: 将当前数据库的默认字符编码集改为utf8,校对规则修改为utf8-general-ci
3.1、修改编码和核对规则:
ALTER DATABASE staff CHARACTER SET utf8 COLLATE utf8_general_ci;
3.2、查看字符编码集
SHOW CHARACTER SET;
3.3、查看校对规则
SHOW COLLATION;
四、删除数据库
1. DROP DATABASE IF NOT EXISTS 数据库名;
2、语法解释:
删除数据库是一项非常危险的操作,一旦删除无法恢复;
IF EXISTS:可以防止出现删除不存在数据库的错误提示;
数据库删除后,该库中所有表,一并删除不可恢复。
3、实例:
任务:删除刚才创建的员工数据库 user
语句:DROP DATABASE IF NOT EXISTS user ;
数据库表的操作:
创建数据表
1、基本语法:
CREATE TABLE IF NOT EXISTS 数据表名称 (
字段名称1 [AS 别名] 字段类型 [约束条件] [DEFAULT 默认值] [COMMENT 字段注释],
字段名称2 [AS 别名] 字段类型 [约束条件] [DEFAULT 默认值] [COMMENT 字段注释],
字段名称3 [AS 别名] 字段类型 [约束条件] [DEFAULT 默认值] [COMMENT 字段注释],
......
)ENGINE = 表存储引擎 DEFAULT CHARSET = 默认编码集 AUTO_INCREMENT = 自增主键起始值;
2.语法解释:
字段名称:不与MySQL关键字重名的任何有效标识符即可;
IF NOT EXISTS:意思是“如果不存在”再创建数据表,防止重复建表引起错误;
AS 别名:表中字段名均为英文单词或缩写,创建一个有意义的别名,使数据表查询结果更加直观、人性化;
字段类型:非常重要,本文后面有详细介绍;
约束条件:主要是NULL(允许为空),NOT NULL(禁止为空)等,具体还要与字段类型相匹配;
DEFAULT 默认值:如某字段设置了默认值,则新增时未赋值则取默认值;
COMMENT 字段注释:非必须,但可以使字段信息看上去再完整、直观;
ENGINE = 表存储引擎:
>* MyISAM:读取快速、成熟稳定、支持全文检索、最常用,但不支持事务处理;
>* InnoDB:具备提交、回滚的事务处理,支持外键,战用空间大,不支持全文检索;
DEFAULT CHARSET 默认编码集: 通常与数据库采用的编码集相同(utf8)即可;
AUTO_INCREMENT = 自增主键起始值:如果设置,将从该值开始自增,如设置为1001,则第一条记录是1001,第二条是1002。如果不设置,主键将默认从1开始自增;
3.字段类型:
字段类型也叫列类型,主要有:数值、字符串、日期/时间三大类。
数值型:有无符号和有符号之分,直接书写,不要加引号,长度仅影响显示,不影响精度。
整型:又分为五类
INT : 标准整型,4字节,取值范围大约正负21亿,足以应付正常开发需要;
SMALLINT:小整数,2字节,取值范围大约正负3.2万之间,无符号翻倍。
TINYINT:极小整数,1字节,取值-128~127,无符号:0~255。
其它:MEDIUMINT(3字节),BIGINT(8字节),不太常用。
浮点型:
FLOAT:最常用,用4字节或8字节表示,具体依平台而定;
DOUBLE:双精度8字节;
DECIMAL:以字符串形式存储的浮点数,大小自定义,用于会计领域等。
字符串类型:
CHAR(长度): 固定宽度存储字符串,忽略原始字符串长度;
VARCHAR(长度):可变长度字符串,根据原始字符串长度存储;
TEXT:小型文本,不能设默认值和长度;
LONGTEXT:超大文本,同样不可设默认值和长度;
ENUM(枚举):在括号中集合数据中,只可以单选,无默认值;
SET(集合):集合最大64个成员,可以多选,无默认值。
日期/时间类型(不要设置长度):
DATE:3字节,格式 YYYY-MM-DD,如 2016-10-20;
TIME:3字节,格式 hh:mm:ss,如 12:25:35;
DATETIME:8字节,格式 YYYY-MM-DD hh:mm:ss,如 2016-10-20 12:25:35;
TIMESTAMP:3字节时间戳,格式YYYYMMDDhhmmss共14位,可设置显示长度进行截取操作,必须是偶数长度,常见6位,8位,12位;
YEAR:单字节,格式 YYYY,显示年份,如2016。
4、约束条件:
任务:创建员工信息表 user
user数据表结构如下:
| 序号 | 字段名 | 类型 | 宽度 | 约束 | 默认值|备注 |
| — | — | — | — | — | — |
| 1 | id | 整型 | 4位 | 无符号、不为空、自增、主键|无 | 编号 |
| 2 | name | 变长字符串 | 30位 | 不为空 | 无 |姓名 |
| 3 | sex | 整型 | 1位 | 不为空 | 1 |性别1男0女|
| 4 | salary |浮点型 | 共10位小数2位 |无符号、不为空 |2000 |工资|
| 5 | dept |变长字符串 | 20位 |不为空 | 开发部 |部门|
| 6 | hiredate |日期 | 默认 | 不为空 | 0000-00-00 |入职日期|
要求数据表存储引擎为InnoDB,默认编码:utf8,自增主键起始:1001。
创建数据表SQL语句:(实例)
CREATE TABLE IF NOT EXISTS user (
id INT(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '编号',
name VARCHAR(30) NOT NULL COMMENT '姓名',
sex TINYINT(2) unsigned NOT NULL DEFAULT 1 COMMENT '性别1男0女',
salary FLOAT(10,2) NOT NULL DEFAULT 2000.00 COMMENT '工资',
dept VARCHAR(20) NOT NULL DEFAULT '开发部' COMMENT '部门' ,
hiredate DATE NOT NULL DEFAULT '0000-00-00' COMMENT '入职日期',
PRIMARY KEY (id)
)ENGINE =InnoDB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1001;
查看表结构:
语法:DESC 表名
总结:
数据表,是php开发中,数据库操作的重要载体。而创建数据表,则是最重要的一环。一个结构良好、健壮的表结构是我们所有模型操作的基础。