快速入门sql-b站网课笔记大全
快速入门sql-b站网课笔记大全
库解释意思系统:
1.information_schema库:信息数据库
例如:数据库名,数据库表,表字段(单词组成的格式)的数据类型与访问权限。
2.SCHEMATA表:提供MySQL实例中所有数据库信息
show databases 结果来源此表
3.TABLES表:提供关于数据中表的信息
4.COLUMNS表:提供表中列信息,详细描述某张表的所有列以及每个列信息
mysql库:MySQL的核心数据库
储存 数据库的用户,权限设置,关键字
performance_schema库:内存数据库
sys库:可以查询谁使用最多的资源、哪张表被访问最多
1.注释:
–空格
2.列出所有数据库:
show databases;
3.查看某一数据库中的所有表
use 哪一个库;
1.use mysql;
show tables;
2.show tables from mysql;
3.select函数
select now();
查看时间
select databases();
查看当前选择的库
select user()
查看当前登录数据库的用户
库解释意思系统:
1.information_schema库:信息数据库
例如:数据库名,数据库表,表字段(单词组成的格式)的数据类型与访问权限。
2.SCHEMATA表:提供MySQL实例中所有数据库信息
show databases 结果来源此表
3.TABLES表:提供关于数据中表的信息
4.COLUMNS表:提供表中列信息,详细描述某张表的所有列以及每个列信息
mysql库:MySQL的核心数据库
储存 数据库的用户,权限设置,关键字
performance_schema库:内存数据库
sys库:可以查询谁使用最多的资源、哪张表被访问最多
1.注释:
–空格
2.列出所有数据库:
show databases;
3.查看某一数据库中的所有表
use 哪一个库;
1.use mysql;
show tables;
2.show tables from mysql;
3.select函数
select now();
查看时间
select databases();
查看当前选择的库
select user()
查看当前登录数据库的用户
sql通用语法
1.分号结尾
2.不区分大小写
3.注释:单行:–或#
多行:/内容/
sql分类
ddl definition定义数据库对象
dml data manipulation language 对数据库里数据增删改
dql query 查询表中记录
dcl control 控制创建数据库用户和权限
ddl
1.查询
当前数据库
SELECT DATABASE();
所有数据库
SHOW DATABASES;
2.创建
CREATE DATBASE [IF NOT EXITS] 数据库名 [DEFAULT CHARCET字符集] [COLLATE排序规则];
3.删除
DROP DATABASE [IF EXISTS] 数据库名;
4.使用
USE 数据库名;
ddl 表操作 查询
1.查询当前数据库所有表
SHOW TABLES;
2.查询表结构
DESC 表名;
3.查询指定的建表语句
SHOW CREATE TABLE表名;
ddl 表操作 创建
CREATE TABLE 表名(
字段1 字段1类型 [COMMENT 字段1注释],
字段2 字段2类型 [COMMENT 字段2注释],
字段3 字段3类型 [COMMENT 字段3注释],
…….
字段n 字段n类型 [COMMENT 字段n注释]
)[COMMENT 表注释];
备注:[..]为可选参数,最后一个字段没有逗号
ddl 表操作 数据操作
1.三种:数值类型,字符串类型,日期时间类型
2.数值类型:
TINYINT小整数值 1
SMALLINT大整数值 2
MEDIUMINT 3
INT INTERGER 4
BIGINT极大整数值 8
FLOAT单精度浮点型 4
DOUBLE双精度 8
DECIMAL小数值
字符串类型
定长字符串CHAR
变长字符串VARCHAR
不超过255个字符的二进制数据TINYBLOB
短文本字符串TINYTEXT
二进制形式的长文本数据BLOB
长文本数据TEXT
二进制形式的中等长度文本数据MEDIUMBLOB
中等长度文本数据DEDIUMTEXT
二进制形式的极大文本数据LONGBLOB
极大文本数据LONGTEXT
ddl 表操作 修改
1.添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT注释] [约束];
例子:
ALTER TABLE EMP ADD NICKNAME VARCHAR(20);
2.修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
3.修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT注释] [约束];
例子:
ALTER TABLE EMP CHANGE NICKNAME USERNAME VARCHAR(30) COMMENT ‘昵称’;
4.删除字段
ALTER TABLE 表名 DROP 字段名 ;
例子:
ALTER TABLE EMP DROP USERNAME;
5.
删除表
DROP TABLE [IF EXISTS] 表名;
删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
dml数据操作语言
添加数据INSERT
1.给指定字段添加数据
INSERT INTO 表名(字段名1,字段名2..)VALUES (值1,值2….);
2.给全部字段添加数据
INSERT INTO 表名 VALUES (值1,值2….);
3.批量添加数据
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 条件];
修改语句据的条件可选,如果没有,修改整张表的数据
举例:
1.
UPDATE EMPLOYEE SET NAME = ‘tyq’ WHERE ID = 1;
2.
UPDATE EMPLOYEE SET NAME = ‘TYQ’,GENDER = ‘女’ WHERE ID = 1;
3.
UPDATE EMPLOYEE SET ENTRYDATE = ‘2008.8.8’;
删除数据DELETE
DELETE FFROM 表名[ WHERE 条件]
注意:
1.delete语句条件可选,若没有删除整张表
2.delete语句不能删除某个特定的值(可以使用update)
举例:
DLEETE FROM EMPLOYEE WHERE GENDER = ‘女’;
DELETE FROM EMPLOYEE;
DQL
dql语法:
SELECT
字段列表
FROM
表明列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
dql基本查询
1.查询多个字段
SELECT 字段1,字段2,字段n FROM 表名;
举例:
SELECT NAME,AGE FROM EMP;
SELECT * FROM 表名;
2.设置别名
SELECT 字段1 [AS别名1],字段2 [AS 别名2] … FROM 表名;
举例:
SELECT WORKADDRESS AS ‘工作地址’ FROM EMP;
3.去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
DQL条件查询
1.语法:
SELECT 字段列表 FROM 表名 WHERE 条件列表;
2.条件:
比较运算符
< = <= >=
<>或!= 不等于
BETWEEN…AND… 在某个范围内(取两边)
IN(…) 在in后面列表中的值,多选一?
LIKE 占位符 模糊匹配(_匹配单个字符,%匹配任意个字符)
IS NULL 是NULL(没有数据状态)
逻辑运算符
AND 或&& 并且
OR 或|| 或
NOT 或! 非
举例:
SELECT * FROM EMP WHERE AGE = 88;
SELECT * FROM EMP WHERE AGE <>20;
SELECT * FROM EMP WHEAR IDCARD IS NULL;
SELECT * FROM EMP WHEAR IDCARD IS NOT NULL;
SELECT * FROM EMP WHERE AGE <>20 OR AGE >88;
SELECT * FROM EMP WHERE AGE BETWEEN 15 AND 88;
SELECT * FROM EMP WHERE GENDER = ‘女’ AND AGE < 25;
SELECT * FROM EMP WHERE AGE IN (18,25,40);
SELECT * FROM EMP WHERE NAME LIKE ‘_ _ _’;
SELECT * FROM EMP WHERE IDCARD LIKE ‘%X’; # %表示多个字符,%x表示最后一个字符为X
dql聚合函数
1.将一列数据作为一个整体,进行纵向计算
2.常见聚合函数
COUNT统计数量
SELECT COUNT (*) FROM EMP;
SELECT COUNT(IDCARD) FROM EMP;
MAX最大值
SELECT MAX(AGE) FROM EMP;
MIN最小值
AVG平均值
SELECT (AGE) FROM EMP;
SUM求和
SELECT SUM(AGE) FROM EMP WHERE WORKADDRESS = ‘西安’;
3.语法:
SELECT 聚合函数(字段列表) FROM 表名;
4.注意:
null值不参加聚合函数运算
dql 分组查询
1.语法:
SELECT 分组字段 聚合函数 FROM 表名 [WHERE 表名] GROUP BY 分组字段名 [HAVING 分组后过滤条件] ;
where和having区别:
1.分组之前进行过滤,不满足where条件不进行分组
2.判断条件不同:where不能对聚合函数进行判断,having可以
3.执行顺序:where>聚合函数>having
1
SELECT GENDER,COUNT() FROM EMP GROUP BY GENDER ;
SELECT GENDER,AVG(AGE) FROM EMP GRUOP BY GENDER;
SELECT WORKADDRESS,COUNT() FROM EMP WHERE AGE<45 GROUP BY WORKADDRESS HAVING COUNT(*) >=3;
dpl排序查询
1.语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;
2.排序方式
ASC升序(默认值)
DESC降序
先按照排序1进行排序,若相同则按照排序方式2
举例:
SELECT * FROM EMP ORDER BY AGE ASC;
SELECT * FROM EMP ORDER BY TIME DESC;
SELECT * FROM EMP ORDER BY AGE, TIME DESC ;
dql 分页查询
1.语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询返回记录数;
注意:
1.起始索引从0开始
起始索引 = (查询页码-1)*每页显示记录数
2.分页查询:不同数据库有不同的语法,mysql是limit
3.如果查询的是第一页数据,起始索引可以省
直接写:limit 10
举例:
SELECT * FROM EMP LIMIT 10;
SELECT * FROM EMP LIMIT 10,10;
案例:
SELECT * FROM EMP WHERE GENDER = ‘女’ AND AGE IN (20,21,22,23);
SELECT * FROM EMP WHERE GENDER = ‘男’ AND (AGE ;BETWEEN 20 AND 40 ) AND NAME LIKE ‘___’;
SELECT GENDER,COUNT(*) FROM EMP WHERE AGE <60 GROUP BY GENDER;
SELECT NAME,AGE FROM EMP WHERE AGE<=35 ORDER BY AGE ASC,TIME ASC;
SELECT * FROM EMP WHERE GENDER = “女” AND AGE BETWEEN 20 AND 40 ORDER BY AGE,TIME ASC LIMIT 5;
dql 顺序
编写顺序:
SELECT
字段列表 //「字段」= Excel 里的「列名」
// 字段列表 = 列名集合
FROM
表明列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ODER BY
排序字段列表
LIMIT
分页参数
执行顺序和这个不同
DCL
1.用户管理(谁可以访问mysql数据库)
1.1创建用户
CREATE USER ‘用户名‘@’主机名’ IDENTIFIED BY ‘密码’;
1.2修改用户密码
ALTER USER ‘用户名‘@’主机名’ IDENTIFIED WITH mysql_native_password BY ‘密码’;
1.3删除用户
DROP USER ‘用户名‘@’主机名’;
2.权限控制(可以访问啥,并对他们可以做哪些操作)
2.1授权
GRANT 权限列表 ON 数据库.表名 TO ‘用户名‘@’主机名’;
2.2撤销权限
REMOVE 权限列表 ON 数据库名.表名 FROM ‘用户名‘@’主机名’;
函数
1.字符串函数
CONCAT字符串拼接
LOWER改为小写
UPPER改为大写
LPAD左填充
RPAD右填充
TRIM去除左右两边空格,不包括中间
SUBSTRING字符串截取
2.数值函数 需补充
3.日期函数
CUEDATE获取当前日期
CURTIME获取当前时间
NOW获取curtime和curdate
YEAR MONTH DAY获取所需的东东
DATE_ADD 添加时间周期
DATAIFF 计算两个日期相减
4.流程函数 需补充