sudo /etc/init.d/mysql start(开机) | restart(重启) |stop(关机) |status(状态)
mysql -hlocalhost -uroot -p123456() 连接服务器(-h主机地址 -u用户名 -p密码(可直接跟后面))
库
查看已有库:show databases;
创建库:create database 库名;
创建库的同时指定字符集:create database 库名 character set utf8;
查看创建库的字符集:show create databases 库名;
查看当前所在库:select database();
切换库:use 库名;
查看当前库中所有的表:show tables;
删除库:drop database 库名;
表
创建表:create table 表名(字段名 数据类型,字段2 数据类型...);
创建表指明字符集:create table表明(字段1 数据类型,
字段2 数据类型,....)character set utf8;
查看已有表的字符集:show crate table 表名 ;
查看表结构:desc 表名;
删除表:drop table 表名;
表插入:
1.insert into 表名 values(值1),(值2),.....;
例:insert into stuinfo values(1,‘张三丰’,300),(值2),....;
2.insert into 表名(字段1,字段2,....)values(值1),(值2),...;
例:insert into stuinfo(name,age)values(‘小昭’,20),(‘敏敏’,20);
表查询:(select)
1.select*from 表名;查询表中的所有数据
2.2.select *from 表名 where 条件;按条件查找
3.select 字段1,字段2 from 表名 where 条件;
表字段(添加):
alter table 表名 执行动作
1.alter table 表名 add 字段名 数据类型;在末尾添加
2.alter table 表名 add 字段名数据类型 first;在第一列添加
3.alter table 表名 add 字段名 数据类型 after 已有字段名;指定位置后面添加
表字段(删除):
alter table 表名 drop 字段名;
表字段(修改):
alter table 表名 change 旧字段名 新字段名 类型(宽度);
表 数据类型修改:
alter table 表名 modify 字段名 新的数据类型
表 重命名:
alter table 表名 rename 新表名;
表记录(删除):
delete from 表名 where 条件;
where 条件省略表示清空表记录
表更新(update):
1.update 表名 set 字段 1=值,字段2=值,....where 条件;
2.update 必须写where 条件
数据类型
**整型:**
1.int大整型(4个字节)取值范围:0-2(32)-1
2.tinyint微小整型(1个字节)
1.有符号整型(默认),取值范围-128~127
id tinyint signed
2.无符号整型(unsigned),取值范围0~255
age tinyint unsigned
3.smallint 小整型(2字节)
4.bigint 极大整型(8字节)
**浮点型:**
1.float(4个字节,最多显示7个有效位)
字段名 float(m,n);m表示总位数,n表示小数位的位数
2.double(8个字节)
3.decimal(最多可显示28个有效位)
decimal(m,n);m表示总位数,n表示小数位的位数
**字符类型:**
1.char(m);取值范围1~255
char(10)
2.varchar(m);取值范围:1~65535
varchar(10)
3.text /longtext(4G)/blob/longblob(4G)
**枚举:**
enum 最多可以列举65535个值
例:create table userinfo(id int,name char(10),sex enum(‘男’,‘女’,‘保密’));
select * from userinfo where sex=1;
特点:
枚举中的数据,从左到右会自动分配索引,从1开始,查询数据时,可以根据字符串值进行查询也可以根据索引值查询
**集合:**
set
create table cousetab(sportcourse set(‘篮球’,‘足球’,‘球球’,...));
insert into cousetab values('篮球','足球','去球');
**日期时间:**
1.date:“YYY-MM-DD”
2.time:“hh:mm:ss”
3.datetime:“YYYY-MM-DD hh:mm:ss”;不给值,默认返回null
4.timestamp:“YYYY-MM-DD hh:mm:ss”;timestamp:不给值,默认返回当前 时间
日期时间函数
1.now()返回当前系统时间
2.curdate()返回当前日期(年月日)
3.Curtime()返回当前时间(时分秒)
4.year(date)返回指定日起的年份
5.date(‘20111212121212’)返回指定日期的年月日
6.time(date)返回指定日期的时分秒
例:select id,name,cztime from info2 where date(cztime)='20180830';
日期运算格式
select *from 表名 where 字段名 运算符(时间-interval 时间单位)
时间单位:1day |2 hour| 1 minute| 1 year |1 month 正值表示一天前
cztime>(now()-interval 1 day);
运算符
1.数值比较/字符比较
1.数值比较:= != > >= < <=
2.字符比较: = !=
2.逻辑运算符
1.条件1 and 条件2 and 条件3 and....;(查询同时满足多个条件的数据)
2.条件1 or 条件2 ;查询满足条件1或者满足条件2的数据
3.范围内比较
1.between..值,...and....值
设置范围在 值1 和值2 之间
2.where 字段名 in(值1,值2,值3,...)
匹配字段在in给出的范围内的数据
et:
where age in(22,23,24,25);
3.where 字段名not in(值1,值2,...);
匹配字段值不在指定范围内的数据
匹配空,非空
1.匹配空: where 字段 is null;
2.匹配非空:where 字段 is not null;
模糊查询
1.格式:where 字段名 like 表达式
2.表达式
1._:表示匹配1个字符
2.%:表示匹配0到多个字符
(2个字符及以上)mysql> select *from sanguo where name like '_%_';
(0个字符及以上)mysql> select*from sanguo where name like '%';
注意:
null不会被匹配出来
空字符串表示0个字符,会被正常匹配
3.匹配姓名为3个字符串的数据
where name like '___';
4.匹配姓赵的数据
where name like '赵%_';
排序(order by)
order by:对查询结果进行排序
1.格式:..order by 字段名 asc(升序)/desc(降序)
sql> select * from sanguo order by fangyu desc
分页查询(limit)
永远放在sql语句的最后书写
分页用来控制显示多条结果中的数据
1.语法:
1.limit n;表示显示n条数据
2.limit m,n;
表示从第m+1条记录开始显示,显示n条
select * from sanguo where country='蜀国' and name is not null order by gongji desc limit 0,3;
聚合函数—查询
select *
select 字段
select 聚合函数 where....
1.聚合函数
最大值 最小值 求和 平均值 计数
max() min() sum() avg() count()