精华内容
下载资源
问答
  • 数据库之select时取别名

    万次阅读 2018-07-28 13:00:51
    怎么取别名? select 列名 as 别名,//方法1 列名 别名,//方法2 from ...这两种取别名方法是所有数据库通用的 ...如果你在写应用的时候,把取到的东西放在...所以取别名的时候,最好别名设置成大写。   取别名...

    怎么取别名?

    select

    列名 as 列别名,//方法1

    列名 列别名,//方法2

    from

    表名;

    这两种取别名方法是所有数据库通用的

     

    取了别名后返回的字段是如何的?

    如果你在写应用的时候,把取到的东西放在了Map中,那么你的获取方式是Map.get(列别名)。

    但是你要注意有些数据库是默认转换成大写的,有些不会。所以取别名的时候,最好给别名设置成大写。

     

    取别名有什么好处?

    1.可以对一张表多操作,比如

    update 表名 as 别名1,表名 as 别名2 ...

    这样可以同时对一张表进行 行的匹配 与 操作

    2.避免和原生关键字冲突

    3.比如一个数据库需要路径、需要数据库类型名,如果路径一旦改动,就要大面积的修改;但是起个别名,只需要改数据库路径、数据库类型名和别名的映射就可以了

    展开全文
  • 1、多表查询 当需要查询的数据在多张表,...字段取别名,提高查询结果的可读性。 select 字段 as 别名 from 表名; 取别名,可以精简SQL语句。 select 别名.字段 from 表名 as 别名; 3、分组查询 select 字段

    1、多表查询
    当需要查询的数据在多张表中,这种查询叫多表查询。
    select 字段 from 表1,表2 where 条件。
    注意:一定要where条件,否则会产生笛卡乐积。
    练习1:班级编号是2086的属于哪所学校,查出学校的名字。
    练习2:查询出每个班级的班主任的姓名,教授的课程。

    2、取别名
    给字段取别名,提高查询结果的可读性。
    select 字段 as 别名 from 表名;

    给表取别名,可以精简SQL语句。
    select 别名.字段 from 表名 as 别名;
    

    3、分组查询
    select 字段 from 表名 group by 字段;
    一般配合组函数使用
    练习3:查询出每个学校班级的数量
    练习4:查询出学校id为1006的班级的数量
    当需要对分组后的数据进行过虑,having 相当于 select 的 where 子句。

    语句的顺序:
        select 组函数(字段)
            from 表名
                where 条件
                    group by 分组标准
                        having 条件
                            order by 排序标准
    

    4、子查询
    把一个查询的结果当作另一个查询的基础,这种查询叫子查询,原理就是把一个查询的结果当作一张虚拟的内存表。

    练习5:查询出学号为4096的学生的五名任课老师的姓名。
    select 字段 from [select] where 条件;
    
    select tr.tch_id,tr.name from student as s,teaching as tg ,teacher as tr where s.stu_id=4096 and s.class_id = tg.class_id and tg.tch_id = tr.tch_id;
    
    select tch_id,name from teacher where tch_id in (select tch_id from student,teaching where stu_id=4096 and student.class_id = teaching_class_id);
    

    5、连接查询
    多表查询时,where条件一一对应这种叫等值连接(内连接)。
    内连接 inner join
    左连接 left join
    右连接 right join
    全连接 union all
    练习6:查询出每个班级的班级主任姓名、班级编号,并显示出没有分配班主任的班级。

    select class_id,name from class left like join teacher on class.tch_id=teacher.tch_id;
    

    6、约束
    一种对数据限制,用于保证表中数据的准备性和可靠性,可以在创建表时或修改表时使用。
    not null 非空,要求字段的值不能为空。
    default 默认值,用于相似较高或者数据值出现次较多的情况。
    primary key 主键,要求该字段的值非空且唯一,一般用于学号、工号。
    unique 唯一,要求该字段值不重复,比如:手机号,身份证号。
    check 设置字段的检查条件,但是MySQL不支持。
    foreign key 外键,要求该字段的值依赖其它表中的数据。

    表级约束:给表中的多个字段同时设置某些约束。
    列级线束:只给靓啊的某个字段设置某些约束。
    
    方法一:
    create table name(
        字段名 类型 列级约束,
        ...
        表级线束(字段1,字段2,...)
    );
    
    方法二:
    alter table 表名 modify 字段 类型 列级约束。
    alter table 表名 add 表级约束(字段1,字段2,...);
    注意:此时添加约束,表中可能已经有不符合约束的数据了,这种情况添加约束会失败。
    

    7、外键
    一张表(子表)的字段值依赖于自另一张表(父表)的字段值,被依赖的字段必须具备唯一性且非空。
    一般先建父表,再建子表
    create table 父表(
    字段 类型 primary key,

    );
    create table 子表(

    foreign key(字段) references 父表(字段) on delete cascade on update cascade
    );
    插入数据时,一般插入父表,再插入子表(子表中外键字段的值必须在父表中存在)。
    删除或更新数据时,由于子表依赖父表中的数据,因此父表不随意删除,需要先删除子表中的数据,再删除父表中的的数据,或都设置子表的外支持级联更新,级联删除。

    8、标识列
    又叫自动增加列,可以不用手动插入,系统可以提供自动的序列值。
    特点:
    1、标识列必须与key搭配使用(key指的是主键、外键、唯一)。
    2、一张表中只能设置一个标识列。
    3、必须是整数型
    4、可以设置步长 set auto_increment_increment = n;
    方法一、创建表时设置
    create table 表名(
    字段 类型 primary key auto_increment
    ) auto_increment = 1;

    方法二、修改表时设置
    alter table 表名 modify 字段 auto_increment;
    alter table 表名 auto_increment = 1;
    
    修改表时删除标识列
    alter table 表名 modify 字段;
    注意:使用标识列并不能保证完全连接,数据在插入失败时,标识列的值依然后自动增加,此时就会形成标识列的黑洞,如果从中间删除一条数据,也会造成不连续。
    

    9、索引
    索引是一种提高数据库检索速度的一项技术。
    相当于汉语词典的目录,先把关键字在个独立的地方(内存)列出,还有该记录在硬盘中的存储位置。

    索引分为单列索引和组合索引,单列索引顾名思义只包含一个列,一个表中可以有多个单列索引,组合索引就是多个列组合在一起建立的索引。
    
    创建索引时,应该确保该字段经常出现在查询语句的where子句中,否则没有必要创建索引。
    
    但需要注意的是过渡使用索引会降低表的插入速度、更新速度、删除速度,还会浪费磁盘空间。
    
    创建索引:
    create table 表名(
        .....
        index [索引名] (字段) 
    )
    
    添加索引:
    alter table 表名 add index [索引名](字段);
    
    删除索引:
    drop index 索引名 on 表名;
    
    查看索引:
    show index from 表名;
    

    10、视图
    视图是一种虚拟存在的表(逻辑表),本身不包含数据,作为一个select语句保存在数据字典中,是由其它若干个基础表通过连接组合而成的。
    使用视图的优点:
    1、简单,使用视图的用户不需要关心基础表的表结构、关联条件、筛选条件,对于使用者来说视图就是过虑好的符合条件的结果集。
    2、安全,使用者只能访问充他们访问的字段,表的权限管理可以精确控制以列为单位。
    3、数据独立,一旦视图结构确定,在原表中增加列不影响视图的使用。
    创建视图:
    create view <视图名> as <select语句>;
    注意:创建创建完成后就可以当表格使用了,但只能查询。
    删除视图:
    drop view 视图名;

    展开全文
  • MYSQL列别名无效问题解决

    千次阅读 2020-03-23 16:11:59
    在项目开发,发现在MYSQL使用的别名没有办法被正常解析,即字段取别名无效,通过crs.getMetaData().getColumnName()取的是字段原来的字段名。 如:name字段取了个别名为name2,最终返回的结果并不是别名...

    项目上用的Spring JDBC,是通过ResultSetMetaData接口来调用具体数据库的JDBC实现类来获取数据库返回结果集的。

    在项目开发中,发现在MYSQL中使用的别名没有办法被正常解析,即给字段取别名无效,通过crs.getMetaData().getColumnName()取的是字段原来的字段名。

    如:给name字段取了个别名为name2,最终返回的结果并不是别名name2,而是原名name。

    在MySQL的JDBC实现中的ResultSetMetaData.getColumnName(int column)方法中存在一些特定的逻辑。

    public String getColumnName(int column) throws SQLException {
      if (this.useOldAliasBehavior) { // false
        return this.getField(column).getName();
      } else {
        String name = this.getField(column).getNameNoAliases(); // 取非别名
        return name != null && name.length() == 0 ? this.getField(column).getName() : name;
      }
    }

    因为this.useOldAliasBehavior属性为false,因此最终走的是else的逻辑,也就走的是Field.getNameNoAliases()方法。

    public String getNameNoAliases() throws SQLException {
      if (this.useOldNameMetadata) { // false
        return this.getName();
      } else {
        return this.connection != null && this.connection.versionMeetsMinimum(4, 1, 0) ? this.getOriginalName() : this.getName();
      }
    }

    因此我们最终把问题定位到this.useOldAliasBehavior属性上,这个属性是可以通过JDBC驱动地址配置的。

    useOldAliasMetadataBehavior=true

    添加上该属性,问题解决。

    展开全文
  • 数据库

    2017-04-27 22:14:02
    数据库的概念:长期存放在计算机内,有组织,可共享的大量...可数据列取一个别名表取一个新别名 可把经计算或总结的结果用另一个新名称来代替 创建和使用索引作用: 1.提高查询速度 2.确保数据的唯一性
    数据库的概念:长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据‘仓库’
    作用:保存管理数据
    MYSQL概念:是现流行的开源,免费的关系型数据库
    数据库语言中最核心,最重要的语句
    使用频路最高的语句
    AS子句的作用:
    可给数据列取一个别名
    可给表取一个新别名
    可把经计算或总结的结果用另一个新名称来代替
    创建和使用索引作用:
    1.提高查询速度
    2.确保数据的唯一性
    3.可以加速和表之间的链接,实现表与表之间的参照完整性
    4.可使用分组和排序子句进行数据检索时,可以显著减少分组和排序时间
    5.全文检索字段进行搜索优化
    分类:
    主键索引
    唯一索引
    常规索引
    全文索引
    索引准则:
    1.索引不是越多越好
    2.不要对经常变动的数据加索引
    3.小数据量的表建议不要加索引
    4.索引一般应加在查找条件的字段
    展开全文
  • 在sql语句中给列取别名 在映射文件中配置resultMap 方法1是在sql语句层面上进行操作,而方法2需要耗费一定的解析xml配置的资源,因此方法1的执行效率更高,如果是对性能有要求的项目最好用方法1. 下面通过例子来...
  • 常用的SQL数据库语句总结

    千次阅读 多人点赞 2011-06-24 15:14:00
    1as 的用处 as可以对表和列取别名 在开发过程经常遇到开始某一个的字段去field1的名称,但后来有感觉field1字段指定不确切,于是又把此字段改成了field2,由于开始认为field1是常量,于是到处使用字符串field1...
  • 错误原因:在拼接SQL语句时,sys_dict 取别名时,都取xs 导致数据库表别名重复 解决办法:将两个表的别名改为不一样的,如sx 二、 报错信息:Column ‘id’ in field list is ambiguous 错误原因:从join的表...
  • 数据库<6>

    2017-04-18 19:38:05
     AS子句作用 ①可数据列取一个新别名 ②可表取一个新别名 ③可把经计算或总结的结果用另一个新名称来代替 (可省略) *LIKE模糊查询  在WHERE子句,使用LIKE关键字进行模糊查询 ①与“%”一起使用,表示...
  • 查找语句: 1.查找表所有的内容 select *from 表;2.具体查询某一个子段: select 字段名1,字段名2,子段名3,,,,,from表名; 3....4.带有列别名的查询语句: select 列 as 给列取的别...
  • 文章目录基本查询查询所有查询指定列AS子句作用(别名显示)DISTINCT关键字(过滤重复)查询的表达式查询的通配符 ...可以数据列取一个新的别名 可以表取一个新别名 可把经计算或总结的结果用另外一个新名称...
  • 3. 查询出来的列取一个别名 select [列名] as from [表名]; 4. 查询出来的列进行去重 select distinct [列名] from exam_result [表名]; 去重查找,得到的结果表的行数和原来的可能是不一样的,select 得....
  • 注意:外键约束的参照,在主表引用的只能是主键或唯一键约束的,假定引用的主表不是唯一的记录, 那么从表引用的数据就不确定记录的位置。同一个表可以有多个外键约束。 创建外键约束: 主表 create table ...
  • 所以无法查到 rownum=n (n》1的自然数),所以查找第二行以后的记录可以用子查询方法来解决,子查询的rownum取别名;对于小于某个值的情况两种方法都差不多,但是对于某个不等于一的值或者求某个值到某个值之间...
  • 4、转移数据库给新用户以已存在用户权限 exec sp_change_users_login 'update_one','newname','oldname' go 5、检查备份集 RESTORE VERIFYONLY from disk='E:\dvbbs.bak' 6、修复数据库 ALTER DATABASE [dvbbs] ...
  • 一、聚合函数查询 1.COUNT()函数——用来统计记录的条数; 例如查询grade表有几条数据: ...总共9条数据,as total是count(*)取别名; 2.SUM()函数——是求和函数,计算一值的总和(此必须是数值型数据...
  • As语句

    2017-04-18 19:26:42
     可数据列取一个新别名;可表取一个新别名;可把经计算或总结的结果用另外一个新别名来替换。 2.as也可省略不写。 3.distinct关键字:  作用:去掉select查询返回的记录结果重复的记录(所有返回列的值都...
  • ORM映射

    2021-01-06 14:04:02
    1.给列取别名 select mid as id,mname as name where mid=#{id} 2.属性为Mapper实体类的命名,字段在数据库中 <!--//属性和字段--> <resultMap id="rm" type="mammger"> <id property="id" ...
  • DQL命令查询数据

    2021-04-03 12:12:58
    使用DQL命令查询数据 DQL(Data Query Language,数据查询语言) ​ 查询数据库数据 ...​ 作用: 可数据列取一个别名表取一个别名 可把经过计算或总结的结果用另一个新名称来代替 ​ 用法: select
  • DQL

    2017-05-13 22:37:51
    1.DQL语言:  查询数据库数据  简单的单表查询或多表查询的复杂查询和嵌套查询  数据库语言最核心、最重要的语句  使用频率最高的语句 ...3.as子句的作用:可数据列取一个新别名  可
  • oracle从入门到跑路

    2020-05-06 15:00:39
    一、查询 1.1基础查询语句 和其他的数据库一样,select * from 表名。 select * from hr.employees ...在查询结果一个查询结果一个名字 select salary*12 as "年薪" from hr.emplo...
  • 实例158 将SQL Server数据库中数据导入到Excel文件中 333 实例159 将数据库中数据转换为文本文件 实例160 将Access数据库中的图书信息生成XML文件 5.7 学以致用:ADO.NET高级应用 实例161 会员密码三次找回功能...
  • 实例158 将SQL Server数据库中数据导入到Excel文件中 333 实例159 将数据库中数据转换为文本文件 实例160 将Access数据库中的图书信息生成XML文件 5.7 学以致用:ADO.NET高级应用 实例161 会员密码三次找回功能...
  • 6.2.4 使用别名 6.3 排序与分组 6.3.1 升序排序与降序排序 6.3.2 多字段排序 6.3.3 使用GROUPBY子句对查询结果进行分组 6.3.4 HAVING子句的应用 6.4 条件查询 6.4.1 WHERE单条件语句查询 6.4.2 运算符查询 6.4.3 ...
  • 程序员的SQL金典.rar

    2009-03-29 02:23:23
     4.1.3 列别名  4.1.4 按条件过滤  4.1.5 数据汇总  4.1.6 排序  4.2 高级数据过滤  4.2.1 通配符过滤  4.2.2 空值检测  4.2.3 反义运算符  4.2.4 多值检测  4.2.5 范围值检测  4.2.6 低效的“WHERE 1=1...
  • MySQL命令大全

    2018-01-15 11:19:17
     此操作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询操作。现在我们结束操作并退出MySQL客户程序:  mysql> exit  Bye9! 1:使用SHOW语句找出在服务器上当前存在什么...
  • 2009达内SQL学习笔记

    2010-02-10 19:46:58
    (给列别名,列<空格>列别名;给表起别名,表<空格>表别名;)。 如:Select first_name EMPLOYEES, 12*(salary+100) AS MONEY, manager_id "ID1" From s_emp E; 4、字段的拼接,可用双竖线(双竖线只能用于select...
  • 经典SQL语句大全

    热门讨论 2014-12-20 12:00:30
    4、转移数据库给新用户以已存在用户权限 exec sp_change_users_login 'update_one','newname','oldname' go 5、检查备份集 RESTORE VERIFYONLY from disk='E:\dvbbs.bak' 6、修复数据库 ALTER DATABASE [dvbbs] SET ...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

数据库中给列取别名