1.数据库:用来储存和管理数据的仓库。
分为DDL、DML、DCL、DQL,分别是数据定义语言 (DDL)、数据查询语言(DQL)、数据操纵语言(DML)、数据控制语言(DCL) 。
-优点: (1)可以储存大量的数据
(2)方便检索
(3)保持数据的一致性、完整性
(4)安全可共享
2.DDL:
-数据类型:
(1)数值类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、DOUBLE、DECIMAL
(2)字符串类型:CHAR、VARCHAR、TINYBLONB、TINYTEXT、BLOB、TEXT、MEDIUMBLOB、MEDIUMTEXT、LONGBLOB、LONGTEXT
(3)日期时间类型:DATE、TIME、YEAR、DATETIME、TIMESTAMP
-操作表:
CREATE TABLE 表名(
列名 列类型,
列名 列类型,
......
);
注意:最后一个列则可以不用加逗号
3.DML:
(1)插入数据:INSERT INTO 表名(列名1,列名2, …) VALUES(值1, 值2)
(2)修改数据:UPDATE 表名 SET 列名1=值1, … 列名n=值n [WHERE 条件]
(3)删除数据:DELETE FROM 表名 [WHERE 条件]
4.DCL:
(1)查询用户:select * from mysql.user;
(2)创建用户:CREATE USER 用户名@地址 IDENTIFIED BY '密码';
(3)给用户授权:GRANT 权限1, … , 权限n ON 数据库.* TO 用户名;
(4)撤销授权:REVOKE权限1, … , 权限n ON 数据库.* FORM 用户名;
REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;
(5)查看用户权限:SHOW GRANTS FOR 用户名;
SHOW GRANTS FOR user1@localhost;
(6)删除用户:DROP USER 用户名;
DROP USER user1@localhost;
(7)修改用户密码:
USE mysql;
UPDATE USER SET authentication_string=PASSWORD('密码') WHERE User='用户名' and Host='IP';
FLUSH PRIVILEGES;
5.DQL:
(1)查询所有列:SELECT * FROM stu;
(2)条件查询:
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT sid, sname, age FROM stu;
6.聚合函数:
(1)count:统计数量
(2)max:最大值
(3)min:最小值
(4)sum:求和
(5)avg:求平均数
7.HAVING和WHERE的区别:
HAVING后面可以加聚合函数,而WHERE则不可以。
HAVING是在分组后对数据进行过滤WHERE是在分组前对数据进行过滤。
8.分页查询:SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;
注意事项:
• 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
• 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
• 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
9.常见的约束:
10.多表查询:
(1)联合查询:
UNION:去除重复记录
例如:SELECT * FROM t1 UNION SELECT * FROM t2;
UNION ALL:不去除重复记录
例如:SELECT * FROM t1 UNION ALL SELECT * FROM t2。
(2)连接查询:
例如:SELECT * FROM emp,dept WHERE emp.deptno=dept.deptno;
(3)内连接:
SELECT * FROM emp e INNER JOIN dept d ON e.deptno=d.deptno;
内连接的特点:查询结果必须满足条件。例如我们向emp表中插入一条记录:w
(4)外连接:
--左外连接
SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 条件 ... ;
--右外连接
SELECT 字段列表 FROM 表1 RIGHT [ OUTER ] JOIN 表2 ON 条件 ... ;
外连接的特点:查询出的结果存在不满足条件的可能。
外连接分为两种,分别是:左外连接 和 右外连接。具体的语法结构为:
(5)自连接:SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件 ... ;
左连接和右连接的区别:
以A表和B表为例子
A表如下:
B表如下:
左连接:select A.*,B.* from A left outer join B on(A.a1=B.a2)
右连接:select A.*,B.* from A right outer join B on(A.a1=B.a2)
左连接:左边有的,右边没有的为null
右连接:左边没有的,右边有的为null
11.子查询:
子查询就是嵌套查询,即SELECT中包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么就是子查询语句了。
例如:SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2 );
12.MySQL流程控制函数: