您的位置:首页 > 数据库 > MySQL

MYSQL学习第二天---数据类型等

2017-05-29 13:04 281 查看
文本:

CHAR(*):最多255个字节的定长字符串,指定长度,使用时不够长度布空格

VARCHAR(*):最多255个字节的字符串,就像动态数组,可变长度

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

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

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

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

整数:

tinyint:1字节

smallint:2字节

mediumint:3字节

int:4字节

bigint:8字节

小数:

decimal(NUMERIC):精确存储的小数,在内部用字符串存储

dloat:4字节,单精度

double:8字节,双字节

日期时间:

DATE:4字节

TIME:3字节

DATETIME:8字节

二进制大数据:

TITYBLOB:最大长度为255字节

BLOB:最大长度为64KB

MEDIUMBLOB:最大长度为16MB

LONGBLOB:最大长度为4GB

SQL语句入门:

/*
1.SQL语句中字符串一般用单引号、
2.SQL语句是大小写不敏感的
3.NacCat执行SQL语句的地方“查询”-新建查询-执行
4.查看一个表的全部数据:select * from 表的名字
5.插入数据的SQL语句:INSERT INTO 表的名字(Id,Name,Age,Gender)VALUES(5,'jim',20,1)
6.Insert语句可以省略表名后的列名
7.插入某一列的值不确定时,不指定
8.可以修改字段为:自动递增/自增
9.把“允许为空”的字段修改为“不允许为空”,需要先给就数据默认值,
10.修改列的数据类型要注意旧数据能否兼容转化为新类型,修改数据的长度也是一样
*/


数据更新:

/*
更新一个列:UPDATE 表的名字 Set 字段=值
更新多个列:UPDATE 表的名字 Set 字段=值,字段=值
表达式:UPDATE 表的名字 Set 字段=表达式
*/


条件数据更新

1.更新一部分数据:UPDATE 表的名字 Set age=30 where Name=‘tom’,用where语句表示只更新name是‘tom’的行,注意SQL中等于判断用单个=,而不是==
2.where中还可以使用复杂的逻辑判断UPDATE 表的名字 Set age=30 where name=‘tom’ or age<25,or 相当于Java中的||
3.where(age>20 and age<30)or(age=80)
4.where 中可以使用的其他逻辑运算符 or,and,not,<,>,>=,<=,!=,等


数据删除:

1.删除表中全部数据:DELETE FROM 表的名字
2.delete 也可带where子句来删除一部分数据:DELETE FROM 表的名字 WHERE age>20
3.delete 只是删除数据,表还在。删除表:DROP rable 表的名字


数据检索:

1.简单的数据检索:SELECT * FROM 表的名字
2.只检索需要的列:SELECT 列名 FROM 表的名字、SELECT name,age FROM 表的名字
3.列别名:SELECT 列名 AS 别名,name AS 别名 FROM 表的名字
4.计算列:SELECT 列名  from 表的名字,对整个列进行加减操作
5.使用where检索符合条件的数据:SELECT name FROM 表的名字 WHERE salary<5000
6.检索不与任何表关联的数据:select 1+1;select now();


数据汇总:

1.SQL聚合函数:MAX,MIN,AVG,SUM,COUNT
2.SELECT MAX(Salary) FROM 表的名字 WHERE age>25
3.SELECT MIN(Salary),MAX(Salary) FROM 表的名字
4.SELECT COUNT(*) FROM 表的名字 WHERE age>25
5.总和 和 平均:SELECT SUM(salary),AVG(Salary) FROM 表的名字
6.


数据排序:

1.ORDER BY 子句位于SELECT语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序还是降序
2.按照年龄升序排序:SELECT * FROM 表的名字 ORDER BY age ASC
3.按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序:SELECT * FROM 表的名字 ORDER BY age DESC、salary DESC
4.ORDER BY子句要放到WHERE子句之后:SELECT * FROM 表的名字 WHERE age>23 ORDER BY age DESC,salary DESC
5.


通配符过滤

1.通配符过滤使用LIKE
2.单字符匹配的通配符为半角下划线"_",它匹配单个出现的字符,以任意字符开头,剩余部分为“erry”:SELECT * FROM 表的名字 WHERE name LIKE '_erry'
3.多字符匹配的通配符为半角百分号"%",它匹配任意次数出现的任意字符。"K%"匹配以"K"开头,任意长度的字符串。检索姓名中包含"n"的员工信息:SELECT * FROM 表的名字 WHERE name LIKE '%N%'
4.LIKE性能较差,很容易造成全表扫描


空值处理:

1.一个列如果没有指定值,那么值就为null,数据库中null就表示不知道,而不表示没有
2.SELECT * FROM 表的名字 WHERE NAME+null;
SELECT * FROM 表的名字 WHERE NAME!=null
3.SQL中使用 is null,is not null来进行空值判断
SELECT * FROM 表的名字 WHERE NAME is null;
SELECT * FROM 表的名字 WHERE NAME is not null;


limit:

1.LIMIT关键字用来限制返回的结果集,LIMIT放在SELECT语句的最后位置,语法为"LIMIT 首行行号,要返回的结果集的最大数目"、比如下面的SQL语句将返回name不为空的,按照工资降序排列的从第二行开始(行号从0开始)的最多五条记录
SELECT * FROM 表的名字 where Name is not null ORDER BY Salary DESC LIMIT 2,5
2.limit 一定要放到所有的语句的最后
3.主要起分页作用


分组查询(group by )

1.数据分组用来将数据分为多个逻辑组,从而可以对每个组进行聚合运算,SQL语句中使用"GROUP BY 分组字段"。分组语句一般和聚合函数一起使用,GROUP BY 子句负责将数据分成逻辑组,而聚合函数则对每一个组进行统计计算
2.查看公司员工有哪些年龄段的:
select age FROM 表的名字 GROUP BY age
3.将age相同的数据行放到一组,分组后的数据可以看做一个临时的结果集,而SELECT Age语句则取出每组的age字段的值,这样我们就得到上表的员工年龄段表了
4.如果SELECT语句有WHERE子句,则DROUP BY 子句必须放到WHERE语句之后


联合查询(join)

1.使用范围:多个表存在关联
2.如果没有表连接,那么查询每张订单的客户姓名就要先查询订单,在查表,麻烦且效率低
3.SQL中使用JOIN关键字来使用表连接,主要有:交叉连接,内连接,外连接,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql