MySQL常用的语句语法
注意:
1、 | 符号用来指出几个选中中的一个,因此NULL | NOT NULL 表示给出null 或 not null
2、包含在方括号中的关键字或子句是可选的(如 [like this])
3、既没有列出所有的MySQL语句,也没有列出每一条子句和选项
4、大写的表示 MySQL语法关键字
一、命令行指令:
1、启动MySQL
net
2、连接与断开服务器
mysql
二、数据库操作
1、查看当前数据库
select
2、显示当前时间、用户名,数据库版本
select
3、创建库
create
其中数据库选项有
-- 选择字符集
4、查看已有库
show
5、查看当前库信息
show
6、修改库的选项信息
alter
7、删除库
drop
三、表操作
1、CREATE TABLE
create table 用于创建新数据库表,更新已存在的表结构使用 alter table ,constraints 表示约束
CREATE
相对复杂的
create
其中 temporary 表示临时表,会话结束时表自动消失
注意:
a、每个字段必须要有数据类型,最后一个字段后不能有逗号
b、对于字段的定义:
字段名
c、表选项:
字符集
CHARSET = charset_name
如果表没设定,使用数据库字符集
存储引擎
ENGINE = engine_name
表在管理数据时,往往采用不同的数据结构,结构不同会导致处理方式、提供特性操作等也不同
常见的存储引擎:InnDB、MyISAM、Memory/Heap、BDB、Merge、Example、CSV、MaxDB、Archive
不同的存储引擎在保存表的结构和数据时常采用不同的方式
MyISAM 表文件含义: .frm 表定义, .MYD 表数据, .MYI 表索引
InnoDB 表文件含义: .frm 表定义、表空间数据和日志文件
-- 显示存储引擎的状态信息
2、查看所有表
SHOW
3、查看表结构
SHOW
4、ALTER TABLE
alter table 用来更新已存在表的模式,为了创建新表,应该使用create table,constrains 表示约束
ALTER
a、修改表本身选项
ALTER
b、对表进行重命名
RENAME
c、修改表的字段结构
ALTER
有如下操作名
-- 增加字段
5、删除表
DROP
6、清空表数据
TRUNCATE
7、复制表结构
CREATE
8、复制表结构和数据
CREATE
四、数据操作
1、INSERT
insert 给表增加一行,或多行
INSERT
insert select 插入select 的结果到一个表
INSERT
注意:
如果要插入的值列表包含所有字段并且顺序一致,则可以省略字段列表,
可以同时插入多条记录
字段列表可以用 “*”代替表示所有字段
2、DELETE
delete 从表中删除一行或多行
DELETE
没有条件子句,会删除所有数据
3、UPDATE
update 更新表中一行或多行
UPDATE
五、字符集编码
MySQL,数据库,表,字段均可设置编码
-- 数据编码与客户端编码不需一致
注意:
-- 设置编码
六、查询语句
1、SELECT
select用于从一个或多个表(视图)中 检索数据
SELECT
详解:
select
其中
1.1、select_expr
a、计算公式、函数调用、字段也是表达式
如:
b、使用as 关键字为每个列设定别名,适用于简化列标识,避免多个列标识符重复。
如:
1.2、 from 子句
用于标识查询来源
a、使用 as 关键字为表起别名
如
b、from 子句后可以同时出现多个表。多个表会横向叠加到一起,而数据会形成一个笛卡尔积
就是下面的意思
如:
c、where 子句
用于从from 中获得的数据源中进行筛选。1为真,0为假,表达式由运算符和运算数组成
d、group by子句
group by 字段/ 别名 [排序方式]
分组后会进行排序,升序:ASC,降序 DESC
与
e、having 子句(条件子句)
与where 功能、用法相同、只是执行时机不同。where在开始时执行数据检测,对原数据进行过滤。having 对筛选出的结果进行再次过滤,where 不可以使用聚合函数。一般需要用到聚合函数才会用having。SQL 标准要求having子句必须引用group by 子句中的列或用于聚合函数中的列。
f、order by 子句(排序子句)
-- 支持对多个字段排序,升序ASC ,降序 DESC
g、limit 子句(限制结果集 子句)
仅对处理好的结果进行数量限制。将处理好的结果看作是一个集合,按照记录的现后顺序,索引从 0 开始
-- limit 获取条数 其中,省略第一个参数,表示索引从 0 开始。
h、distinct 选项
用于去除重复记录
2、多表联结查询
2.1、UNION
建议对每个select查询加上小括号。需要各select 查询的字段数量一样,即每个select 查询的字段列表(数量、类型)应一致,因为结果中的字段名以第一条select 语句为准。
-- 将多个select 查询的结果组合成一个结果集合 select ...union [ALL | DISTINCT] selelct ...
默认为distinct 方式,即所有返回的行都是唯一的。
2.2、子查询(需要用括号括起来)
a、from
from 后要求是一个表,必须给子查询结果取个别名,以简化每个查询内的条件。
如:
b、where
子查询返回一个值,不需要给子查询取别名
如:
c、列子查询
使用in 或 not in 子查询,查询结果返回单列
使用exists 和 not exists条件,返回1或0 ,常用于判断
如:
2.3、join 连接查询
将多个表的字段进行连接,可以指定连接条件。
a、内连接(inner join)
默认就是内连接,可省略inner。
只有数据存在时才能发送连接请求,即连接结果不能出现空行。
ON 表示连接条件,其条件表达式与 where 类似。
b、交叉连接(cross join)
没有条件的内连接。
如:
c、外连接(outer join)
如果数据不存在,也会出现在连接的结果中。
主要分为:左外连接和右外连接
左外连接(left outer join): 如果数据不存在,左表记录会出现,而右表以null 填充
右外连接(right outer join):如果数据不存在,右表记录会出现,而左表以null 填充
七、其他常用语句
1、CREATE INDEX
create index 用于在一个或多个列上创建索引
CREATE
2、CREATE PROCEDURE
create procedure 用于创建存储过程,常和delimiter一块用,parameters 表示参数列表
CREATE
3、CREATE USER
create user 用于向系统中添加新的用户账号
CREATE
4、CREATE VIEW
create view 用来创建一个或多个表上的新视图
CREATE
5、DROP
drop 永久地删除数据库对象(表、视图、索引、存储过程,触发器,用户等)
DROP
6、事务
6.1、COMMIT
commit 用来将事务处理写到数据库
COMMIT
6.2、ROLLBACK
rollback 用于撤销一个事务处理块
ROLLBACK
6.3、SAVEPOINT
savepoint 为使用rollback 语句设立保留点
SAVEPOINT
6.4、START TRANSACTION
start transaction 表示一个新的事务处理开始
START