MySQL学习笔记
来源:互联网 发布:淘宝网秋冬半身裙 编辑:程序博客网 时间:2024/06/18 16:48
数据库基本操作
- 通过DOS窗口链接MySQL软件
mysql -h 127.0.0.1 -u root -p- 创建数据库
create Database database_name- 查看数据库
SHOW DATABASES- 选择数据库
USE database_name- 删除数据库
DROP DATABASE database_name- 查看数据库存储引擎
SHOW ENGINES \G
数据库表操作
- 创建表的语法
CREATE TABLE table_name( 属性名 数据类型,
属性名 数据类型
)- 查看表结构
DESC table_name- 删除表
DROP TABLE table_name- 修改表名
ALTER TABLE old_table_name RENAME new_table_name
数据库字段操作
- 增加字段
ALTER TABLE table_name ADD 属性名 属性类型- 在表的第一个位置增加字段
ALTER TABLE table_name ADD 属性名 属性类型 FIRST
- 在表的指定字段之后增加字段
ALTER TABLE table_name ADD 属性名 属性类型 AFTER 属性名
- 删除字段
ALTER TABLE table_name DROP 属性名- 修改字段的数据类型
ALTER TABLE table_name MODIFY 属性名 数据类型- 修改字段的名字
ALTER TABLE table_name CHANGE 旧属性名 新属性名 旧数据类型
- 同时修改字段的名字和属性
ALTER TABLE table_name CHANGE 旧属性名 新属性名 新数据类型
- 修改字段的顺序
ALTER TABLE table_name MODIFY 属性名1 数据类型 FIRST|AFTER 属性名2- 设置非空约束
CREATE TABLE table_name( 属性名 数据类型 NOT NULL,
属性名 数据类型
)- 设置字段的默认值
CREATE TABLE table_name( 属性名 数据类型 DEFAULT 默认值,
属性名 数据类型
)- 设置唯一约束
CREATE TABLE table_name( 属性名 数据类型 UNIQUE,
属性名 数据类型
)- 单字段主键
CREATE TABLE table_name( 属性名 数据类型 PRIMARY KEY,
属性名 数据类型
)- 多字段主键
CREATE TABLE table_name( 属性名 数据类型 ,
属性名 数据类型,
CONSTRAINT 约束名 PRIMARY KEY (属性名,属性名))- 设置字段值自动增加
CREATE TABLE table_name( 属性名 数据类型 AUTO_INCREMENT,
属性名 数据类型
)- 设置外键约束
CREATE TABLE table_name( 属性名 数据类型,
属性名 数据类型,
CONSTRAINT 外键约束名 FOREIGN KEY (属性名1) REFERENCES 表名(属性名2))
数据库索引
- 创建表时创建普通索引
CREATE TABLE table_name( 属性名 数据类型, 属性名 数据类型, INDEX|KEY 索引名(属性名)
)- 在已经存在的表上创建普通索引
CREATE INDEX 索引名 ON 表名(属性名)- 通过SQL语句创建普通索引
ALTER TABLE table_name ADD INDEX|KEY 索引名(属性名)- 创建表时创建唯一索引
CREATE TABLE table_name( 属性名 数据类型, 属性名 数据类型, UNIQUE INDEX|KEY 索引名(属性名)
)- 在已经存在的表上创建唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名(属性名)- 通过SQL语句创建唯一索引
ALTER TABLE table_name ADD UNIQUE INDEX|KEY 索引名(属性名)- 创建表时创建全文索引
CREATE TABLE table_name( 属性名 数据类型, 属性名 数据类型, FULLTEXT INDEX|KEY 索引名(属性名)
)- 在已经存在的表上创建全文索引
CREATE FULLTEXT INDEX 索引名 ON 表名(属性名)- 通过SQL语句创建全文索引
ALTER TABLE table_name ADD FULLTEXT INDEX|KEY 索引名(属性名)- 创建表时创建多列索引
CREATE TABLE table_name( 属性名 数据类型, 属性名 数据类型, INDEX|KEY 索引名(属性名1,属性名2)
)- 在已经存在的表上创建多列索引
CREATE INDEX 索引名 ON 表名(属性名1,属性名2)- 通过SQL语句创建多列索引
ALTER TABLE table_name ADD INDEX|KEY 索引名(属性名1,属性名2)- 删除索引
DROP INDEX index_name ON table_name
数据库视图
- 创建视图
CREATE VIEW view_name AS 查询语句- 查看视图定义信息
SHOW CREATE VIEW viewname- 查看视图设计信息
DESC viewname- 删除视图
DROP VIEW viewname- 修改视图
CREATE OR REPLACE VIEW viewname as 查询语句ALTER VIEW viewname as 查询语句- 对视图数据进行添加,删除直接影响基本表 视图来自多个基本表时,不允许添加和删除数据
数据库触发器
- 创建触发器
CREATE trigger trigger_name BEFORE|AFTER trigger_event ON table_name FOR EACH ROW trigger_STMTtrigger_name: 触发器名称 trigger_event: 包括(INSERT UPDATE DELETE) trigger_STMT:激活触发器后被执行的语句- 创建包含多条执行语句的触发器
DELIMITER $$CREATE trigger trigger_name BEFORE|AFTER trigger_event ON table_name FOR EACH ROW BEGIN trigger_STMT END
$$
DELIMITER;
DELIMITER $$:设置结束符号为$$
DELIMITER:将结束符号还原成";"
- 查看触发器
SHOW TRIGGERS- 删除触发器
DROP TRIGGER trigger_name
数据的操作
- 插入完整数据记录
INSERT INTO table_name(field1,field2,field3,.....fieldn) VALUES (value1,value2,value3,.....valuen)INSERT INTO table_name VALUES (value1,value2,value3,.....valuen)
- 插入数据记录一部分
INSERT INTO table_name(field1,field2,field3,.....fieldn) VALUES (value1,value2,value3,.....valuen)
- 插入多条完整数据记录
INSERT INTO table_name(field1,field2,field3,.....fieldn) VALUES (value11,value21,value31,.....valuen1),(value12,value22,value32,.....valuen2)......(value1m,value2m,value3m,.....valuenm)
INSERT INTO table_name VALUES (value11,value21,value31,.....valuen1),(value12,value22,value32,.....valuen2)......(value1m,value2m,value3m,.....valuenm)
- 插入多条部分数据记录
INSERT INTO table_name(field1,field2,field3,.....fieldn) VALUES (value11,value21,value31,.....valuen1),(value12,value22,value32,.....valuen2)......(value1m,value2m,value3m,.....valuenm)
- 插入查询结果
INSERT INTO table_name1 (field11,field12,field13,...field1n) SELECT (field21,field22,field23,...field2n) FROM table_name2 WHERE...- 更新特定数据记录
UPDATE table_name SET field1=value1,field2=value2,field3=value3 WHERE CONDITION- 更新所有数据记录
UPDATE table_name SET field1=value1,field2=value2,field3=value3 WHERE CONDITION 参数CONDITION 需要满足表table_name中所有的数据记录或者无关键字WHERE语句
- 删除特定的数据记录
DELETE FROM table_name WHERE CONDITION- 删除所有的数据记录
DELETE FROM table_name WHERE CONDITION 参数CONDITION 需要满足表table_name中所有的数据记录或者无关键字WHERE语句
单表数据记录查询
- 简单数据查询
SELECT field1,field2,....fieldn FROM table_name- 避免重复数据查询
SELECT DISTINCT field1,field2,....fieldn FROM table_name
- MYSQL支持的关系运算符
- 字段别名
SELECT field1 [AS] otherfield1,field2 [AS] otherfield2,fieldn [AS] otherfieldn FROM table_name- 条件数据记录查询
SELECT field1,field2,....fieldn FROM table_name WHERE CONDITION
- 带BETWEEN AND 关键字的范围查询
SELECT field1,field2,....fieldn FROM table_name WHERE field BETWEEN value1 AND value2
- 带IS NULL, IS NOT NULL关键字的空值查询
SELECT field1,field2,....fieldn FROM table_name WHERE field IS NULL
SELECT field1,field2,....fieldn FROM table_name WHERE field IS NOT NULL
- 带IN, NOT IN关键字的空值查询
SELECT field1,field2,....fieldn FROM table_name WHERE field IN (value1,value2,value3,..........valuen)
SELECT field1,field2,....fieldn FROM table_name WHERE field NOT IN (value1,value2,value3,..........valuen)
注意:在具体使用关键字IN时,查询的集合中如果存在NULL,则不会影响查询;如果使用关键字NOT IN,查询的集合中如果存在NULL,则不会有任何的查询结果- 带LIKE关键字的模糊查询
SELECT field1,field2,....fieldn FROM table_name WHERE field LIKE value
通配符“_”:匹配单个字符通配符“%”:匹配任意长度的字符
- 排序查询(默认为升序)
SELECT field1,field2,....fieldn FROM table_name WHERE CONDITION ORDER BY field1 [ASC|DESC] ,field2 [ASC|DESC]
- 限制数据记录查询数量
SELECT field1,field2,....fieldn FROM table_name WHERE CONDITION LIMIT OFFSET_START,ROW_COUNT
- 统计函数查询记录
函数: COUNT():记录条数 AVG():平均值
SUM():总和
MAX():最大值
MIN():最小值
SELECT function(field) FROM table_name WHERE CONDITION
注意事项: 对于MySQL软件所支持的统计函数,如果所操作的表中没有任何数据记录,则COUNT()函数返回数据0,而其他函数则返回NULL- 分组数据查询(分组关键字建议与统计函数一起使用)
SELECT function() FROM table_name WHERE CONDITION GROUP BY field如果想显示每个分组中的字段,可以通过函数GROUP_COUNT()来实现SELECT GROUP_COUNT(field) FROM table_name WHERE CONDITION GROUP BY field
- 多个字段分组
SELECT GROUP_COUNT(field),function(field) FROM table_name WHERE CONDITION GROUP BY field1,field2,....fieldn
- HAVING来实现条件限制分组数据记录
SELECT function(field) FROM table_name WHERE CONDITION GROUP BY field1,field2,..fieldn HAVING CONDITION
多表记录查询
- UNION:把具有相同字段数目和字段类型的表合并到一起
- 笛卡尔积:没有连接条件表关系返回的结果
- 内连接分为:自然连接、等值链接、不等链接
- 自然连接:
在具体执行自然连接时,会自动判断相同名称的字段,然后进行数据值的匹配
在执行完自然连接的新关系中,虽然可以指定包含哪些字段,但是不能指定执行过程中的匹配条件,即哪些字段的值进行匹配
在执行完自然链接的新关系中,执行过程中所匹配的字段名只有一个,即会去掉重复字段
- 等值链接:在新关系中不会去掉重复字段
- 不等链接:和等值链接查询的结果相反
- 外连接分为:左外链接、右外链接、全外连接
- 左外链接:包含关联左边表中不匹配的数据记录
- 右外链接:包含关联右边表中不匹配的数据记录
- 全外连接:表关系的笛卡尔积中除了选择相匹配的数据记录,还包含关联关系左右两边表中不匹配的数据记录
- 内连接查询语句
数据库基本操作
- 通过DOS窗口链接MySQL软件
- 创建数据库
- 查看数据库
- 选择数据库
- 删除数据库
- 查看数据库存储引擎
数据库表操作
- 创建表的语法
- 查看表结构
- 删除表
- 修改表名
数据库字段操作
- 增加字段
- 在表的第一个位置增加字段
- 在表的指定字段之后增加字段
- 删除字段
- 修改字段的数据类型
- 修改字段的名字
- 同时修改字段的名字和属性
- 修改字段的顺序
- 设置非空约束
- 设置字段的默认值
- 设置唯一约束
- 单字段主键
- 多字段主键
- 设置字段值自动增加
- 设置外键约束
数据库索引
- 创建表时创建普通索引
- 在已经存在的表上创建普通索引
- 通过SQL语句创建普通索引
- 创建表时创建唯一索引
- 在已经存在的表上创建唯一索引
- 通过SQL语句创建唯一索引
- 创建表时创建全文索引
- 在已经存在的表上创建全文索引
- 通过SQL语句创建全文索引
- 创建表时创建多列索引
- 在已经存在的表上创建多列索引
- 通过SQL语句创建多列索引
- 删除索引
数据库视图
- 创建视图
- 查看视图定义信息
- 查看视图设计信息
- 删除视图
- 修改视图
- 对视图数据进行添加,删除直接影响基本表 视图来自多个基本表时,不允许添加和删除数据
数据库触发器
- 创建触发器
- 创建包含多条执行语句的触发器
- 查看触发器
- 删除触发器
数据的操作
- 插入完整数据记录
- 插入数据记录一部分
- 插入多条完整数据记录
- 插入多条部分数据记录
- 插入查询结果
- 更新特定数据记录
- 更新所有数据记录
- 删除特定的数据记录
- 删除所有的数据记录
单表数据记录查询
- 简单数据查询
- 避免重复数据查询
- MYSQL支持的关系运算符
- 字段别名
- 条件数据记录查询
- 带BETWEEN AND 关键字的范围查询
- 带IS NULL, IS NOT NULL关键字的空值查询
- 带IN, NOT IN关键字的空值查询
- 带LIKE关键字的模糊查询
- 排序查询(默认为升序)
- 限制数据记录查询数量
- 统计函数查询记录
- 分组数据查询(分组关键字建议与统计函数一起使用)
- 多个字段分组
- HAVING来实现条件限制分组数据记录
多表记录查询
- UNION:把具有相同字段数目和字段类型的表合并到一起
- 笛卡尔积:没有连接条件表关系返回的结果
- 内连接分为:自然连接、等值链接、不等链接
- 自然连接:
- 等值链接:在新关系中不会去掉重复字段
- 不等链接:和等值链接查询的结果相反
- 外连接分为:左外链接、右外链接、全外连接
- 左外链接:包含关联左边表中不匹配的数据记录
- 右外链接:包含关联右边表中不匹配的数据记录
- 全外连接:表关系的笛卡尔积中除了选择相匹配的数据记录,还包含关联关系左右两边表中不匹配的数据记录
- 内连接查询语句
SELECT field1,field2,fieldn FROM join_tablename1 INNER JOIN join_tablename2 【INNER JOIN join_tablenamen】 ON join_condition
- 内连接中特殊的等值链接--自连接:表与自身进行链接
SELECT e.ename employeename,e.job,l.ename loadername FROM t_employee e, t_employee l WHERE e.mgr=l.empno;
- 外连接查询语句
- 合并查询数据记录
- 子查询
- 返回结果为单行单列或者单行多列子查询通常会包含比较运算符号(>,<,=,!=)等运算符
- 返回结果为多行单列的子查询通常会包含IN、ANY、ALL、EXISTS等关键字
- 当主查询的条件是子查询的查询结果时用IN
- 当主查询的条件满足子查询的返回结果中任意一条数据记录时用ANY
- =ANY:其功能与关键字IN一样
- >ANY:比子查询中返回数据记录中最小的还要大的数据记录
- <ANY:比子查询中返回数据记录中最大的还要小的数据记录
- 当主查询的条件满足子查询的返回结果中所有数据记录时用ALL
- >ALL(>=ALL):比子查询中返回数据记录中最大的还要大(大于等于)的数据记录
- <ALL(<=ALL):比子查询中返回数据记录中最小的还要小(小于等于)的数据记录
- EXISTS关键字是一个布尔类型,当返回结果集时为TRUE,不能返回结果集时为FALSE,查询时EXISTS对外表采用遍历方式逐条查询,每次查询都会比较EXISTS的条件语句,当EXISTS里的条件语句返回记录行时则条件为真,此时返回当前遍历到的记录;反之,如果EXISTS里的条件语句不能返回记录行,则丢弃当前遍历到的记录。
运算符
- 算数运算符 + - * / % 算数运算符除了可以直接操作数值外,还可以操作表中的字段 注意:/和%运算符 如果除数为0将是非法运算,返回结果为NULL
- 比较运算符 > < =(<=>) !=(<>) >= <= BETWEEN AND IS NULL IN LIKE REGEXP(正则)
- 实现特殊功能的比较运算符
- 逻辑运算符
- 位运算符
常用函数
- 创建存储过程
- 创建函数
- 操作变量
- 操作条件(异常)
这个语句其实是为了让我们的错误条件更加的清晰明了化的,对于上面的情况,像SQLSTATE '23000'这种表示是一种很不直观的方法,要通过相应的文档去对应,阅读起来比较不方便。而DECLARE....CONDITION可以对条件定义相对应的名称,看个例子就清楚了:
DECLARE duplicate_key CONDITION FOR SQLSTATE '23000'; 定义操作异常条件
DECLARE CONTINUE HANDLER FOR duplicate_key 处理定义的条件
BEGIN
-- body of handler
END;
- 游标
声明游标
DECLARE cursor_name CURSOR FOR select_statement
cursor_name:表示游标的名称
select_statement:表示SELECT语句
打开游标
OPEN cursor_name 打开一个游标时,游标并不指向第一条记录,而是指向第一条记录的前边
使用游标
FETCH cursor_name INTO var_name
将参数游标cursor_name中的SELECT语句的执行结果保存到变量参数var_name中 变量参数var_name必须在游标使用前定义 当第一次使用游标时 游标指向结果集的第一条记录
关闭游标
CLOSE cursor_name
- 使用流程控制
条件控制语句
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list ]
[ELSE search_condition]
END IF
CASE case_value
WHEN when_value THEN statement_list
END CASE
循环控制语句
begin_lable:LOOP
statement_list
END LOOP end_lable begin_lable和end_lable必须相同
对于循环语句想要实现退出循环体可以用LEAVE lable来退出 相当JAVA中的break
WHILE search_condition DO
statement_list
END WHILE
REPEAT search_condition DO
statement_list
ENDREPEAT
- 查看存储过程状态信息
SHOW PROCEDURE STATUS [LIKE 'pattern'] \G
- 查看函数状态信息
SHOW FUNCTION STATUS [LIKE 'pattern'] \G
- 在系统数据库information_schema中存在一个存储所有存储过程和函数信息的系统表routines
- 查看存储过程定义信息
SHOW CREATE PROCEDURE proce_name \G
- 查看函数定义信息
SHOW CREATE FUNCTION func_name \G
- 修改存储过程
ALTER PROCEDURE procedure_name [characteristic]
- 修改函数
ALTER FUNCTION function_name [characteristic]
- 删除存储过程
DROP PROCEDURE proce_name
- 删除函数
DROP FUNCTION func_name
MySql事务
事务的特性:原子性,一致性,隔离性,持久性
- 【MySQL】MySQL学习笔记
- 【mysql】mysql学习笔记
- Mysql学习笔记 --- mysql数据类型
- MySQL学习笔记--MySQL编程
- JBoss-MySql学习笔记
- mysql学习笔记
- Mysql学习笔记(1)
- Mysql学习笔记
- MySQL学习笔记
- Tomcat Mysql 。。。学习笔记
- mysql学习笔记
- mysql DB(学习笔记)
- MySQL 学习笔记一
- MySQL学习笔记
- mysql学习笔记
- mysql学习笔记
- MySQL学习笔记
- MySql学习笔记
- 认识虚拟化(virtualization)
- Nginx初了解
- vtk实现三点确定一个平面
- 栈溢出原理
- 数据结构思维 第四章 `LinkedList`
- MySQL学习笔记
- HDU 4717 The Moving Points
- angular 自定义过滤器>>截取字符串、去除字符串中的空格
- JavaWeb——Cookie,Session学习汇总
- mybatis的一些整理
- ZooKeeper_8_Java操作ZK_更新数据
- PC版通用布局页面
- 开发OpenCV+Qt+C++项目过程中遇到的问题及查找的答案
- maven添加本地jar到本地版本库