sql分为,sql分类有哪些
墨初 知识笔记 126阅读
注意DML只是进行增删改DQL才有查询
SHOW DATABASES;
2. 查询所处数据库 SELECT DATABASE();
3. 创建数据库 CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];--例CREATE DATABASE test01 DEFAULT CHARSET utf8mb4;
4. 删除数据库 DROP DATABASE [IF EXISTS] 数据库名;
5. 使用 USE 数据库名;
表操作 1. 查询当前数据库中所有表 SHOW TABLES;
2. 查询表结构 DESC 表名;
3. 查询指定表的建表语句 SHOW CREATE TABLE 表名;
4. 添加字段 ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
5. 修改字段类型 ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
6. 修改字段名和字段类型 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
7. 删除字段 ALTER TABLE 表名 DROP 字段名;
8. 修改表名 ALTER TABLE 表名 RENAME TO 新表名;
9. 创建表 CREATE TABLE 表名(字段1 字段1类型 [COMMENT 字段1注释], ... 字段1 字段1类型 [COMMENT 字段1注释])[COMMENT 表注释];
10. 删除表 DROP TABLE [IF EXISTS] 表名;
11. 删除表中所有数据删表后建表 TRUNCATE TABLE 表;
数据类型 日期类型注意timestamp 跟 datetime它们表示的年份范围不同其中timestamp会根据时区不同自动转换日期时间而datetime则会保持不变。

现在我们运行
修改当前会话的时区:

set time_zone8:00;
再次查看数据
性能
由于 TIMESTAMP 需要根据时区进行转换所以从毫秒数转换到 TIMESTAMP 时不仅要调用一个简单的函数还要调用操作系统底层的系统函数。这个系统函数为了保证操作系统时区的一致性需要进行加锁操作这就降低了效率。
DATETIME 不涉及时区转换所以不会有这个问题。
为了避免 TIMESTAMP 的时区转换问题建议使用指定的时区而不是依赖于操作系统时区。
# 查看当前会话时区SELECT session.time_zone;# 设置当前会话时区SET time_zone Europe/Helsinki;SET time_zone 00:00;# 数据库全局时区设置SELECT global.time_zone;# 设置全局时区SET GLOBAL time_zone 8:00;SET GLOBAL time_zone Europe/Helsinki;
DML DMLData Manipulation Language数据操作语言用于对数据库表中表的数据记录进行增删改操作。
添加数据 指定字段添加数据INSERT INTO 表名 (字段名1,字段名2,...) values (值1值2...);
给全部字段添加数据 INSERT INTO 表名 VALUES (值1,值2,...);
批量添加数据 INSERT INTO 表名 (字段名1,字段名2,...) values (值1,值2,...),(值1,值2,...);
注意字符串和日期类型数据应该包含在括号中。
更新数据UPDATE 表名 SET 字段名1 值1,字段名2 值2,...[WHERE 条件];
注意条件可以有也可以没有没有就是修改整张表的所有数据。
删除数据DELETE FROM 表名 [WHERE 条件];
注意DELETE不设置条件删除整张表DELETE不能删除某个字段但可以使用UPDATE
DQL 基本查询 多字段查询SELECT 字段1,字段2... FROM 表名;
全部字段查询 SELECT * FROM 表名;
设置别名 SELECT 字段1 [AS 别名1],字段2 [AS 别名1]... FROM 表名;
去除重复记录 SELECT DISTINCT 字段列表 FROM 表名;
查询的字段列表数据完全一致为重复。
条件查询SELECT 字段列表 FROM 表名 WHERE 条件列表;
条件
查询姓名为两个字的员工信息
SELECT * FROM emp WHERE emp_name LIKE __;
查询身份证最后一位为X的员工信息
SELECT * FROM emp WHERE idcare LIKE %X;
聚合函数 SELECT 聚合函数(字段列表) FROM 表名;
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
where与having条件
执行时机不同where是分组之前进行过滤不满足where条件不参与分组而having是分组之后对结果进行过滤。判断条件不同where不能对聚合函数进行判断而having可以。注意
执行顺序where > 聚合函数 > having。
分组之后查询的字段一般为聚合函数和分组字段查询其他字段无任何意义。
查询年龄小于45的员工并根据工作地址分组获取员工数量大于等于3的工作地址
SELECT workaddress FROM emp WHERE age < 45 GROUP BY workaddress HAVING COUNT(*) > 3;
排序查询 SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式
排序方式
ASC升序默认值DESC降序注意如果是多字段排序当第一个字段值相同时才会根据第二个字段排序。
分页查询SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
执行顺序 DCL 管理用户 查询用户【用于查询有哪些用户对当前数据库管理系统有哪些权限】 USE mysql;SELECT * FROM user;
创建用户【表示创建的用户能访问数据库管理系统并没有权限访问数据库需要授权】 create user 用户名主机名 identified by 密码;
主机名使用localhost时表示只能在本机访问可以使用%表示任意主机都可访问例如可以进行远程连接。
修改用户密码alter user 用户名主机名 identified with mysql_native_password by 新密码;
删除用户 drop user 用户名主机名;
权限管理 查询权限 SHOW GRANTS FOR 用户名主机名
授予权限 GRANT 权限列表 ON 数据库名.表名 TO 用户名主机名;
撤销权限 REVOKE 权限列表 ON 数据库名.表名 FROM 用户名主机名;
权限列表 MySQL中定义了很多种权限但是常用的就以下几种
注意
多个权限之间使用逗号分隔授权时数据库名和表名可以使用*进行通配表示所有。标签: