How it works a mysql query with alias?

前端 未结 4 737
旧时难觅i
旧时难觅i 2021-01-28 10:17

I\'m new in this comunnity and I need to work with a query that get data from a mysql database, I have this query, but I need to add a new table and I don\'t understand why the

相关标签:
4条回答
  • 2021-01-28 10:26

    In MySQL, an "alias" can be declared to simplify the query later. Typically this is denoted with the "AS" operator, but can also be declared without "AS" - as in your example.

    In your example:

    SELECT ins.matricula, {...}
    FROM Inscripciones ins {...}
    

    The ins is set as an alias for the "Inscripciones" table. This allows you to use ins throughout the query rather than typing out "Inscripciones." This can be seen in the SELECT statement. Something to keep in mind - aliases in SQL can be declared after they're first used. This is the case in your example, where SELECT gets ins.matricula before you've actually declared ins as the alias for Inscripciones. Sometimes this seems counter intuitive, but I promise it will make sense if you experiment with it a bit.

    I find it less ambiguous to include the "AS" - which might help it make more sense as you're reading/writing the SQL query. ex: ... FROM Inscripciones AS ins

    To be clear, the use of the alias doesn't change the outcome of your query, but helps you write cleaner queries because you don't have to re-write the tablename every time you want to use it.

    0 讨论(0)
  • 2021-01-28 10:37

    A SQL Alias is just what the name says, an alias. It's simply another name (a shorter name) for your table name.

    So in your example the table name is Inscripciones, and in this line FROM Inscripciones ins you're saying "ins" is an alias to Inscripciones. Its just a way to make the query smaller/simpler. An alias is like a nickname (i.e. an alias for Michael is "Mike")

    Aliases are normally set with "AS" like this:

    SELECT * FROM Users AS u
    

    but can be shortened like this:

    SELECT * FROM Users u
    
    0 讨论(0)
  • 2021-01-28 10:42

    Alias in MySQL query is like a temporary short name for your table. They are not necessarily to be used but save your time when you need to create a complex queries. They are mainly used in queries when you use try to fetch data more than 1 table in single query using JOINS.

    Suppose you have a table name 'employee_records'. Then trying to fetch the fields for table would look employee_records.id and so on. If you use alias for table name say 'e', then selecting fields will become e.id.

    Hope that will make your point clear. For more information in simple words read about SQL aliases over here - https://www.w3schools.com/sql/sql_alias.asp

    0 讨论(0)
  • 2021-01-28 10:43

    Tables don't have to have aliases, unless you want to use the same table more than once, but it can make things shorter to type if the tables have columns named the same.

    Instead of having to write

    SELECT myfulltable1name.id, myfulltable2name.id
    

    You can write

    SELECT t1.id, t2.id
    

    (If you've aliased your tables as t1 and t2)

    Here's an example query where we use the same table more than once and need an alias to separate them:

    SELECT
      workAddresses.City as WorkCity,
      homeAddresses.City as HomeCity
    FROM
      Addresses workAddresses
      INNER JOIN
      Addresses homeAddresses
      ON 
        workAddresses.UserID = homeAddresses.UserID
    WHERE
      workAddresses.type = 'work' AND
      homeAddresses.type = 'home'
    

    Here the Addresses table stores work and home addresses for our users, with a type column to differentiate them. We want a result where tThe work and home address is on the same row, so we have to join the addresses table in twice, we give them sensible aliases so we can tell which is which, and we use where clause to make sure our workAddress table alias only refers to those records with type 'work'

    You'll notice I also put an alias on the column names selected, so you can know which is the work City and which is the home city

    Sometimes you MUST use an alias, like if you make a subquery, then the result must be aliased in order to be usable:

    SELECT
      workAddresses.City as WorkCity,
      homeAddresses.City as HomeCity
    FROM
      (SELECT * FROM Addresses WHERE type ='work') workAddresses
      INNER JOIN
      (SELECT * FROM Addresses WHERE type ='home') homeAddresses
      ON 
        workAddresses.UserID = homeAddresses.UserID
    

    Here we got information from the addresses tables by subquery, and the bracketed sql statements must have aliases

    Aliases are always declared at the first point that the object being aliased is brought into the query. For tables, this is in the FROM section, for columns this is in the SELECT section

    It might help you to consider it as if the database actually does the from section first, connecting all the tables together, then it does the where, to filter the rows, finally it does the select, to pull just the columns you want. C# has a built in query language called LINQ, that presents things in this more logical way, FROM table WHERE something = something SELECT somecolumns - makes it easier to say "things are aliased when they are first introduced, like variable naming". SQL is what it is, has been for years. You get used to it

    0 讨论(0)
提交回复
热议问题