二话不说,官网献上:https://dev.mysql.com/
登录MySQL:mysql -p 密码 -u 用户名 -h 主机名 --default-character-set=utf8
>mysql -u root -p root用户登录 -u:指定登录的用户,后面有无空格均可
查看所有DB:SHOW DATABASES;
新建DB:CREATE DATABASE [IF NOT EXISTS] 数据库名;
进入/切换DB:USE 数据库名;
查看DB包含的数据表:SHOW TABLES;
查看表结构:DESC 表名;
结束符:英文分号(;)
大小写:语句不区分大小写->自动转为大写(故一般建议也是用大写)
数据区分大小写
标识符:字母开头+数字+三个特殊字符(#_$)
SELECT 字段... from 表名 WHERE 判断条件 ORDER BY DESC;
SELECT * FROM 表名 WHERE NOT 字段 LIKE '\_%' ESCAPE '\';
去除重复行:SELECT DISTINCT xxx…
a BETWEEN b AND c 包括左右:a>=b && a<=c
LIKE 反斜线(\)作为转义字符,但无法转义自身,需用ESCAPE关键字显式进行转义
IS NULL
IN
NOT、AND、OR
ORDER BY DESC 默认升序ASC,DESC降序
数据库函数
多表连接查询-联结(join):
写法一.
select * from 表名1,表名2
where 表名1.字段 = 表名2.字段 ;
写法二.
select * from 表名1
inner join 表名2
on 表名1.字段 = 表名2.字段;
select * from 表名1,表名2
where 表名1.字段 != 表名2.字段;
自连接:将一张表通过别名 “视为”不同的表,必须费性能(n的平方)
外连接
左外连接:以左表为基准(左表数据全部显示),去匹配右表数据,如果匹配成功 则全部显示;匹配不成功,显示部分(无数据部分 用NULL填充)
a.(oracle独有)
select * from 表名1,表名2
where 表名1.字段 = 表名2.字段(+) ;
b.
select * from 表名1
left outer join 表名2
on 表名1.字段 = 表名2.字段;
右外连接:以右表为基准(右表数据全部显示),去匹配左表数据,如果匹配成功 则全部显示;匹配不成功,显示部分(无数据部分 用NULL填充)
a.(oracle独有)
select * from 表名1,表名2
where 表名1.字段(+) = 表名2.字段 ;
b.
select * from 表名1
right outer join 表名2
on 表名1.字段 = 表名2.字段;
集合运算:
并运算:UNION
交运算:INTERSECT
差运算:MINUS
插入表信息语句:INSERT INTO 表名(字段...) VALUES(字段对应插入的值...);
同时插入多个值:INSERT INTO 表名(字段...) VALUES(字段对应插入的值...),(字段对应插入的值...),...;
修改表信息语句:UPDATE 表名 SET 字段=修改的值 WHERE 判断条件;
删除表信息语句:DELETE FROM 表名 WHERE 判断条件;
建表:
CREATE TABLE 表名(
字段 类型 [约束],
...
);
获取数据建表:
CREATE TABLE 表名
AS
取建表数据;
修改表结构:
ALTER TABLE 表名
ADD(
字段 类型 [约束],
...
);
仅修改一行数据可省略括号
修改列类型:
ALTER TABLE 表名
MODIFY 字段 新类型 [约束] [FIRST | AFTER 指定字段];
删除列:
ALTER TABLE 表名
DROP 字段;
重命名数据表:
ALTER TABLE 表名
RENAME TO 新表名;
修改列名:
ALTER TABLE 表名
CHANGE 字段 新字段 新类型;
删表:
DROP TABLE 表名;
删表-保留表结构:
TRUNCATE 表名;
truncate一次性删除全部,再新建表结构,速度快;delete一行一行删除
MySQL使用information_schema数据库里的TABLE_CONSTRAINTS表来保存所有的约束信息
行级约束:在建表类型后直接声明 - [约束]
表级约束:在建表末尾处补充说明 - CONSTRAINT 约束名 约束(字段…)
也可建表后在修改添加
增加约束:
ALTER TABLE 表名
ADD 约束(字段...);
修改列类型时增加约束:
ALTER TABLE 表名
MODIFY 字段 新类型 [约束] [FIRST | AFTER 指定字段];
删除约束:
ALTER TABLE 表名
DROP INDEX 约束名;
删除主键约束:
ALTER TABLE 表名
DROP PRIMARY KEY;
添加外键约束:
CONSTRAINT 约束名(表名_主表名_fk) FOREIGN KEY(字段) REFERENCES 主表(字段) [on delete cascade | on delete set null]
on delete cascade:删主表记录时从表记录级联删除
on delete set null:删主表记录时从表记录的外键设为null
创建索引:CREATE INDEX 索引名 ON 表名(字段...);
删除索引:DROP INDEX 索引名 ON 表名;
创建视图:
CREATE OR REPLACE VIEW 视图名
as
创建视图的数据
[with check option];
with check option:指定不允许修改该视图的数据
Oracle采用-with check only
删除视图:DROP VIEW 视图;
开启事务:
保留点SAVEPOINT: