js做网站跳转,有创意广告店名字大全,旅游 网站建设目标,wordpress搜索页增强刷题知识点#xff1a; null不能用这种判断#xff0c;要用is null 或者is not null 或者可用 ifnull来判断。 明确#xff1a;数据库DB是数据存储仓库。
数据库管理系统#xff08;Database management system#xff0c;DBMS#xff09;#xff0c;是操纵和管理数据库… 刷题知识点 null不能用这种判断要用is null 或者is not null 或者可用 ifnull来判断。 明确数据库DB是数据存储仓库。
数据库管理系统Database management systemDBMS是操纵和管理数据库的大型软件
SQL操作关系型数据库的编程语言。 关系型数据库RDBMS
建立在关系模型基础上由多张相互连接的二维表组成的数据库。特点使用表存储数据格式统一便于维护使用SQL语言操作标准统一使用方便。 SQL:
以分号结尾单行注释 --多行注释 /* zhushi*/
DDL(数据定义语言)
查询所有数据库 SHOW DATABASES;查询当前数据库 SELECT DATABASE();创建 CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];删除 DROP DATABASE[ IF EXISTS] 数据库名;使用 USE 数据库名;查询当前数据库所有表 SHOW TABLES;查询表结构 DESC 表名;查询指定表的建表语句 SHOW CREATE TABLE 表名创建 CREATE TABLE 表名( 字段1 字段1类型[COMMENT 表注释], 字段2 字段2类型[COMMENT 表注释] )[COMMENT 表注释]; 例age TINYINT UNSIGNED score DOUBLE(4,1) 用户名 usename varchar(50) 性别 gender char(1) 添加字段ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束]; 例ALTER TABLE emp ADD nickname varchar(20) COMMENT 昵称;
修改数据类型ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度); 修改字段名和字段类型ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束]; 例将emp表的nickname字段修改为username类型为varchar(30)ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT 昵称;
删除字段ALTER TABLE 表名 DROP 字段名;
修改表名ALTER TABLE 表名 RENAME TO 新表名;
删除表DROP TABLE [IF EXISTS] 表名; 删除表并重新创建该表TRUNCATE TABLE 表名; DML数据操作语言
添加数据INSERT
指定字段
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...); 全部字段INSERT INTO 表名 VALUES (值1, 值2, ...);
批量添加数据INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...); 字符串和日期类型数据应该包含在引号中
插入的数据大小应该在字段的规定范围内
修改数据UPDATE
修改数据UPDATE 表名 SET 字段名1 值1, 字段名2 值2, ... [ WHERE 条件 ]; 例UPDATE emp SET name Jack WHERE id 1;
删除数据(DELETE)
DELETE FROM 表名 [ WHERE 条件 ];
DELETE 语句的条件可以有也可以没有如果没有条件则会删除整张表的所有数据。
DELETE语句不能删除某一个字段的值这种情况用UPDATE
例
DELETE FROM employee WHERE gender ‘女’;
DQL(dara query language 数据查询语言) SELECT 字段列表
FROM 表名列表
WHERE 条件列表
GROUP BY 分组字段列表
HAVING 分组后条件列表
ORDER BY 排序字段列表
LIMIT 分页参数;
基础查询
查询多个字段SELECT 字段1, 字段2, 字段3, ... FROM 表名;SELECT * FROM 表名;
设置别名SELECT 字段1 [ AS 别名1 ], 字段2 [ AS 别名2 ], 字段3 [ AS 别名3 ], ... FROM 表名;SELECT 字段1 [ 别名1 ], 字段2 [ 别名2 ], 字段3 [ 别名3 ], ... FROM 表名;
去除重复记录SELECT DISTINCT 字段列表 FROM 表名;
转义SELECT * FROM 表名 WHERE name LIKE /_张三 ESCAPE / / 之后的_不作为通配符
条件查询
语法SELECT 字段列表 FROM 表名 WHERE 条件列表;
比较运算符功能大于大于等于小于小于等于等于 或 !不等于BETWEEN … AND …在某个范围内含最小、最大值IN(…)在in之后的列表中的值多选一LIKE 占位符模糊匹配_匹配单个字符%匹配任意个字符IS NULL是NULL
逻辑运算符功能AND 或 并且多个条件同时成立OR 或 ||或者多个条件任意一个成立NOT 或 !非不是
-- 年龄等于88
select * from employee where age 88;
-- 年龄小于30
select * from employee where age 30;
-- 小于等于30
select * from employee where age 30;
-- 没有身份证
select * from employee where idcard is null or idcard ;
-- 有身份证
select * from employee where idcard;
select * from employee where idcard is not null;
-- 不等于
select * from employee where age ! 30;
-- 年龄在20到30之间
select * from employee where age between 20 and 30;
select * from employee where age 20 and age 30;
select * from employee where age 20 age 30;
-- 下面语句不报错但查不到任何信息
select * from employee where age between 30 and 20;
-- 性别为女且年龄小于30
select * from employee where age 30 and gender 女;
-- 年龄等于25或30或35
select * from employee where age 25 or age 30 or age 35;
select * from employee where age in (25, 30, 35);
-- 姓名为两个字
select * from employee where name like __;
-- 身份证最后为X
select * from employee where idcard like %X;
聚合函数
将一列数据作为一个整体进行纵向计算。null值不参与所有聚合函数运算。
函数功能count统计数量max最大值min最小值avg平均值sum求和
语法
SELECT 聚合函数(字段列表) FROM 表名;
--统计该企业员工数量
SELECT COUNT(*) FROM emp;
SELECT COUNT(idcard) FROM emp
--平均年龄
SELECT AVG(age) FROM emp;
--最大年龄
SELECT MAX(age) FROM emp;--最小年龄
SELECT MIN(age) FROM emp;
--西安地区员工的年龄之和
SELECT SUM(age) FROM emp WHERE workaddress 西安; 分组查询
语法SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后的过滤条件 ];
where 和 having 的区别
执行时机不同where是分组之前进行过滤不满足where条件不参与分组having是分组后对结果进行过滤。判断条件不同where不能对聚合函数进行判断而having可以。
-- 根据性别分组统计男性和女性数量只显示分组数量不显示哪个是男哪个是女
SELECT COUNT(*) FROM emp GROUP BY gender;
-- 根据性别分组统计男性和女性数量
SELECT gender, COUNT(*) FROM emp GROUP BY gender;
-- 根据性别分组统计男性和女性的平均年龄
SELECT gender, AVG(age) FROM employee GROUP BY gender;
-- 年龄小于45并根据工作地址分组
SELECT workaddress, COUNT(*) FROM emp WHERE age 45 GROUP BY workaddress;
-- 年龄小于45并根据工作地址分组获取员工数量大于等于3的工作地址
SELECT workaddress, COUNT(*) FROM emp WHERE age 45 GROUP BY workaddress HAVING count(*) 3;
SELECT workaddress, COUNT(*) AS address_count FROM emp WHERE age 45 GROUP BY workaddress HAVING address_count 3;
注意执行顺序where聚合函数having 分组之后查询的字段一般为聚合函数和分组字段查询其他字段无任何意义。 排序查询
语法SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2; 排序方式
ASC: 升序默认DESC: 降序
如果是多字段排序当第一个字段值相同时才会根据第二个字段进行排序
-- 根据年龄升序排序
SELECT * FROM employee ORDER BY age ASC;
SELECT * FROM employee ORDER BY age;
-- 两字段排序根据年龄升序排序入职时间降序排序
SELECT * FROM employee ORDER BY age ASC, entrydate DESC;
分页查询
语法SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数; 注意事项
起始索引从0开始起始索引 查询页码 - 1 * 每页显示记录数分页查询是数据库的方言不同数据库有不同实现MySQL是LIMIT如果查询的是第一页数据起始索引可以省略直接简写 LIMIT 10
--查询第1页员工数据每页展示10条记录
SELECT * FROM emp LIMIT 0, 10;
SELECT * FROM emp LIMIT 10;
--查询第2页员工数据每页展示10条记录------页码-1*页展示记录数
SELECT * FROM emp LIMIT 10,10;
--统计员工表中年龄小于60男性员工和女性员工的人数
SELECT gender, COUNT(*)
FROM emp
WHERE age 60
GROUP BY gender
--查询所有年龄小于等于35岁员工的姓名和年龄并对查询结果按年龄升序排序年龄相同按入职时间降序排序SELECT name,age
FROM emp
WHERE age 35
ORDER BY age ASC. entrydate DESC;
DQL执行顺序
FROM - WHERE - GROUP BY - SELECT - ORDER BY - LIMIT DCLdata Control Language数据控制语言用来管理数据库用户、控制数据库的访问权限。
查询用户
USE mysql; SELECT * FROM user; 创建用户: CREATE USER 用户名主机名 IDENTIFIED BY 密码;
修改用户密码 ALTER USER 用户名主机名 IDENTIFIED WITH mysql_native_password BY 新密码;
删除用户 DROP USER 用户名主机名;
-- 创建用户test只能在当前主机localhost访问
create user testlocalhost identified by 123456;
-- 创建用户test能在任意主机访问
create user test% identified by 123456;
create user test identified by 123456;
-- 修改密码
alter user testlocalhost identified with mysql_native_password by 1234;
-- 删除用户
drop user testlocalhost;
注意事项 主机名可以使用 % 通配
权限控制
常用权限
权限说明ALL, ALL PRIVILEGES所有权限SELECT查询数据INSERT插入数据UPDATE修改数据DELETE删除数据ALTER修改表DROP删除数据库/表/视图CREATE创建数据库/表
MySQL - 智云知识
查询权限SHOW GRANTS FOR 用户名主机名;
授予权限GRANT 权限列表 ON 数据库名.表名 TO 用户名主机名;
撤销权限REVOKE 权限列表 ON 数据库名.表名 FROM 用户名主机名;
注意事项
多个权限用逗号分隔授权时数据库名和表名可以用 * 进行通配代表所有