通用:分号结尾。一般方法用大写。
注释:-- 或者 #;/*…*/。
DDL数据库定义语言
- 查询所有数据库:show databases;
- 创建数据库:create database (if not exists) 数据库名 (default charset 字符集)
if not exists:可选,意是判断是否存在,选择覆盖或者不创建。 - 查询当前数据库:select database();
- 删除数据库:drop database(if exists) 数据库名;
- 使用数据库:use 数据库名;
表操作
查询当前数据库的所有表格:
show tables;
查询表结构:
desc 表名;
查询指定表的建表语句:
show create table 表名;
创建表
create table 表明{
字段1 字段1类型 [comment 字段1 注释],
id int comment ‘编号’
}
注:[ ]表示可选内容,不要求一定有。
数据类型
数值型:
| 数值 | 类型 |
|---|---|
| int | 整型 |
| float | 浮点型 |
| char() | 定长字符串 |
| varchar() | 边长字符串 |
| date | 日期型(YYYY-MM-DD) |
| time | 时间值或持续时间(HH:MM:SS) |
| year | 年份值(YYYY) |
| datetime | 混合日期和时间值( YYYY-MM-DD HH:MM:SS) |
无符号型:+unsignen
修改
添加字段:
alter table 表名 add 字段名 类型(长度)【comment 注释】;
删除字段:
alter table 表名 drop 字段名;
修改表名:
alter table 表名 rename to 新表名;
删除表:
drop table 【if exists】 表名;
DML 操作数据库语言
添加数据
insert into 表名 (字段1,字段2,…) values(值1,值2,…);
给指定字段添加数据,可用上述句法
给全部字段添加数据:
insert into 表名 values(值1,值2,…);
批量添加:
insert into 表名(字段1,字段2,…)values(值1,值2,…)(值1,值2,…);
insert into 表名 values(值1,值2,…),(值1,值2,…);
修改数据:
update 表名 set 字段名1 = 值1,字段名2 = 值2,…[where 条件];
删除数据:
delete from [where 条件];
DQL 数据查询语句
基本查询
查询多个字段:
select 字段1,字段2,… from 表名;
设置别名:
select 字段1 [as 别名], … from 表名;
去重复记录:
select distinct 字段列表 from 表名;
条件查询:
select 字段列表 from 表名 where 条件列表;
聚合函数:
count、max、min、avg、sum。
例: select max(age) from 表名(where …)
注:空值不算
分组查询
select 字段列表 from [where 条件] group by 分组地段名 [having 分组后过滤条件];
- where 在前,不参与分组;having是对结果做条件。
- 一般在查询时用聚合函数一起。
select gender,count(*) from emp…;
排序查询
select 字段名 from 表名 order by 字段1 排序方式1,字段2 排序方式2,…; 注:多字段排序,先1后2。
asc 升序(默认)
desc 降序
分页查询
select * from 表名 limit 起始索引,查询记录数;
DCL 管理用户:
查询用户
use mysql;
select * from user;
函数
字符串函数
| 函数 | 解释 |
|---|---|
| concat(S1,S2,S3,…Sn) | 字符串拼接 |
| lower(str) | 全变小写 |
| upper(str) | 全变大写 |
| lpad(str,n,pad) | 左填充;如lpad(’1‘,5,’0‘) = 00001 # 长度为5 |
| rpad(str,n,pad) | 右填充;对str右填充pad,直到n个字符串长度 |
| trim(str) | 去str左右两边空格,str内部空格不去除 |
| substring(str,start,len) | 截str字符串,冲start位置开始len个长度 |
数值函数
| 函数 | 解释 |
|---|---|
| ceil(x) | 向上取整 |
| floor(x) | 向下取整 |
| mod(x,y) | 返回x/y的值(余数) |
| rand(x) | 返回0~1内的随机数 |
| round(x,y) | 求x的四舍五入,保y位小数 |
日期函数
| 函数 | 解释 |
|---|---|
| curdate () | 返回当前日期 |
| curtime() | 返回当前时间 |
| now() | 返回当前日期和时间 |
| year(date) | 获年 |
| month(date) | 获月 |
| day(date) | 获日 |
| date_add(date, interval expr type) | 返回一个日期/时间值加上一个时间间隔expr后的时间值。 |
| datediff(date1,date2) | 返回两时间之间的天数 |
流程函数
if(value,t,f) 例:ifnull(1,2) 如果为null返回1,否则返回2。
case when [val1] then [res1]…else [default] end
如果val1为true返回res1…否则返回default。
case [expr] when [val1] then [res1] … else [default] end。
如果expr的值等于val1,返回res1,…否则返回default。
约束条件
| 函数 | 解释 |
|---|---|
| not null(非空) | 非空约束 |
| unigue | 唯一约束 |
| primary key | 主键 |
| default(默认值) | 默认约束 |
| check(条件) | 检查约束 |
| foreign key | 外键 |
在建表中田间,constraint foreign key(外键字段) references 表(主表字段)
语言添加:alter table 添加外键的表 add constraint foreign key(外键字段) references 表(主表字段)
查询
隐式内连接
正常多表:
select * from 表名,表名 where 条件(连接条件);
或:select * from 表名 join 表名 on 条件(连接条件);
左外连接,与显示连接相似。
select * from 表名 left join 表2 on 条件;
联合查询:两查询中加
1、union all # 查全
2、union # 去重
select … union (all) select …;
子查询:
1、<, >, =, …
2、in, not in, ang, all(都是大写才满足)
导入Excel数据方法:
第一步:
打开命令行,连接数据库,即命令行中输入
mysql -u root -p
回车后根据提示输入密码后,再次回车即可进入
第二步:
转到需要导入的表,注意这里的数据要和段的要求一样。
use sql_tp;
进入数据库
第三步:
将文件选择保存类型,注意,这点很重要,选择保存为“文本文件(制表符分割)”,然后点击保存。
打开txt文件,将前面的标题栏删除掉,因为我们只需要数据,也只能只有数据
注:一定要utf-8的格式,保存时注意。
第四步:
导入刚刚保存的数据(.txt)
接下来继续在命令行中进行操作,在命令行中输入如下命令:
LOAD DATA LOCAL INFILE ‘E:/中层评价-发王纪元/1.txt’ INTO TABLE tp_ghao20221230;
‘E:/中层评价-发王纪元/1.txt’ 为所在文件的地址。
tp_ghao20221230为数据库中要,你要导入的目标表名。
说明:文件名字为1.txt
因为用制表符分割的数据,所以可以用到命令“fields terminated by “\t” ”
而且windows下文件通常以换行并回车作为文件行的结尾,还可以加上了“ lines terminated by “\r\n” ”
补充:一般来说,如果第四步无法成功,并报出ERROR,可能是还没有打开功能。可以通过以下方式打开功能。
show global variables like ‘local_infile’;
set global local_infile = ‘ON’;


1828

被折叠的 条评论
为什么被折叠?



