MySQL所有的代码全部封装,是需要固定的语法去调用即可。因此,下面给出一些常用的语法结构,以供查找调用。
一:基本操作
打开运行: services.msc//最好是管理员模式运行
启动Mysql: net start mysql
启动Mysql: net stop mysql
登录本地数据库: mysql -u root -p
创建数据库:CREATE DATABASE [IF NOT EXIETS] db_name [create_specification [,create_specification]....] ;
查询数据库: SHOW DATABASES;
显示数据库细节: SHOW CREATE DATABASE db_mane;
查看数据库存放地址: C:ProgramDataMySQLMySQL Server 8.0Data
删除数据库: DROP DATABASE bd_name;
选择数据表: use db_name;
查看当前所选择的数据库: select database();
二、数据库中表的操作
1.创建数据表
CREATE TABLE table_name
(
field1 datetype,
field2 datetype,
......
fieldn datetype,
);character set 字符局 collate 校对规则
//field:指定列名 datatype:指定列类型
//创建一个员工表
CREATE TABLE employee
(
id int,
name varchar(20),
gender char(1),
brithday date,
ebtry_date date,
job varchar(50),
salay double,
resume text
);
2.查看表结构:
使用:SHOW TABLES;
使用:describe:desc table_name;
查看建表语句:SHOW CREATE TABLE table_name;
3.修改数据表
3.1 修改表名
ALTER TABLE old_table_name RENAME [TO] new_table_name;
3.2 修改字段名
ALTER TABLE table_name CHANGE old_field new_field datetype;
3.3 修改字段的数据类型
ALTER TABLE table_name MODIFY field datetype;
3.4 添加字段
ALTER TABLE table_name ADD field datetype;
3.5 删除字段
ALTER TABLE table_name DROP field;
3.6 修改字段的排列位置
将field1放到表的最前面:ALTER TABLE table_name MODIFY field1 datetype FIRST;
将field1放到field2后面:ALTER TABLE table_name MODIFY field1 datetype AFTER field2 ;
3.7 删除数据表
DEOP table_name;
3.8 修改表的字符集编码
ALTER TABLE table_name character set XXX;
4.表的约束
4.1 主键约束——唯一标识表中的信息,为了快速查找表的信息
1)单字段主键: 字段名 数据类型 PRIMARY KEY
2)多字段之间:PRIMARY KEY (字段1,字段名2,...,字段名n)
4.2 非空约束——非空约束是指字段的值不能用NULL;
field dataType NOT NULL;
4.3 唯一约束——保证数据表中的字段的唯一性
field dataType UNIQUE;
4.4 默认约束——默认约束用于给数据表中的字段指定默认值
field dataType DEFAULT 默认值;
5.设置表的字段值自动增加
数据表中,若想为表中插入的新记录自动生成唯一的ID,可以使用AUTO_INCREMENT约束实现
基本语法格式为:field dataType AUTO_INCREMENT;
6.索引——在MySQL数据库中,允许建立索引加快数据表的查询和排序
6.1 索引分类
1)普通索引:由KEY或INDEX定义的索引
2)唯一性索引:由UNIQUE定义的索引
3)全文索引:由FULLTXXT定义的索引
4)单列索引:在表中单个字段上创建索引
5)多列索引:在表中多个字段上创建索引
6)空间索引:由SPATIAL定义的索引
6.2 创建索引
1)创建表的时候创建索引——简单、方便
CREATE TABLE table_name(
字段名1 数据类型[完整的约束条件],
字段名2 数据类型[完整的约束条件],
.......
字段名n 数据类型[完整的约束条件],
字段名 数据类型
[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY
[别名](字段名x[(长度)]) [ASC|DESC]
);
2)使用CREATE INDEX语句在已经存在的表上创建索引
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名
ON table_name(字段名[长度]) [ASC|DESC]
3)使用ALTER TABLE语句在已经存在的表上创建索引
ALTER TABLE table_name ADD[UNIQUE|FULLTEXT|SPATIAL] INDEX
索引名(字段名[长度]) [ASC|DESC]
6.3 删除索引
1)使用ALTER TABLE 删除索引
ALTER TABLE table_name DROP INDEX 索引名
2)使用DROP INDEX删除索引
DROP INDEX 索引名 ON
三 添加数据
3.1 为表中所有字段添加数据
1)INSERT语句中指定所有字段名
INSERT INTO table_name (字段名1,字段名2,...)
VALUES(值1,值2,...);
2)INSRET语句不指定字段名
INSERT INSERT INTO table_name VALUES(值1,值2,...);
//方式2要求插入值的顺序与字段名顺序一致,而方式1无要求
3.2 为表中的指定字段添加数据
INSERT INFO table_name(字段名1,字段名2,...)
VALUES(值1,值2,...);
3.3 同时添加多条记录
INSERT INTO table_name[(字段名1,字段名2,...)]
VALUES(值1,值2,...),(值1,值2,...),
.....
(值1,值2,...);
四 更新数据
语法格式:
UPDATE table_name
set 字段名1=值1[,字段名2=值2,...]
[WHERE 条件表达式];
//WHERE条件表达式时可选择的,可以更新部分数据,也可以更新全部数据;
五 删除数据
语法格式:
DELETE FROM table_name [WHERE 条件表达式];
//WHERE条件表达式时可选择的,可以更新部分数据,也可以更新全部数据;
六 单表查询
6.1 简单查询
使用SELECT语句
SELECT [DISTINCT] * |字段名1,字段名2,...
FROM 表名
[WHERE 条件表达式1]
[GROUP BY 字段名 [HAVING 条件表达式2]]
[ORDER BY 字段名 [ASC|DESC]]
[LIMIT [OFFSET] 记录数];
/*DISTINCT:可选参数,用于剔除查询结果中的重复数据
* |字段名1,字段名2,...:表示二者选择一个
GROUP BY:表示对查询的结果进行分组,可选参数;
ORDER BY:表示对查询的结果按照指定的字段名进行排序,可选参数;
LIMIT:用于限制查询结果的数量,可选参数;
OFFSET:偏移量,可选参数;
*/
6.2 按条件查询
1)带关系符查询(=,<,>,>=,<=,!=,<>)
SELECT 字段名1,字段名2,...
FROM table_name
WHERE 条件表达式;
2)带IN关键字查询
SELECT *|字段名1,字段名2,...
FROM table_name
WHERE 字段名 [NOT] IN(元素1,元素2,...)
3)带BETWEEN AND关键字的查询
SELECT *|字段名1,字段名2,...
FROM table_name
WHERE 字段名 [NOT] BETWEEN 元素1 AND 元素2,
4)空值查询
SELECT *|字段名1,字段名2,...
FROM table_name
WHERE 字段名 IS [NOT] NULL;
5)带DISTINCT关键字查询—起过滤作用
SELECT DISTINCT 字段名 FROM table_name;
6)带LIKE关键字查询-模糊查询
SELECT 字段名1,字段名2,...
FROM table_name
WHERE 字段名 [NOT] LIKE '匹配字符串';
/*
"匹配字符串"指定用来匹配的字符串,可以是普通字符串,也可以是通配符
a.通配符;
百分号(%)://('c%'表示以c开头的字符串)('c%d'表示以c开头、D结尾
的字符串)('c%'表示以包含C的字符串)
下划线(_):
*/
7)带AND关键字的多条件查询
SELECT *|字段名1,字段名2,...
FROM table_name
WHERE 条件表达式1 AND 条件表达式2 [...AND 条件表达式n]
8)带OR关键字的多条件查询
SELECT *|字段名1,字段名2,...
FROM table_name
WHERE 条件表达式1 OR 条件表达式2 [...OR 条件表达式n]
6.3 高级查询
1)聚合函数
a.COUNT()函数——返回某列的函数
SELECT COUNT(*) FROM table_name;
b.sum()函数——求和函数
SELECT SUM(字段名) FROM table_name;
c.AVG()函数——用于求某个字段的平均值
SELECT AVG(字段名) FROM table_name;
d.MAX()函数——用于求某个字段的最大值
SELECT MAX(字段名) FROM table_name;
d.MIN()函数——用于求某个字段的最小值
SELECT MIN(字段名) FROM table_name;
2)对查询结果排序
SELECT 字段名1,字段名2,...
FROM table_name
ORDER BY 字段名1 [ASC|DESC],字段名1 [ASC|DESC],...
3)分组查询
SELECT 字段名1,字段名2,...
FROM table_name
GROUP BY 字段名1,字段名2,...[HAVIN 条件表达式]
七.多表操作
7.1 外键
1)添加外键
alter table table_name add constraint FK_ID foreign
key(外键字段名) REFERNCES 外键表名(主键字段名);
2)删除外键
alter table table_name drop foreign key 外键名;
7.2 连接查询
1)交叉连接-查询所有可能的数据,包含很多错误
SELECT * 表1 CROSS JION 表2;
2)内连接-查询左边表有且右边表也有的数据
SELECT查询字段 FROM 表1 [INNER] 表2
ON 表1.关系字段=表2.关系字段;
3)左外连接-在内连接基础上增加左表有而右表没有的数据
SELECT查询字段 FROM 表1 LEFT 表2 ON
表1.关系字段=表2.关系字段 WHERE 条件;
4)右外连接-在内连接基础上增加右表有而左表没有的数据
SELECT查询字段 FROM 表1 LEFT 表2 ON
表1.关系字段=表2.关系字段 WHERE 条件;
5)全外连接- 在内连接基础上增加右表有而左表和左表有而右表没有的数据
//MySQL不支持查询
SELECT查询字段 FROM 表1 LEFT 表2 ON
表1.关系字段=表2.关系字段 WHERE 条件;
7.3 子查询
一个查询语句嵌套在另一个查询语句内部的查询
在操作符为:IN、EXISTS、ANY、ALL
//EXIETS查询效率比IN高
八 事务-要么一起完成,要么同时不完成
8.1 事务管理
开启事务:START TRANSACTION; //这条语句后的SQL处于同一事务中
提交事务:COMMIT;
回滚数据:ROLLBACK;
/*
1)事务具有原子性、一致性、隔离性、持久性;
2)事务一定需要进行提交操作,才真正的作用在数据库上;
3)事务的回滚操作只能作用在未提交的事务上
*/
九 存储过程——作用类似于JAVA语言中的方法
9.1 创建存储过程
CREATE PROCEDURE sp_name([proc_parameter])
[characteristic...]routine_body
/*
CREATE PROCEDURE用来创建存储过程的关键字
sp_name为存储过程的名称
proc_parameter为指定存储过程的参数列表
其列表形式如下
[IN|OUT|INOUT]param_name type
*/
9.2 调用存储过程
CALL SP_name([parameter[,...]])
9.3 修改存储过程
ALTER {PROCEDURE|FUNCTION} sp_name[characteristic...]
9.4 删除存储过程
DROP {PROCEDURE|FUNCTION} sp_name