set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
然后关闭连接重新打开
关系型:以行作为记录,列数相同
非关系型:以列作为记录,行数随便
服务器->数据库->表(行列组成的二维表格)->行
client操作服务器通过命令登录操作:mysql -u用户名(默认root) -p密码
SQL语句:每个命令执行结束加分号结束
查询所有数据库:show databases; 切换数据库:use 库命名; 创建数据库:create database [IF NOT EXISTS] 库名; 删除数据库:drop database [IF EXISTS] 库名; 查询数据库创建:show 建库语句; 指定数据库采用的字符集:CHARACTER SET 修改数据库的编码集:alter database 数据库名 CHARACTER SET 编码集; 注意:不要修改mysql服务器的编码集,表的编码集默认和库一致
建表
格式: create table [if not exists] 表名( 字段1 数据类型 字段属性, 字段2 数据类型 字段属性, ... 字段N 数据类型 字段属性 )engine=引擎 default charset=编码集; 查看当前数据库:select database(); 查看建表语句:show create table 表名; 查看表结构:desc 表名; 删除:drop table [if exists] 表名; 字段属性: not null:没给值数据为默认值(varchar默认值为空) AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1 PRIMARY KEY关键字用于定义列为主键,您可以使用多列来定义主键,列间以逗号分隔 ENGINE 设置存储引擎,CHARSET 设置编码 default null:没给值数据就是null default 值:设置字段的默认值 注意:主键不重复的列
修改表结构:alter table
修改表名:alter table 旧表名 rename to/rename 新表名; 添加字段:alter table 表名 add 字段 字段数据类型 属性; 修改字段:alter table 表名 change 旧字段 新字段 数据类型 属性; 修改字段:alter table 表名 modify 字段 数据类型 属性; 注意: change:修改所有(字段名,数据类型,属性) modify:修改一部分(数据类型,属性) 修改数据类型时,varchar->int原数据会变为0
增删改查:字符串全部使用''包起来
增: 格式: insert into 表名(字段) values(值),(值)...(值); 例如: insert into stduent(name) values('zs'); insert into stduent(name) values('zs'),('ls'); 删 格式: delete from 表名 where 子句; 改 格式: update 表名 set 字段1=值1,字段2=值2...字段N=值N where 子句; 查 格式: select 字段 from 表名 where 子句; 注意: *表示所有字段
as起别名
格式: 字段 as 名称 注意: as 也加可不加
子句:
> < <= >= = <> 大于、小于、大于(小于)等于、不等于 between ...and... 显示在某一区间的值(含头含尾) in(set) 显示在in列表中的值,例:in(100,200)只能匹配100或200 like '张_' 模糊查询 使用% 和 _(%表示匹配所有 _匹配一个) Is null 判断是否为空 and 多个条件同时成立 or 多个条件任一成立 not 不成立,例:where not(expection>10000);
limit分页
格式: 语句 limit 开始下标,长度; 注意: 如果数据量不够,显示全部 例如:从下标为0开始显示10条 select * from stduents limit 0,10;
去重
格式: DISTINCT 字段1,字段2...字段N 注意: 字段不能在DISTINCT之前,只能在DISTINCT后面 DISTINCT之后有多个字段,按照所有字段进行去重
聚合函数:
count(字段):求多少行数据 sum(字段):求和 avg(字段):平均数 max(字段):最大值 min(字段):最小值 注意: varchar能比较大小,不能获取avg(没有任何意义) 如果值为Null不参与计算 sum和avg字段的数据不是数值,结果都是0