MySQL 中的SQL(2)

#### 表级约束和列级约束 对一个数据列建立的约束,称为列级约束。 对多个数据列建立的约束,称为表级约束。 列级约束既可以在列定义时声明,也可以在列定义后声明。 表级约束只能在列定义后声明。 #### 数据表操作 数据表(或称表)是数据库最重要的组成部分之一,是其它对象的基础。数据表即二维表,行称为记录,列称为字段。 #### USE 打开数据库 `USE 数据库名称;` #### 创建数据表 CREATE TABLE [IF NOT EXISTS] table_name (column_name data_type, ...) #### 查看数据表列表 SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr] #### 查看数据表结构 SHOW COLUMNS FROM tbl_name #### 插入表记录 INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,...) 如果省略col_name就需要写全数据表所有的值。 #### 记录查找 SELECT expr,... FROM tbl_name #### 添加单列(数据表字段) ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name] 省略[FIRST|AFTER col_name]参数将位于所有列的最后面。 #### 添加多列(数据表字段) ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition, ...) #### 删除列(数据表字段) ALTER TABLE tbl_name DROP [COLUMN] col_name #### 添加主键约束 ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name, ...) #### 添加唯一约束 ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name, ...) #### 添加外键约束 ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) reference_definition #### 添加/删除默认约束 ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} #### 删除主键约束 ALTER TABLE tbl_name DROP PRIMARY KEY #### 删除唯一约束 ALTER TABLE tbl_name DROP {INDEX | KEY} index_name #### 删除外键约束 ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol #### 修改列定义 ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name] #### 修改列名称 ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name] #### 数据表更名 #方法1 ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name #方法2 RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ... ####数据表数据操作 #####INSERT #插入记录(可以插入多条记录) INSERT [INTO] tbl_name [(col_name, ...)] {VALUES|VALUE} ({expr|DEFAULT}, ...), (...), ... #插入记录(不可以插入多条记录) INSERT [INTO] tbl_name SET col_name = {expr|DEFAULT}, ... 说明:与前一种方式的区别在于,此方法可以使用子查询(SubQuery)。由比较运算引发子查询(SubQuery)。 # 插入记录 INSERT [INTO] tbl_name [(col_name, ...)] SELECT ... # 说明:此方法可以将查询结果插入到指定数据表。 示例: 1.创建“商品分类”表 CREATE TABLE IF NOT EXISTS tdb_goods_cates(cate_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,cate_name VARCHAR(40)); 2.查询tdb_goods表的所有记录,并且按"类别"分组 SELECT goods_cate FROM tdb_goods GROUP BY goods_cate; 3.将分组结果写入到tdb_goods_cates数据表 INSERT tdb_goods_cates (cate_name) SELECT goods_cate FROM tdb_goods GROUP BY goods_cate; ##### UPDATE # 更新记录(单表更新) UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1 = {expr|DEFAULT} [, col_name2 = {expr|DEFAULT}] ... [WHERE where_condition] ##### DELETE # 删除记录(单表删除) DELETE FROM tbl_name [WHERE where_condition] ##### SELECT # 查找记录 SELECT select_expr [, select_expr ...] [ FROM table_references [WHERE where_condition] [GROUP BY {col_name|position} [ASC|DESC], ... ] [HAVING where_condition] [ORDER BY {col_name|expr|position} [ASC|DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] ] ##### select_expr 查询表达式 每一个表达式表示想要的一列,必须至少有一个。 多个列之间以英文逗号分隔。 星号(`*`)表示多有列。`tbl_name.*`可以表示命名表的所有列。 查询表达式可以使用[AS] alias_name为其赋予别名。 别名可用于GROUP BY,ORDER BY或HAVING子句。 ##### WHERE 条件表达式 对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。 在WHERE表达式中,可以使用MySQL支持的函数或运算符。 ##### GROUP BY 查询结果分组 `[GROUP BY {col_name|position} [ASC|DESC], ... ]` ASC:生序,默认值。 DESC:降序。 ##### HAVING 分组条件 `[HAVING where_condition]` `where_condition`中要么使用聚合函数,要么出现的字段一定要在SELECT中出现。 聚合函数:count() … ##### ORDER BY 对查询结果进行排序 `[ORDER BY {col_name|expr|position} [ASC|DESC], ...]` ##### LIMIT 限制查询返回的数量 `[LIMIT {[offset,] row_count | row_count OFFSET offset}]` offset是从0开始的。 ##### CREATE … SELECT 创建数据表同时将查询结果写入到数据表 `CREATE TABLE [IF NOT EXISTS] tbl_name [(create_definition, ...)] select_statement` 示例: * 通过CREATE…SELECT来创建数据表并且同时写入记录 CREATE TABLE tdb_goods_brands (brand_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,brand_name VARCHAR(40) NOT NULL) SELECT brand_name FROM tdb_goods GROUP BY brand_name; #### 子查询 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句。例如: `SELECT * FROM t1 WHERE col1=(SELECT col2 FROM t2);` 其中`SELECT * FROM t1`称为Outer Query/Outer Statement。`SELECT col2 FROM t2`称为SubQuery。 子查询指嵌套在查询内部,且必须始终出现在圆括号内。子查询可以包含多个关键字或条件,如DISTINCT、GROUP BY、ORDER BY、LIMIT函数等。子查询外层的查询可以是:SELECT、INSERT、UPDATE、SET或DO。 子查询可以返回标量、一行、一列或子查询。
联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2022

备案号:京ICP备15003423号-3