- 启动mysql,进入bin目录,net start mysql, mysql -u root -p
- timestamp 时间戳,会自动根据十区去改变时间
- timestamp 会自动储存当前时间,datetime会存null
- select * from lesson limit 1,2 从第二条开始,读两条
- timestamp 如果想自动填充时间,默认值设为CURRENT_TIMESTAMP
- order by desc 必须在 limit的前边,不然会报错
库操作
创建库:create database 库名
删除数据库:drop database if exists 库名
删除所有记录:delete from bname
显示所有库:show databases
使用库:use 库名
显示当前使用的库:select database()
当前用户:select user()
当前服务器版本:select version()
操作表
创建表:create table bname (列名,类型)
删除表:drop table bname
显示所有表:show tables;
显示表的列结构:DESC bname;
复制表的列结构和记录:create table bname select * from bname2
复制其他表的记录:insert into bname select * from 元表名
仅复制表的列结构:create table 新表名 LIKE 元表名
修改表结构:alter table bname ( add modify change drop )
修改列的数据类型或位置:
alter table bname MODIFY lname ARCHAR(100) (first || after empid)
添加列:alter table bname ADD lname 数据类型 (after empid某列后 || first最前边)
修改列名和数据类型:alter table bname CHANGE 修改前列名 修改后列名 修改后数据类型
删除列:alter table bname DROP lname
删除行:delete from bname where id=""
插入数据:insert into bname(l1,l2,l3) values(v1,v2,v3)
输出指定的值:select (2+3)*6
创建主键和自动编号:create table bname (lname 类型 auto_increment primary key)
初始化自动编号:alter table bname auto_increment=1;
唯一值:create table bname (a int UNIQUE)
默认值:create table bname (lname 类型 default 默认值)
索引
create index 索引名 on bname(lname)
show index from bname 显示索引
drop index 索引名 on bname
select AVG(sales) from tb
SUM(sales)
COUNT(sales)
连接字符串:
concat(a,b,c);
select concat(empid,name) from tb1;
字符串函数
从右侧取两位
select right(empid,2) from tb1;
left() 从左取
substring(id,2,3)
reverse(name) 反转
日期和时间函数
把当前时间存储进去,但字段必须为datetime类型
insert into bname (b) values(NOW());
select lname from bname limit 3 where sales not between 20 and 60
select lname from bname where month in (5, 6); month=5 或者 6;
distinct:去除重复选项
select distinct empid from tb
where age is null; 如果age是空
where age is not null;
where name like '%chuan%'
模糊查询通配符:
%:任意个字符
_:任意一个字符
select id,sales,case when s>100 then '高' when s>50 when '中等' else '低' end as '评价' from tb1;
排序
select * from bname group by 用于分组的列名
分组后提取记录
select id, sum(sales) from tb group by id having sum(sales)>200;
提取记录后分组
select id, AVG(sales) from tb where sales>50 group by id order by avg(sales) desc;
编辑数据
修改列的记录
update db1 set lname=value
防止意外执行update和delete: 启动时加上 --safe-updates 选项
delete from bname where 条件 // 删除符合条件的记录
多个表
使用union命令从多个表中提取记录并合并
(select lname from bname) union (select lname2 from bname2)
union all 可省去消除重复记录的操作
内连接:把不同表中相匹配的记录提取出来的连接方式
select lname from bname join bname2 on 表一的列=表二的列
select tb.id,tb.name,tb1.sales from tb join tb1 on tb.id=tb1.id;
join tb1 using(id) 当两个表字段名都为id时,可这样写。
select * from b1 join b2 on ~ b2 join b3 on ~
左外连接:相匹配记录和表一的全部记录(left join)
select lname from bname1 left join bname2 on bname1.lie=bname2.lie
右外连接(right join)
同时使用 order by 和 where时,order by 应该位于where之后
where 子句中not操作符只有一个功能,就是否定其他所跟的任何条件
select id, quantity, quan * itemprice as price from tb;
更新:update bname set lname='' where ~
网友评论