& MYSQL SQL statement summarizes common data types

  Recently queuing system processing a restaurant, service logic operation using JDBC connection in a lot MySQL Android end. When the SQL statement here before finishing under review to learn better

MYSQL common data types

text:

CHAR(*):最多255个字节的定长字符串,它的长度必须在创建时指定

VARCHAR(*):最多255个字节的可变长度字符串,它的长度必须在创建时指定

TEXT:最大长度为64K字符的变长文本

TINYTEXT:最大长度为255字符的变长文本

MEDUIMTEXT:最大长度为16K字符的变长文本

LONGTEXT:最大长度为4GB字符的变长文本

Integer (after taking into account the value of selected data type as small as possible)

tinyint:1字节。有符号值:-128127;无符号值:0255

smallint:2字节。有符号值:-3276832767;无符号值:065535

mediumint:3字节。

int4字节

bigint:8字节

Decimal (specify length and decimal point, that is, display width and number of decimal places):

decimal:精确存储的小数,在内部用字符串存储,适合金额等要求精确的类型。别名:NUMERIC

float:4字节,单精度。会近似存储(*),效率比decimal高。

double:8字节,双精度。会近似存储(*),效率比decimal高。

Date and Time:

DATE:4字节。范围:1000-01-01——9999-12-31

TIME:3字节。范围:-838:59:59——838:59:59

DATETIME:8字节。范围:1000-01-01 00:00:00——9999-12-31 23:59:59

Binary Large data:

TITYBLOB:最大长度为255字节

BLOB:最大长度为64KB

MEDIUMBLOB:最大长度为16MB

LONGBLOB:最大长度为4GB

SQL syntax

 Select * from 表  查询某张表的全部内容 

 Insert into 表(表字段)values(对应的值) 插入新数据 

Update Data Update

        1、更新一个列:UPDATE T_Persons Set Age=30

        2、更新多个列: UPDATE T_Persons Set Age=30,Name='tom'

        3、表达式:UPDATE T_Persons Set Age=Age+1

        4、更新一部分数据: UPDATE T_Persons Set Age=30 where Name='tom',用where语句表示只更新Name是'tom'的行,注意SQL中等于判断用单      个=,而不是==。

        5Where中还可以使用复杂的逻辑判断UPDATE T_Persons Set Age=30 where Name='tom' or Age<25or相当于Java中的||

        where (Age>20 and Age<30) or(Age=80)

        6Where中可以使用的其他逻辑运算符:orandnot、<、>、>=、<=、!=(或<>)等

delete data

    删除表中全部数据:DELETE FROM T_Persons。

    Delete 也可以带 where 子句来删除一部分数据:DELETE FROM T_Persons WHERE Age > 20

    Delete 只是删除数据,表还在。(*)Drop table T_Persons

Retrieving data

Is to get the data you want to get into the field according to the conditions where
the syntax:

    1、简单的数据检索 :SELECT * FROM T_Employees

    2、只检索需要的列 :SELECT Number FROM T_Employees 、SELECT Name,Age FROM T_Employees

    3、列别名:SELECT Number AS 编号,Name AS 姓名,Age AS Age111 FROM T_Employees  写不写AS都行

    4、计算列:SELECT Number 编号,Name 姓名,Age Age111,Age+10 十年后的年龄,1+1,now() FROM T_Employees

    5、使用where检索符合条件的数据:SELECT Name FROM T_Employees WHERE Salary<5000。故事:新员工的数据检索噩梦

    6、还可以检索不与任何表关联的数据:select 1+1;select now();

Aggregate function

    1、SQL聚合函数:MAX(最大值)、MIN(最小值)、AVG (平均值)、SUM (和)、COUNT(数量)

    2、大于25岁的员工的最高工资 :SELECT MAX(Salary) FROM T_Employees WHERE Age>25 

    3、最低工资和最高工资:SELECT MIN(Salary),MAX(Salary) FROM  T_Employees

    4、大于25岁的员工人数:SELECT COUNT(*) FROM  T_Employees  WHERE Age>25 

    5、全体员工的工资总和平均工资:SELECT SUM(Salary),AVG (Salary) FROM  T_Employee

Ascending Descending

    1ORDER BY子句位于SELECT语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序(从小到大排列,ASC)还是降序(从    大到小排列,DESC) 

    2、按照年龄升序排序所有员工信息的列表:SELECT * FROM  T_Employees ORDER BY Age ASC 

    3、按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序 :SELECT * FROM  T_Employees ORDER BY Age DESC,Salary DESC

    4、RDER BY子句要放到WHERE子句之后 :SELECT * FROM T_Employees WHERE Age>23 ORDER BY Age DESC,Salary DESC 

Wildcard filtration using LIKE

    1、单字符匹配的通配符为半角下划线“_”,它匹配单个出现的字符。以任意字符开头,剩余部分为“erry” :SELECT * FROM T_Employees WHERE        Name LIKE '_erry' 

    2、多字符匹配的通配符为半角百分号“%”,它匹配任意次数(零或多个)出现的任意字符。 “k%”匹配以“k”开头、任意长度的字符串。检索姓        名中包含字母“n”的员工信息 :SELECT * FROM T_Employees WHERE Name LIKE '%n%' 

    3Like性能较差,很容易造成全表扫描,谨慎使用。后面会讲数据库优化(索引等),项目中做搜索用全文检索。

Null handling database

    数据库中,一个列如果没有指定值,那么值就位null 表示"不知道",而不是没有

    SQL中使用is nullis not null来进行空值判断: 

    select * fromwhere Name is null     为空

    select * fromwhere Name is not null 不为空

return result sets limit

    1、LIMIT关键字用来限制返回的结果集, LIMIT放在SELECT语句的最后位置,语法为“LIMIT  首行行号,要返回的结果集的最大数目” 。比如下面      
    SQL语句将返回Name不为空的、按照工资降序排列的从第二行开始(行号从0开始)的最多五条记录:

    SELECT * FROM T_Employees
    where Name is not null 
    ORDER BY Salary DESC  
    LIMIT 2,5 

    2、limit一定要放到所有的语句的最后

group by grouping queries

    1、数据分组用来将数据分为多个逻辑组,从而可以对每个组进行聚合运算。SQL语句中使用GROUP BY子句进行分组,使用方式为“GROUP BY  分组字        段”。分组语句一般和聚合函数一起使用,GROUP BY子句负责将数据分成逻辑组,而聚合函数则对每一个组进行统计计算。AVG Min MAX

left join joint inquiry

     /*查询每张订单的订单号、价格、对应的客户姓名以及客户年龄*/
    select o.Id 订单号,o.Price 价格,c.Name 姓名, c.Age 年龄
    from T_Orders o
    left join T_Customers c
    on o.CustomerId=c.Id
    /*添加where语句(显示价格>=150元的订单)*/
    where Price>=150

Foreign key constraint

  Foreign key (FK) is used between two data tables to establish and combinations or columns of a reinforcement link, control data can be stored in the foreign key table. Foreign key references, when a table containing the primary key column is one or more other tables referenced by one or more columns, in between the two link table creation. The foreign key column becomes the second table

1、如果删除/更新T_Customers一行记录,那么就可能会导致T_Orders中存在CustomerId为非法值的数据,使得程序逻辑错误。一般不会更新主键Id的值,所以谈外键约束的时候只谈“删除T_Customers时”。

2、外键约束:当删除T_Customers中一条数据的时候,如何处理T_Orders等存在指向T_Customers外键的行。外键约束建立在外键字段***Id的表上(t_orders)。

3、建外键约束的方法:新建或者修改表的时候“外键”→“添加外键”。名:自动命名即可;栏位名:CustomerId;参考表:t_customers;外栏位名:Id;删除时、更新时:一般默认RESTRICT(CASCADE:删除T_Customers一行时把它的订单也删除了;SET NULL:删除T_Customers一行时把它的订单CustomerId设置为NULLNO ACTION/RESTRICT:拒绝删除)。

4、有的公司不习惯建外键,而是通过程序进行数据合法性控制,对于初学者先不建议这样,都把外键加上。
Published 26 original articles · won praise 19 · views 40000 +

Guess you like

Origin blog.csdn.net/a23006239/article/details/79574611