银川网站建设银川,外贸网站和内贸,天津北辰做网站,批量刷wordpress评论建库\建表create database [if not exists] 数据库名 [charset 码表名]; create table [if not exists] 数据表名(字段名 数据类型 [约束],字段名 数据类型 [约束],......字段名 数据类型 [约束] );切库use 数据库名;查看show databases;--查看所有数据库 ​ show create datab…建库\建表create database [if not exists] 数据库名 [charset 码表名];create table [if not exists] 数据表名( 字段名 数据类型 [约束], 字段名 数据类型 [约束], ...... 字段名 数据类型 [约束] );切库use 数据库名;查看show databases;--查看所有数据库 ​ show create database 数据库名;--查看数据库的(详细信息), 即: 码表. ​ select database();--查看当前正在使用的数据库.show tables;--查看当前数据中所有的数据表. ​ desc users;--查看表结构. ​ #查看表数据 select * from 表名;--查询所有的商品信息. select 所有字段名 from product; select pname, price from product;--查询商品名 和 商品价格 select pname, price 10 from product;--查询所有商品信息, 价格 10 select pname as 商品名, price as 商品单价 from product;--别名查询.格式为: as 别名, 其中 as 可以省略不写. select pname 商品名, price 商品单价 from product; select pname, price 10 as price from product as p; # 数据表也能起别名select * from 数据表名 where 条件;--条件查询 ​ 一个完整的单表查询语句的 完整 格式如下: select [distinct] 列名1 [as 别名], 列名2 [as 别名], ... from 数据表名 where 组前筛选 group by 分组字段 having 租后筛选 order by 排序字段 [asc | desc] limit 起始索引, 数据条数; ​ where后边的条件可以写 比较运算符: , , , , , !, 范围筛选: 连续区间: between 值1 and 值2 不连续区间: in (值1, 值2, 值3...) 模糊查询: like _ 或者 % _ 表示任意一个字符, % 表示任意多个字符 逻辑运算符: and 逻辑与, 并且的意思, 要求条件都要满足, 即: 有False则整体为False, 例如: 条件1 and 条件2 and 条件3... or 逻辑或, 或者的意思, 只要任意1个条件满足即可, 即: 有True则整体为True, 例如: 条件1 or 条件2 or 条件3... not 逻辑非, 取反的意思, 以前是True取反后是False, 以前是False取反后是True. 空筛选: 不为空: is not null 为空: is null ​ 聚合函数:select 聚合函数 [别名] from 数据表名. count() 适用于: 统计SQL表中的总条数(总行数) count(*) from product; count(1) from product; count(pid) from product; count(category_id) from product sum() 适用于: 对某列数据 求和 max() 适用于: 对某列数据 求最大值 min() 适用于: 对某列数据 求最小值 avg() 适用于: 对某列数据 ​ 分组查询: select * 与分组字段保持一致(用*不报错但没结果), 聚合函数 from 数据表名 where 组前筛选 group by 分组字段1, 分组字段2, ... 分组字段用哪个查询字段填哪个 having 组后筛选; ​ select * from 数据表名 limit 起始索引, 数据条数;--分页查询 ​ select * from 数据表名 order by 列名1 [asc | desc], 列名2 [asc | desc];--排序查询 ​ select distinct 列名 from 数据表名;--去重查询select * from 表A, 表B;--交叉查询 笛卡尔积, 表A的总条数 * 表B的总条数, 无意义, 会有大量的脏数据, 一般不用. ​ 内连接: # 格式1(显式内连接): select * from 表A [inner] join 表B on 关联字段 where ....; 注意: inner可以省略不写. # 格式2(隐式内连接): select * from 表A, 表B where 关联字段 ....; ​ 外连接: select * from 表A left [outer] join 表B on 关联字段 where ...;--左连接 左表的全集 表的交集 ​ select * from 表A right [outer] join 表B on 关联字段 where ...;--右连接 右表的全集 表的交集 ​ select * from 表A where 字段 (select 字段 from 表B where 条件);--子查询 # 实际开发中(生产环境), 为了提高开发效率, 研发期间可以先用子查询做, 之后项目测试,部署阶段阶段再把子查询替换成内连接查询. ​ 自关联: select province.id, province.title, # 省的id 和 省名 city.id, city.title, # 市的id 和 市名 county.id, county.title # 县区的id 和 县区名 from areas as county # 充当: 县区表 join areas as city on county.pid city.id # 充当: 城市表 join areas as province on city.pid province.id; # 充当: 省份表窗口函数解释(本质): ​ 窗口函数 给表新增1列, 至于新增的内容是什么, 取决于 你用什么函数.格式: ​可以和窗口函数用的函数 over(partition by 分组字段 order by 排序字段 asc|desc) 可以结合窗口函数一起用的函数(以下简称: 开窗函数, 窗口函数), 假设数据为: 100, 90, 90, 80, 则: ​ row_number() 行编号, 无论数据是啥, 都是从1开始, 往后逐个编号, 例如: 1, 2, 3, 4 ​rank() 稀疏排名, 如果数据一致则排名相同, 会跳跃数字, 例如: 1, 2, 2, 4 ​dense_rank() 密集排名, 如果数据一致则排名相同, 不会跳跃数字, 例如: 1, 2, 2, 3 细节:1. 窗口函数 函数 over(), 用什么函数, 就给表新增什么数据. 2. 如果不写partition by, 则: 统计全表的所有数据, 如果写了, 则统计: 组内的数据. 3. 如果不写order by, 则: 统计组内所有数据, 如果写了, 则统计: 组内第一行至当前行的数据. 4. 关于窗口函数, 你掌握2点即可, 分别是: 分组排名, 分组排名求TopNselect *, row_number() over(partition by deptid order by salary desc) as row_number1, rank() over(partition by deptid order by salary desc) as rank2, dense_rank() over(partition by deptid order by salary desc) as dense_rank3 from employee;--分组排名 ​ select * from ( select *, rank() over(partition by deptid order by salary desc) as rk from employee ) as t1 where rk 2;--分组排名求TopN常用函数help 函数名; 的形式, 可以帮助我们快速查询 函数的 用法(详细信息) 数字函数: round(): 四舍五入, 保留n位小数, 用法: round(number, n) floor() 地板数, 即: 向下取整, 获取比这个数字小的所有整数中, 最大的那个整数. ceil() 天花板数, 即: 向上取整, 获取比这个数字大的所有整数中, 最小的那个整数. mod() 取余函数, 用法: mod(N, M), 结果是 N % M pow() 指数函数, 用法: pow(N, M), 结果是 N 的 M 次方 rand() 随机函数, 获取 0.0 ~ 1.0 之间的随机数, 包左不包右. abs() 绝对值函数, 返回一个数的绝对值 字符串函数: lower(): 把字符串中所有的字母 - 转成 小写形式. upper(): 把字符串中所有的字母 - 转成 大写形式. reverse(): 字符串翻转 concat(): 拼接字符串, 直接拼接到一起, 连接符是, 格式为: concat(str1, str2, str3, ...) concat_ws(): 拼接字符串, 可以指定连接符, 格式为: concat_ws(连接符, str, str1, str2, str3, ...) replace(): 替换, 格式为: replace(str, old, new) 把字符串(str)中, 旧字符串(old) 用 新字符串(new) 替换. substr(), substring(): 功能一致, 格式为: substr(str, start, length) left(): 从字符串的左边(索引位置1开始)开始, 截取指定长度的字符串. 格式为: left(str, length) right(): 从字符串的右边(最后1个字符)开始, 截取指定长度的字符串. char_length(): 以字符的形式, 统计字符串的长度. length(): 以 码表的形式, 统计字符串的长度. 中文 - utf8码表中占3个字节, gbk码表中占2个字节. 数字,字母,特殊符号 - 无论什么码表, 都只占1个字节. ​ 日期函数 : now(): 获取当前系统时间. current_data(): 获取当前系统日期. current_time(): 获取当前系统时间. date_add(): 日期加法, 对指定日期, 加上指定的时间间隔, 获取新的日期. datediff(时间1, 时间2): 比较两个时间的不同, 即: 计算时间1 和 时间2的 间隔, 结果是: 结果1 - 结果2 select year(now()); select month(now()); select day(now()); select hour(now()); select minute(now()); select second(now()); --获取当前时间的: 年月日, 时分秒 select weekday(now()); 获取今天是: 周中的第几天 select dayofyea(now()); 获取今天是: 年中的第几天. select week(now()); 获取今天是: 年中的第几周 ​ 条件判断: 格式: case when 条件1 then 结果1 when 条件2 then 结果2 ...... else 结果n end 上述的格式有语法糖写法, 即: 如果判断条件用的字段是同一个, 且都是等于的判断, 则可以写成(如下形式): case 字段名 when 值1 then 结果1 when 值2 then 结果2 ...... else 结果n end [as 别名] CTE表达式:把查询结果临时的存储起来, 后续可以直接使用这个临时表, 简化操作. 格式: with 临时表名1 as (select .... 查询语句), 临时表名2 as (select .... 查询语句), ..... 临时表名3 as (select .... 查询语句) select * from 临时表名1....;增create database [if not exists] 数据库名 [charset 码表名]; --创建数据库.create table [if not exists] 数据表名( 字段名 数据类型 [约束], 字段名 数据类型 [约束], ...... 字段名 数据类型 [约束] );--创建数据表的格式: alter table 数据表名 add 列名 数据类型 [约束];--添加字段insert into 表名(列名1, 列名2, ...) values(值1, 值2, ...);--添加单条数据. insert into 表名 values(值1, 值2, ...);--全列添加 insert into 表名(列名1, 列名2, ...) values(值1, 值2, ...);--指定列添加数据 insert into 表名 values(值1, 值2, ...),(值1, 值2, ...); insert into 表名(列名1, 列名2, ...) values(值1, 值2, ...), (值1, 值2, ...);--同时添加多条数据.改alter database 数据库名 charset 新码表名;--修改数据库的码表修改数据表名: alter table 旧表名 rename to 新表名; rename table 旧表名 to 新表; ​ alter table 数据表名 modify 列名 数据类型 [约束];--修改字段的 数据类型 alter table 数据表名 change 旧列名 新列名 数据类型 [约束];--修改字段名和数据类型update 数据表名 set 列名1值1, 列名2值2, ... where 条件;--修改数据删drop database [if exists] 数据库名; --删除数据库.drop table [if exists] 数据表名;--删除数据表alter table 数据表名 drop 列名;--删除字段delete from 表名 where 条件;--删除数据 delete from 表名;--删除数据,不重置主键id truncate table 表名; --删除数据且重置约束1.主键:primary key 2.自增:auto_increment 3.非空:not null 4.默认值:default登录(终端)方式1: 明文. ​ mysql -uroot -p123456方式2: 暗文. ​ mysql -u root -p ​ 123456方式3: 远程. ​ mysql --hostip --userroot --password123456