目录
前言
sql(Structured Query Language)是用于访问和处理数据库的标准计算机语言,主要分为四种。
1.DQL:数据查询语言(Data Query Language),用来获取表中的数据,保留字主要有SELECT、WHERE、ORDER BY、GROUP BY和HAVING等。
2.DML:数据操作语言(Data Manipulation Language),用来新增、变更和删除表中的数据,执行的是行级操作,保留字主要有INSERT、UPDATE和DELETE。
3.DDL:数据定义语言(Data Definition Language),用来创建、删除表或者新增、删除索引等,执行的是表级别的操作,保留字主要有CREAT、DROP、ALTER等。
4.DCL:数据控制语言(Data Control Language),用来设置、更改数据库操作者及其角色权限等,保留字主要有GRANT、REVOKE等。
一般在企业开发中,比较常用的是DQL、DML、DDL这三种。本节主要讨论的就是这三种。
1.规范要求
a)保留字关键字全部大写,其余的小写。
b)表名、字段名或索引名等建议遵守下划线命名法。驼峰命名不适合。mysql是大小写不敏感的,像testUser、TestUsEr等这些在mysql中都是一致的,等同于testuser。建议使用test_user、user_name等。
c)建议给字段和表加上备注信息。
2.DDL
2.1 创建表
2.1.1 模板
CREATE TABLE 【库名a】.【表名b】(
【字段名c1】 【字段类型属性等】,
【字段名c2】 【字段类型属性等】,
PRIMARY KEY(【字段名c1】),
UNIQUE KEY 【唯一索引名k1】(【字段名c2】) USING 【索引方法】 COMMENT '唯一索引xxx'
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='表b的备注';
说明:
a)首部也可使用CREATE TABLE IF NOT EXISTS 【库名a】.【表名b】(),防止创建表时报错。
b)一个表最多只有一个AUTO_INCREMENT列。
c)KEY:索引,主键primary key也是唯一索引,用于快速查询。
d)ENGINE:指定表的存储引擎,如:InnoDB,MyISAM,HEAP,EXAMPLE,CSV,ARCHIVE,MERGE, FEDERATED或NDBCLUSTER。如果不指定存储引擎,MySQL将默认使用InnoDB。
e)CHARSET:指定字符集,开发中一般都使用utf8,mysql中没有utf-8。
2.1.2 示例
CREATE TABLE IF NOT EXISTS test_dev.test_user(
user_id INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
user_name VARCHAR(45) DEFAULT NULL COMMENT '用户名',
user_code VARCHAR(255) DEFAULT NULL COMMENT '用户code',
user_update_time DATETIME DEFAULT NULL COMMENT '变更时间',
PRIMARY KEY(user_id),
UNIQUE KEY unq_name_code(user_name,user_code) USING BTREE COMMENT '用户名+code在表中唯一'
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
说明:
在test_dev数据库中创建test_user表,其中有字段user_id(主键,自增长,int类型,长度11),user_name(varchar类型,长度45,默认为null)等,唯一索引unq_name_code(user_name+user_code在表中唯一),使用InnoDB引擎,默认字符集utf8。
2.2 删除表
2.2.1 模板
DROP TABLE IF EXISTS 【库名a】.【表名b】;