您的位置:首页 > 数据库 > MySQL

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语句中出现;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: