Fork me on GitHub

MySQL基础

如今的前端开发不再是以前的切图仔或者是写写静态页面就能胜任的了,如今的工作中也常用到PHP和MYSQL,这就要求我们前端开发也必须熟悉PHP和mMySQL相关内容,这篇博客仅是记录mysql学习课程笔记。

MySQL常用语句

登录 mysql -uroot -p
登录并打开某数据库 mysql -uroot -p -D db_name

常用MySQL的关键字需要大写,库名,表名,字段名需要小写

常用sql语句

SELECT USER();
SELECT VERSION();
SELECT NOW();
SELECT DATABASE();
SHOW WARNINGS; -- 查看上一步产生的警告
MySQL注释
-- 注释内容
创建数据库
CREATE DATABASE db_name;
CREATE DATABASE IF NOT EXISTS db_name;
CREATE DATABASE db_name CHARACTER SET 'UTF8';
查看数据库的详细信息
SHOW CREATE DATABASE db_name;
修改数据库编码方式
ALTER DATABASE db_name CHARACTER SET 'UTF8';
查看当前服务器下的全部数据库
SHOW DATABASES;
删除指定的数据库
DROP DATABASE db_name;
DROP DATABASE IF EXISTS db_name;
创建数据表
CREATE TABLE [IF NOT EXISTS] tb_name(
    字段名称 字段类型[完整性约束条件],
    ...
)ENGINE=存储引擎 CHARSET=编码方式
mysql中字段类型
  • 数值型
  • 字符串型
  • 日期时间类型
完整性约束条件
  • unsigned 无符号没有负数,从0开始
  • zerofill 当显示长度不够使用前补0填充
  • NOT NULL 非空
  • DEFAULT 默认值
  • PRIMARY KEY 主键 标识记录的唯一性,不能重复 一个表只能有一个主键
  • UNIQUE KEY 唯一性 可有多个唯一性字段 NULL除外
  • AUTO INCREMENT 自动增长 只能用于数值列 配合索引
  • FOREIGN KEY 外键约束
查看数据表
SHOW TABLES;
SHOW FULL TABLES FROM db_name;
查看指定数据表的详细信息
SHOW CREATE TABLE tb_name;
查看表结构
DESC tb_name;
删除指定数据表
DROP TABLE IF EXISTS tb_name;
彻底清空数据表
TRUNCATE tb_name;
向表中插入数据
INSERT tb_name(id,username ...) VALUES(1,'jesse'...);
查询表中所有记录
SELECT * FROM imooc_user;

表结构相关操作

添加字段
ALTER TABLE tb_name
ADD 字段名称 字段属性[约束条件];
删除字段
ALTER TABLE tb_name
DROP 字段名称;
添加默认值
ALTER TABLE tb_name
ALTER 字段名称 SET DEFAULT 默认值;
删除默认值
ALTER TABLE tb_name
ALTER 字段名称 DROP DEFAULT;
修改字段类型 字段属性
ALTER TABLE tb_name
MODIFY 字段名称 字段类型[字段属性]
修改字段名称 字段类型 字段属性
ALTER TABLE tb_name
CHANGE 原字段名称 新字段名称 字段类型[字段属性]
添加主键
ALTER TABLE tb_name
ADD PRIMARY KEY(字段名称);
删除主键
ALTER TABLE tb_name
DROP PRIMARY KEY;
添加唯一
ALTER TABLE tb_name
ADD UNIQUE KEY|INDEX index_name(字段名称);
删除唯一
ALTER TABLE tb_name
ADD index_name;
修改表名
ALTER TABLE tb_name RENAME new_tb_name;
RENAME TABLE tb_name TO new_tb_name;
添加记录
INSERT tb_name(col_name...) VALUES(values...);
添加多条记录
INSERT tb_name(col_name...) VALUES(values...),(values...);
修改记录
UPDATE tb_name SET 字段名称=值,字段名称=值 WHERE 条件
删除记录
DELETE FROM tb_name WHERE 条件
查询记录
SELECT * FROM tb_name;
SELECT 字段名称 FROM db_name.tb_name;
SELECT 字段名称 别名 FROM tb_name;
选出null值
SELECT * FROM user WHERE userDesc<=>NULL;
SELECT * FROM user WHERE userDesc IS [NOT] NULL;

指定范围 BETWEEN ... AND ...
指定集合 IN(...)
匹配字符 LIKE %代表任意长度字符 _代表任意一个字符

GROUP BY分组

配合GROUP_CONCAT()使用

SELECT GROUP_CONCAT(username),age,sex FROM user1 GROUP BY sex;

配合函数使用 MAX() MIN() AVG() SUM()
COUNT()当统计的字段值为null时不计入在内
COUNT(*)会全部计入
配合WITH ROLLUP使用 会在记录末尾添加一条记录,是所有上面记录的总和
HAVING子句对分组结果进行二次筛选

ORDER BY 排序

SELECT id,ussename,age FROM user
ORDER BY id DESC,age ASC;

LIMIT 限制结果集显示条数

SELECT * FROM user LIMIT 5;
SELECT * FROM user LIMIT 0,5; offset从0开始

多表查询

内连接

SELECT 字段名... FROM tb_name1 INNER JOIN tb_name2 ON 连接条件

SELECT e.id,e.username,e.age,d.depName
FORM emp AS e
INNER JOIN dep AS d
ON d.id = e.depId;
外连接
SELECT 字段名... FROM tb_name1
LEFT [OUTER] JOIN tb_name2
ON 条件;

SELECT 字段名... FROM tb_name1
RIGHT [OUTER] JOIN tb_name2
ON 条件;

创建外键

建表创建

FOREIGN KEY(字表字段名) REFERENCES 父表(父表主键字段名)

动态创建

添加外键之前表中数据没有脏值

ALTER TRABLE tb_name
ADD FOREIGN KEY(外键字段) REFERENCES 主表(主键字段);

删除外键

ALTER TABLE tb_name
DROP FORENGIN KEY fk_name;
添加外键时指定级联操作
ALTER TABLE tb_name
ADD FOREIGN KEY(外键字段) REFERENCES 主表(主键字段);
ON DELETE CASCADE ON UPDATE CASCADE;
由IN引发的子查询
SELECT * FROM emp
WHERE depId IN (SELECT id FROM dep);
由EXISTS引发的子查询
SELECT * FROM emp
WHERE EXISTS (SELECT depName FROM dep WHERE id=10);

INSERT ... SELECT ...将查询结果插入
CREATE ... SELECT ...将查询结果写入表
INSERT ... SET ... 将查询结果赋值给某字段

联合查询
  • UNION 合并查询结果并去掉重复
  • UNION ALL 合并查询结果

常用函数

  • CHAR_LENGTH()返回字符串字符数
  • LENGTH()返回字符串长度
  • CONCAT(S1,S2...)合并字符串 如果字符串中包含null,结果为null
  • CONCAT_WS(X,S1,S2...)已指定分隔符拼接字符串
  • UPPER()|UCASE()转大写
  • LOWER()|LCASE()转小写
  • REVERSE()反转字符
  • LEFT()|RIGHT()
  • SUBSTRING()截取字符串
  • STRCMP()比较字符串
posted @ 2018-05-23 20:56  Jesse131  阅读(237)  评论(0编辑  收藏  举报