库
- 创建数据库
carete database 数据库名称 default charset=utf8mb4;
- 展示数据库
show databases;
- 进入数据库(结尾;可以不加)
use 数据库名称;
- 取消执行
末尾写 \c
- 删除数据库(风险)
drop database 数据库名称
表
- 展示表
show tables;
- 创建表
//default charset=utf8mb4如果不写,默认和库一致
create table 表名称(字段1 类型,字段2 类型)engine=innodb default charset=utf8mb4;
//如果表不存在创建
create table if not exists 表名(字段1 类型,字段2 类型);
- 查看表结构
desc 表名;
- 显示表的创建语句
show create table users;
- 添加数据
//向users表添加数据
insert into users(id,name,age) values(10,'zhangsan',22);
- 删除表
drop table 表名
- 修改数据
update users set id = 13 where name = 'zhangsan';
- 删除数据
delete from users where id=15;
- 查询
select * from 表名 where 条件
- 插入字段
alter table users add num int not null;
--在最前面添加
alter table users add aa int first;
--在指定字段后面添加字段
alter table users add phone char(11) not null after age;
- 修改表中的类型
//修改表中的 num 字段 类型,使用 modify 不修改表名
alter table users modify num tinyint not null default 12;
//change修改值和字段名称
alter table users change num mm int;
- 修改表名
alter table 原表名 rename as 新表名
- 修改表引擎
alter table users engine='myisam';
排序
放正常语句后面order by 按照什么排序
- asc 升序
- desc降序
分组
放正常语句后面group by 按照什么分组
返回第一个
例.查询 gradeid 为 2 的课程中课时最多的课程信息
语句:mysql> select * from subject where gradeid=2 order by hour desc limit 1;
更新
update 表名 set 要改的属性=值 where 条件
自定义变量
- 定义每次如何变化
- 定义初始值
SELECT (@i:=@i+1) as rank,student.* FROM
student,(select @i:=0) as inke;
函数(我用过的)
TIMESTAMPDIFF(year,birthday,NOW()) 返回相差的年
NOW()获得计算机上的时间
--查询姓张且年龄小于 40 的员工记录
SELECT * FROM employee WHERE name like '张%' and TIMESTAMPDIFF(year,birthday,NOW())<40 ;
+-------+-------+-----+------------+------------+-------+
| empid | name | sex | title | birthday | depid |
+-------+-------+-----+------------+------------+-------+
| 1001 | 张三 | 男 | 高级工程师 | 1985-01-01 | 111 |
+-------+-------+-----+------------+------------+-------+
1 row in set
left(字段,取多少位)
right(字段,右边数留下多少)