Mysql的认识
sql是一种语言,是用来和MySQL做沟通,由此mysql就可以前往关联式资料库进行相关的寻找存储资料等操作。
设计表
字段和类型:
数据库名和表名:小写字母、下划线、数组组合
字段名称:最好是表名_字段名,表名小写,字段名首字母大写,例如:user_Id
字段类型规范:能使用tinyint就不用int,能使用int就不用char或varchar,能用varchar(20)就不用varcha(255),时间戳字段尽量用int类型
sql关键词都需要大写
尽量避免使用null,最好指定列为not null,除非整的需要存储null,null相对notnull使操作更为复杂
AUTO_INCREMENT:必须是索引的一部分,自增1
整型可以通过 TINYINT、SMALLINT、MEDIUMINT、INT 或 BIGINT 表示,分别对应8bit、16bit、24bit、32bit 和64bit 的存储空间。
实数可以通过 FLOAT、DOUBLE 和 DECIMAL 表示,其中 FLOAT 和 DOUBLE 即通常所说的浮点数
长度区别
int类型带长度:不影响存取值,即使设定的值超出了长度的范畴,也能存,如果没有达到设定的长度,则使用空格自动填充到设定的长度
char类型:不可变字符,设定的长度就是规定当前字段能存的数据的最大长度,若超出长度,则会报错,若没有达到长度,使用空格填充到设定的长度
varchar:可变字符,设定的长度同样是规定当前字段能存的数据的最大长度,若超出长度,则会报错,若没有达到长度,不会使用空格填充,实际多长就是多长
notnull和null区别:
设置了notnull,表中插入数据时候不能有空
设置了null,表中插入数据时候可以有空
创建表的时候默认是null
1.非空约束 NOT NULL
2.默认值约束 DEFAULT ‘男’
3.唯一约束 UNIQUE
4.主键约束 PRIMARY KEY
索引:
唯一索引:允许为null,可以有多个唯一索引,为这个键建立一个唯一索引
普通索引:可以创建多个普通索引,允许重复,允许null插入,
主键和外键
主键索引:只能有一个,不允许重复,不允许为null
外键:为这个key建立一个普通索引,可以重复,可以为空
主键用来保证数据完整性,外键用来和其他表建立联系用
数据库sql语句常用大全
创建数据库
CREATE DATABASE
daatabase
;
使用数据库
use database
删除数据库
DROP DATABASE
database
;
显示数据库
SHOW DATABASES;
创建表:
create table 表名(
列名 类型(长度) 约束
);
删除表:
DROP TABLE 表名;
查看表结构:
DESC 表名;
修改表:列名
ALTER table 表名 change 列名 新列名 类型;
修改表:列类型
ALTER table 表名 change/modify 列名 列名 新类型;
执行顺序:from->where->select->order by
查询数据:
select * from 表名;
查询表中特定列的信息
select 列1,列2 from 表名;
数据去重:
select distinct 列名 from 表名
拼接结果:
select concat(列1,列2) from 表名
结果示例:
设置别名
select 列 别名 from 表名;
条件查询:
select 列 from 表名 where 条件;
集合查询
where 值 in(值1,值2)
模糊查询:
like ‘%1’,以1结尾 其他以此类推
like ‘%1_’ 倒数第二位是1
排序:
where 条件 order by 列 desc/asc
asc 升序 desc 降序
分页查询:
where 条件 limit beginindex,pageSize
beginindex从第几条数据开始 pageSIze 每页显示的数据条数
聚集函数:
作用于一组数据,并对有一组数据返回一个值
count(max) 统计计算最大值
count(min) 统计计算最小值
count(sum) 统计计算求和
sount(avg) 统计计算平均值
分组函数:
select 聚集函数 from 表名 where 条件 group by 列 having 分组后的条件
内连接:
根据条件进行连接
select * form 表1 join 表2 on 表1字段 = 表2字段
左连接:
以表1为左表,返回左表中的所有数据,若右表无数据,则显示null
select * from 表1 left join 表2 on 表1字段 = 表2字段
右连接:
表2是右表,返回右表中所有数据,若左表无数据,显示null
select * from 表1 right join 表2 on 表1字段 = 表2字段
子查询:
将一个查询结果作为另一个查询的对象
select * from (select * from 表名) as 别名
插入数据
insert into 表名(字段) values(值)
修改数据
update 表 set 字段 where 条件;
删除数据
delete from 表 where 条件;
创建索引
create index 索引名称 on 表名
删除索引
drop index 索引名 on 表名
alter table 表名 drop index 索引名