mysql总结
2015-06-30 23:45
441 查看
一、数据库层次操作:
创建数据库:
CREATE DATABASE [IF NOT EXISTS] db_name CHARACTER SET utf8;
删除数据库:
DROP DATABASE[IF EXISTS] db_name;
修改数据库编码:
ALTER DATABASE db_name CHARACTER SET utf8;
显示数据库是否创建:
SHOW DATABASE;
显示创建数据库所用指令:
SHOW CREATE DATABASE db_name;
二、数据表层次:
创建数据表:
CREATE TABLE tb_name(
column_name data_type 是否为空 是否为主键 是否单调递增 是否是唯一键 是否提供默认值,
。。。
)
显示数据表结构:
SHOW COLUMNS FROM tb_name;
插入行:
INSERT INTO tb_name (columns_list) VALUES (value_list)
删除行:
DELETE FROM tb_name where。。。
查询:
select *from tb_name;
三、约束:
PRIMARY KEY:唯一,不空
UNIQUE KEY:唯一,可以为空
DEFAULT:设置该字段默认值
NOT NULL:非空约束
FOREIGN KEY:外键约束 (子表父表存储引擎均为INNODB,关联的字段值类型相似或相同(数字相同,字符可以长度不同),子表父表对应字段均有索引)
FOREIGN KEY(子表字段名)REFERENCES 父表表名(父表对应字段名)ON DELETE CASCADE[ON DELETE SET NULL|ON DELETE RESTRICT(父表不允许删除)]
四、修改数据表
删除添加列:
ALTER TABLE tb_name ADD columns_name datatype 约束;
ALTER TABLE tb_name DROP columns_name;
添加删除约束:
ALTER TABLE tb_name ADD constraint primary key(columns_name);/ALTER TABLE tb_name DROP PRIMARY KEY;
ALTER TABLE tb_name ADD constraint unique key(columns_name);/ALTER TABLE tb_name DROP KEY columns_name;
ALTER TABLE tb_name ADD FOREIGN KEY(COLUMNS_NAME)REFERENCES 父表(参照columns_name)/ALTER TABLE tb_name DROP FOREIGN KEY name_fk;
ALTER TABLE tb_name ALTER columns_name SET DEFAULT 值;(t添加默认约束)
DROP DEFAULT;(删除默认约束)
修改列定义:
ALTER TABLE tb_name MODIFY columns_name datatype 约束 位置(first、after 某一列);
ALTER TABLE tb_name CHANGE columns_name new_columns_name datatype 约束 位置;
修改数据表名称:
ALTER TABLE tb_name TO/AS new_tb_name;
RENAME TABLE tb_name TO new_tb_name;
五、记录操作
插入记录:
INSERT INTO tb_name (columns1,columns2...) VALUES (val1,val2...),(val1,val2);(VAL可以为表达式);
INSERT INTO tb_name SET columns_name1=val1,columns_name2=val2;(可以使用子查询)
INSERT INTO tb_name (column1,columns2...)SELECT...;
单表更新:
UPDATE tb_name SET columns_name1=EXPR1,columns_name2=expr2 WHERE...;
单表删除操作:
DELETE FROM tb_name WHERE...;
查找:
SELECT select_expr [,select expr]
[
FROM tB_name
[WHERE where_condition]
[GROUP BY col_name][asc|desc]
[HAVING where_condition](where_condition只能为聚合函数或者要判断的列在select表达式中出现)
[ORDER BY col_name|expr][ASC|DESC]
[LIMIT offset,count](限制返回记录条数)
]
六、子查询和连接
比较引发子查询:
SELECT column1_name,column2_name... FROM tb_name WHERE columns_name > (查询语句);
子查询可以用ANY,SOME,ALL修饰
使用NOT IN和IN的子查询:
SELECT * FROM tb_name WHERE columns_name NOT IN (子查询)
使用INSERT。。。SELECT插入:
将SELECT结果插入
多表更新:
CREATE TABLE tb_name ()select语句;
UPDATE tb_name INNER JOIN tb_name ON 连接条件 SET columns_name1=columns_name1';
连接:
tb_name INNER|LEFT|RIGHT JOIN tb_name ON 连接条件;
内连接:仅显示满足连接条件的记录
左外连接:左表全部,右表符合条件的记录
右外连接:右表全部,左表符合条件的记录
多表连接:
无线级分类表设计:
多表删除:
七、自定义函数
CREATE FUNCTION f_name(参数名 参数类型,...) RETURN data_type
函数体;
BEGIN
//
END
八、存储过程:
优点:增强 SQL功能灵活性;实现较快执行速度;减少网络流量;
创建不带参数存储过程:
CREATE PROCEDURE p1() SQL statements;
调用 CALL p1();
创建带IN,OUT,INOUT参数的存储过程:
CREATE PROCEDURE p2(IN[OUT|INOUT] 参数1 参数类型,....)
SQL语句;
调用 CALL p2(输入);
IN只能输入;
OUT输出 SELECT columns FROM tb_names INTO OUT变量(@变量名 用户变量;DECLARE 局部变量只可以用于 BEGIN END之间)
INOUT既可以输入又可以输出;
存储过程与自定义函数区别:存储过程功能更复杂;存储过程可以返回多个值;存储过程一般独立存在,自定义函数可以再SQL语句中出现;
创建数据库:
CREATE DATABASE [IF NOT EXISTS] db_name CHARACTER SET utf8;
删除数据库:
DROP DATABASE[IF EXISTS] db_name;
修改数据库编码:
ALTER DATABASE db_name CHARACTER SET utf8;
显示数据库是否创建:
SHOW DATABASE;
显示创建数据库所用指令:
SHOW CREATE DATABASE db_name;
二、数据表层次:
创建数据表:
CREATE TABLE tb_name(
column_name data_type 是否为空 是否为主键 是否单调递增 是否是唯一键 是否提供默认值,
。。。
)
显示数据表结构:
SHOW COLUMNS FROM tb_name;
插入行:
INSERT INTO tb_name (columns_list) VALUES (value_list)
删除行:
DELETE FROM tb_name where。。。
查询:
select *from tb_name;
三、约束:
PRIMARY KEY:唯一,不空
UNIQUE KEY:唯一,可以为空
DEFAULT:设置该字段默认值
NOT NULL:非空约束
FOREIGN KEY:外键约束 (子表父表存储引擎均为INNODB,关联的字段值类型相似或相同(数字相同,字符可以长度不同),子表父表对应字段均有索引)
FOREIGN KEY(子表字段名)REFERENCES 父表表名(父表对应字段名)ON DELETE CASCADE[ON DELETE SET NULL|ON DELETE RESTRICT(父表不允许删除)]
四、修改数据表
删除添加列:
ALTER TABLE tb_name ADD columns_name datatype 约束;
ALTER TABLE tb_name DROP columns_name;
添加删除约束:
ALTER TABLE tb_name ADD constraint primary key(columns_name);/ALTER TABLE tb_name DROP PRIMARY KEY;
ALTER TABLE tb_name ADD constraint unique key(columns_name);/ALTER TABLE tb_name DROP KEY columns_name;
ALTER TABLE tb_name ADD FOREIGN KEY(COLUMNS_NAME)REFERENCES 父表(参照columns_name)/ALTER TABLE tb_name DROP FOREIGN KEY name_fk;
ALTER TABLE tb_name ALTER columns_name SET DEFAULT 值;(t添加默认约束)
DROP DEFAULT;(删除默认约束)
修改列定义:
ALTER TABLE tb_name MODIFY columns_name datatype 约束 位置(first、after 某一列);
ALTER TABLE tb_name CHANGE columns_name new_columns_name datatype 约束 位置;
修改数据表名称:
ALTER TABLE tb_name TO/AS new_tb_name;
RENAME TABLE tb_name TO new_tb_name;
五、记录操作
插入记录:
INSERT INTO tb_name (columns1,columns2...) VALUES (val1,val2...),(val1,val2);(VAL可以为表达式);
INSERT INTO tb_name SET columns_name1=val1,columns_name2=val2;(可以使用子查询)
INSERT INTO tb_name (column1,columns2...)SELECT...;
单表更新:
UPDATE tb_name SET columns_name1=EXPR1,columns_name2=expr2 WHERE...;
单表删除操作:
DELETE FROM tb_name WHERE...;
查找:
SELECT select_expr [,select expr]
[
FROM tB_name
[WHERE where_condition]
[GROUP BY col_name][asc|desc]
[HAVING where_condition](where_condition只能为聚合函数或者要判断的列在select表达式中出现)
[ORDER BY col_name|expr][ASC|DESC]
[LIMIT offset,count](限制返回记录条数)
]
六、子查询和连接
比较引发子查询:
SELECT column1_name,column2_name... FROM tb_name WHERE columns_name > (查询语句);
子查询可以用ANY,SOME,ALL修饰
使用NOT IN和IN的子查询:
SELECT * FROM tb_name WHERE columns_name NOT IN (子查询)
使用INSERT。。。SELECT插入:
将SELECT结果插入
多表更新:
CREATE TABLE tb_name ()select语句;
UPDATE tb_name INNER JOIN tb_name ON 连接条件 SET columns_name1=columns_name1';
连接:
tb_name INNER|LEFT|RIGHT JOIN tb_name ON 连接条件;
内连接:仅显示满足连接条件的记录
左外连接:左表全部,右表符合条件的记录
右外连接:右表全部,左表符合条件的记录
多表连接:
无线级分类表设计:
多表删除:
七、自定义函数
CREATE FUNCTION f_name(参数名 参数类型,...) RETURN data_type
函数体;
BEGIN
//
END
八、存储过程:
优点:增强 SQL功能灵活性;实现较快执行速度;减少网络流量;
创建不带参数存储过程:
CREATE PROCEDURE p1() SQL statements;
调用 CALL p1();
创建带IN,OUT,INOUT参数的存储过程:
CREATE PROCEDURE p2(IN[OUT|INOUT] 参数1 参数类型,....)
SQL语句;
调用 CALL p2(输入);
IN只能输入;
OUT输出 SELECT columns FROM tb_names INTO OUT变量(@变量名 用户变量;DECLARE 局部变量只可以用于 BEGIN END之间)
INOUT既可以输入又可以输出;
存储过程与自定义函数区别:存储过程功能更复杂;存储过程可以返回多个值;存储过程一般独立存在,自定义函数可以再SQL语句中出现;
相关文章推荐
- MySQL 复制 主键冲突
- 【HM】第5课:JDBC连接MySQL数据库
- ubuntu下mysql建立数据库,建表,搜索
- Haproxy: web前段调用后面的mysql数据,不定期的报错
- MySQL技术内幕-InnoDB存储引擎-读书笔记(二)
- MySQL 删除重复记录
- mysql 5.6 调优
- Cannot load JDBC driver class 'com.mysql.jdbc.Driver '
- [MySQL SQL优化系列]之连接查询
- 1.安装MySQL
- MySQL运行状态show status详解
- MySql的导入与导出
- MySQL详解(7)---------Mysql数据备份与恢复
- MySQL-5.6.13免安装版配置方法
- MySQL下载安装、配置与使用(win7x64)来自百度经验
- Mysql Concat()bug
- MySQL Study之--MySQL集群之mysql 主从复制
- MySQL详解(6)---------MySQL语句
- mysql -- 创建存储过程 往数据表中新增字段
- mysql5.6通过mysqldump自动备份