MySQL 基本使用
数据库:
CREATE DATABASE 名字; //创建数据库
SHOW DATABASES; //查看所有数据库
SHOW CREATE DATABASE book\G; //查看创建好的数据库的定义
DROP DATABASE IF EXISTS 名字; //删除数据库
USE 名字; //使用数据库
引擎:
SHOW ENGINES; //查看引擎
SHOW VARIABLES LIKE 'storage_engine'; //查看默认引擎
数据表: 【使用前需要USE 数据库名;】 表名不区分大小写
CREATE TABLE SS(id INT(11),nam VARCHAR(25),salary FLOAT); //创建数据表
SHOW TABLES; //查看数据表
DESC SS; //查看表的结构
SHOW COLUMNS FROM 表名 FROM 库名; //查看表的结构2
SHOW CREATE TABLE 表名\G; //查看表的结构3
ALTER TABLE 旧名 RENAME 新名; //修改表名
ALTER TABLE 表名 MODIFY 字段名 数据类型; //修改字段的数据类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型; //修改字段名
ALTER TABLE 表名 ADD 新字段名 数据类型; //添加字段
ALTER TABLE 表名 ADD 新字段名 数据类型(约束条件) [FIRST | AFTER 已存在字段名] //添加字段 放到第一个 或者已存在字段名之后
ALTER TABLE xx ADD yy VARCHAR(12) not null; //添加有完整性约束条件的字段
ALTER TABLE 表名 DROP 字段名; //删除字段
ALTER TABLE 表名 MODIFY 字段1 数据类型 FIRSE | AFTER 字段2; //修改字段排列位置 数据类型为字段1的
ALTER TABLE 表名 ENGINE=更改后的引擎名; //更改表的存储引擎
#可以为每一张表选不同的存储引擎 但外键约束的表必须一致
ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; //删除表的外键约束
#外键约束名,定义表时CONSTRAINT后的参数
DROP TABLE IF EXISTS 表1,表2....; //删除没有关联的数据表
ALTER TABLE 子表 DROP FOREIGN KEY 子表中的外键约束名; //删除有关联的主表
#无法直接删去父表 1.先删去子,再删父 2.取消外键约束,再删父表
删除
DELETE FROM 表名 WHERE 条件;
DELETE FROM 表名; //删除所有记录
TRUNCATE TABLE 表名; //直接删除表
DROP TABLE 表名; //删除表
更新
UPDATE 表名
SET 指定更新字段名1=更新值1,指定更新字段名2=更新值2
WHERE 条件;
举例:
插入
INSERT INTO 要插入数据的表名 (要插入数据的哪些列) VALUES (每个列对应插入的数据);
上方
(id,name,age,info) 即要插入数据的列 可以省略
但是,需要为表的每一个字段指定值 且值的顺序和数据表中字段的定义时顺序相同
同时插入多条记录时,会返回一些信息:
将查询结果插入到表中:
INSERT INTO 表名1 (列名2)
SELECT (列名2) FROM 表名2 WHERE (条件);
MYSQL不关心返回的列名
根据列的位置进行插入
第一列对应插入表的第一列……
为表和字段取别名
- 表
表名字 AS 表别名
SELECT * FROM fruits AS O,sports AS S
WHERE O.FRUIT_NUM > 0 AND S.sport_num >2;
2.字段
列名 AS 列别名
SELECT O.FRUIT_NUM AS A , S.sport_num AS B
单表查询
SELECT * FROM 表名; //查询所有字段
SELECT 列名 FROM 表名; //查询指定字段
SELECT 列名1,列名2,。。。。; //查询多个指定字段
SELECT 列名1,列名2
FROM 表名
WHERE 条件; //查询指定记录
SELECT 列名1,列名2
FROM 表名
WHERE 条件 IN (100,200);
//查询满足指定范围内的记录 也可以WHERE 条件 NOT IN (100,200);
SELECT 列名1,列名2
FROM 表名
WHERE 条件 BETWEEN 100 AND 200; //查询满足指定范围内的记录 也可以WHERE 条件 NOT BETWEEN 100 AND 200;
需要使用通配符进行匹配查找,通过创建查找模式对表中的数据进行比较 ----LIKE
- 带LIKE的字符匹配查询
SELECT f_id,f_name
FROM fruits
WHERE f_name LIKE ‘B%’; //查找所有以b开头的f_name
// % 匹配任意长度的字符,甚至零字符
WHERE f_name LIKE ‘_B’; //‘_’ 匹配单个字符
- 查询空值
空值不同于0,也不同于空字符串
空值一般表示 数据未知 不适用 或 稍后添加数据
WHERE f_name IS NULL;
WHERE f_name NOT IS NULL;
- 带AND的多条件查询
WHERE f_name=’xx’ AND price>5;
- 带OR的
WHERE f_name=’xx’ OR price>5;
AND的优先级高于OR
- 查询结果不重复
SELECT DISTINCT 字段名 FROM 表名;
- 对结果排序
SELECT f_name FROM fruits ORDER BY f_name; //对指定的列数据排序【字母表顺序】
SELECT f_name FROM fruits ORDER BY f_name,f_price; //多列
多列排序时:首先排序的第一列必须有相同的列值,才会对第二列排序
如果第一列数据中所有值都是唯一的,将不再对第二列进行排序
SELECT f_name FROM fruits ORDER BY f_name DESC,f_price ASC; //ASC升序,默认 DESC降序