
本文共 2570 字,大约阅读时间需要 8 分钟。
【主键】
1、主键(primary key)①一一列(或一组列),其值能够唯一区分表中每个行。
2、表中的任何列都可以作为主键,只要它满足以下条件:
任意两行都不具有相同的主键值;
每个行都必须具有一个主键值(主键列不允许NULL值)。
【列】
列(column) 表中的一个字段。所有表都是由一个或多个列组成的
【数据库命令行】
use databases; 选择数据库
show databases; 查看所有的数据库,
status; 查看mysql数据库的运行状态
show tables 查看数据库中的表
show columns from table; 查看列字段信息
show columns from schemaname.tablename
SHOW COLUMNS from xtp_credit_asset_auto ;
SHOW COLUMNS from xtp_credit_asset_20200717
describe table;查看表结构
【mysql自带的数据库】
【information_schema】
1、information_schema 看作是一个数据库,确切说是信息数据库
TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表
SELECT
CONCAT(
'ALTER TABLE ',
table_name,
' RENAME TO ',
REPLACE(table_name, '20200716', '20200717'),
';'
) //contact 拼凑字段 >> alter table_name rename to table_name_new ;
FROM
information_schema.TABLES // 正常用法 数据库.表名称的引用方法
WHERE
table_schema = 'xtp2' // 字段 显示其他数据库的名称
and table_name LIKE '%20200716' // 该字段显示数据库里面的表的名称
//这个sql语句的执行结果 得到很多sql语句 最后再执行以下 拼凑sql出来
【replace 用法】
REPLACE(s,s1,s2)使用字符串s2 替代字符串s 中所有的字符串s1
【检索数据】
1、检索单个 多个列
select zd from table; select zd,zd1 from table;
2、检索所有的列
select * from table
>>>可以用*匹配所有筛选 也可以只选择指定的字段
>>> SELECT == select SQL语句对大小写不敏感
3、消除重复的该字段 返回唯一
当distinct应用到多个字段的时候,其应用的范围是其后面的所有字段,而不只是紧挨着它的一个字段,而且distinct只能放到所有字段的前面
select distinct zd from table
select distinct zd,zd1 from table 消除后面所有重复的字段
select distinct * from table
不能部分使用DISTINCT
>>> distinct 默认去重后面所有的字段
【限制结果】
select zd fom table limit 5;
返回前五行
select zd fom table limit 5,5;
返回从行5开始的5行 start,rows_count
>>>第一行是 0行 最后一行是 -1
LIMIT 4 OFFSET 3意为 从行3开始取4行
<问题? 如何选取后五行?>
答:默认顺序的最后五行
排序取 order by zd desc limit 5
不排序取 limit 95,-1; // 检索记录行 96-last.
【使用完全限定的表明】
使用列名 引用列
使用表明.列名 引用列 完全限定
select table.zi from table
数据库名.表名 完全限定的方法引用
>>> 也可以使用别名来引用
【排序检索】order by zd desc 一起使用
升序 从低往上排 默认升序 理解就是 从小往大排序
单列排序///
之前的检索 出来的数据结果都是按照 随机 默认的排序来的
order by 语句默认按照升序对记录进行排序。 目前 看来是 先标点符号 后 数字升序 再 字母 升序
select zd from table
对返回的数据进行排序
select zd from table order by zd;
select zd from table order by zd1; 非选择列排序
select zd from table order by zd2; 非检索列排序
多列排序///
select zd,zd1 from table order by zd2,zd3;
优先zd2 排序 仅在有多个zd2的字段值 相等 相重复的情况下 才按照zd3来排序 否则用不到zd3
降序排列 单个
select sz,zd1 from table order by zd desc; 降序排列
多个 顺序 排列
select sz,zd1 from table order by zd desc,name 降序排列
首先按照价格 降序排列 在按照名字 升序排列
讨论1: a 于 A 这么排序?
在字典(dictionary)排序顺序中,A被视为与a相同,这是MySQL(和大多数数据库管理系统)的默认行为 需要区分的话 需要管理员的帮助
注意:order by 作用到其后面的所有字段 desc只作用 其前面的字段
distinct 作用到后面所有的字段
ASC 升序排列 默认 没用
<组合使用>
order by zd desc limit 1 最大的一个 升序 取第一个
order by zd limit 1 默认 升序 取最小的一个
问:如何按照指定的 方式排序??指定的 名称
答:order by