mysql总结

来源:互联网 发布:二进制算法例子 编辑:程序博客网 时间:2024/05/01 18:34

一、数据库层次操作:

创建数据库:

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语句中出现;

0 0
原创粉丝点击