一、通用语法
1、MySQL数据库的SQL语句不区分大小写
2、可以用/**/完成注释
3、常用数据类型
类型 | 描述 |
int | 整型 |
double | 浮点型 |
varchar | 字符串型 |
date | 日期类型,格式为yyyy-mm-dd,只有年月日没有时分秒 |
二、数据库操作
1、创建数据库
CREATE DATABASE 数据库名; e.g CREATE DATABASE hospital;
2、查看数据库
①查看数据库MySQL服务器中所有数据库
SHOW DATABASES; /*查看数据库MySQL服务器中所有数据库*/
②查看某个数据库定义的信息
SHOW CREATE DATABASE 数据库名; e.g SHOW CREATE DATABASE hospital;
3、删除数据库
DROP DATABASE 数据库名; e.g DROP DATABASE hospital;
4、切换数据库
USE 数据库名; e.g USE hospital;
三、表操作
1、创建表
CREATE TABLE 表名( 字段名 类型(长度) 约束, 字段名 类型(长度) 约束, ); e.g CREATE TABLE doctor( id INT PRIMARY KEY, name VARCHAR(20) NOT NULL, );
2、查看表
①查看数据库中的所有表
SHOW TABELS;
②查看表结构
DESC 表名; e.g DESC doctor;
3、删除表
DROP TABLE 表名; e.g DROP TABLE doctor;
4、修改表
①添加列
ALTER TABLE 表名 ADD 列名 类型(长度) 约束; e.g ALTER TABLE doctor ADD title VARCHAR(20); /*给医生表添加职称字段*/
②修改列类型长度及约束
ALTER TABLE 表名 MODIFY 列名 类型(长度) 约束 e.g ALTER TABLE doctor MODIFY title VARCHAR(50) NOT NULL;
③修改列名
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) 约束; e.g ALTER TABLE doctor CHANGE title doctitle VARCHAR(30);
④删除列
ALTER TABLE 表名 DROP 列名; e.g ALTER TABLE doctor DROP title;
⑤修改表名
RENAME TABLE 表名 to 新表名; e.g RENAME TABLE doctor to nurse;
四、数据操作
1、增加数据
INSERT INTO 表名 [(字段列表)] VALUES (值列表); e.g INSERT INTO doctor VALUES('001', '张三', '主治医师');
如果遇到主键冲突(即插入数据时,主键对应的值已经存在),可以选择更新或替换。
①更新
INSERT INTO 表名[(字段列表:包含主键)] VALUES(值列表) DUPLICATE KEY UPDATE 字段 = 新值; e.g /*假如说表中001已经是张三医生了,我现在要改成李四*/ INSERT INTO doctor VALUES('001', '李四', '实习医生') DUPLICATE KEY UPDATE name = '李四';
②替换
REPLACE INTO 表名 [(字段列表:包含主键)] VALUES(值列表); e.g REPLACE INTO doctor VALUES('001', '李四', '实习医生');
2、更新数据
UPDATE 表名 SET 字段 = 值 [WHERE条件][LIMIT更新数量]; e.g /*把职称是实习医生的前三个人改成主治医师*/ UPDATE doctor SET tilte = '主治医师' WHERE title = '实习医生' LIMIT 3;
3、删除数据
DELETE FROM 表名 [WHERE条件][LIMIT数量]; e.g /**/ DELETE FROM 表名 WHERE title = '实习医生' LIMIT 10;
4、查询数据
SELECT 字段列表/(*所有字段) FROM 表名 [WHERE条件]
①去重
DISTINCT
②WHERE子句
比较运算符: >, <, >=, <= ,!= ,<>, =, like, between and, in/not in 逻辑运算符: &&(and), ||(or), !(not)
③分组
GROUP BY 字段名
分组即根据某个字段进行分组(相同的放一组,不同的分到别的组,主要是为了统计数据),以下是数据统计函数:
COUNT():统计分组后的记录数,每一组有多少记录 MAX():统计每组的最大值 MIN():统计最小值 AVG():统计平均值 SUM():统计和
分组条件判断需要用:
HAVING
④排序
ORDER BY 字段名 [ADC|DESC]; /*ADC升序(默认),DESC降序*/
⑤限制数量
LIMIT 数据量; /*只用来限制长度*/ LIMIT 起始位置, 长度; /*限制起始位置和数量*/
五、连接查询
1、内连接:组合两个表中的记录,返回关联字段相符的记录。
左表 [INNER]JOIN 右表 ON 左表.字段 = 右表.字段; e.g dector AS dc INNER JOIN department dp ON dc.id = dp.id;
如果没有ON的话系统会保留所有结果,即两个表的笛卡尔积。
2、左外连接:左表的记录会全部显示出来,右表只会显示符合搜索条件的记录,右表记录不足的地方均为NULL。
左表 LEFT JOIN 右表 ON 左表.字段 = 右表.字段; e.g dector AS dc LEFT JOIN department dp ON dc.id = dp.id;
3、右外连接:左表只会显示符合搜索条件的记录,右表的记录将全部显示,左表记录不足的地方均为NULL。
左表 RIGHT JOIN 右表 ON 左表.字段 = 右表.字段; e.g dector AS dc RIGHT JOIN department dp ON dc.id = dp.id;
六、视图
视图是一种有结构(有行有列)但没有结果(结构中不真实存放数据)的虚拟表,虚拟表的结构来源不是自己定义,而是从对应的基表中产生(视图的数据来源)。使用视图主要为了查询,所以把视图当做表一样查询即可。
CREATE VIEW 视图名字 AS SELECT语句
1、查看视图
DESC 视图名字;
2、使用视图
直接把视图当做表一样查询即可
3、修改视图
视图本身不可修改,但视图的来源可以修改。
ALTER VIEW 视图名 AS 新的SELECT语句
4、删除视图
DROP VIEW 视图名