1. 创建一个数据库test01
create database 数据库名 default character set 编码符号 # 编码符号:utf8 ,gbk 等待
2. 查看所有的数据库
show databases;
3. 查看指定的数据库名
show create database test01;
4. 删除数据库test01
drop database 数据库名;
5. 将数据库test01的字符集修改为’gbk‘
alter database test01 character set 'gbk';
6. 选择数据库
use 数据库名;
7. 创建表
create table table_name(
id int,
name varchar(30),
gender varchar(1),
age int(2)
);
8. 查看已建表
show tables;
9. 查看表的详细结构
show create table table_name;
10. 修改表的名称,
alter table 表名 rename to 新的表名;
11.修改列类型
ALTER TABLE 表名 MODIFY 列名 新类型;
12. 修改列名
alter table 表名 change column 旧列名 新列名 类型
alter table t_student change column gender sex varchar(5);
13. 给表添加 新列
alter table 表名 add column 新列名 类型 default 默认值
14. 删除指定的列
alter table 表名 drop column 列名;
15. 删除表
drop table 表名;
16. 主键约束 、唯一约束、默认值约束、自增长约束、外键约束
#主键约束 primary key
#列级添加主键,唯一约束、默认值约束、自增长约束、非空约束
create table t_student(
id int primary key auto_increment,
name varchar(30) unique default 'xxx' not null,
age int(2)
)
# 创建表后
alter table 需要增加主键的表名 add constraint 主键名称 primary key (列名)
# 添加唯一约束
alter table 需要增加唯一属性的表名 add constarint 约束名 unqiue (列名)
# 给某字段添加默认值约束
alter table 表名 modify 字段名1 字段名1类型 default 默认值
# 添加自增长
alter table 表名 modify 字段名1 字段名1类型 auto_increment;
# 增加非空约束
alter table 表名 modify 字段名1 字段名1类型 not null;
# 增加外键约束
alter table 需要增加外键的表名 add constraint 约束名 foreign key(字段名) references 关联表名('关联表中的字段')
17. 删除主键、唯一 约束、默认值约束、自增长约束、外键约束
alter table 表名 drop primary key; # 删除主键
alter table 表名 modify 列名 列类型; # 删除自增长
alter table 表名 modify 列名 列类型 null; # 删除非空约束
alter table 表名 drop key 约束名 # 删除唯一约束
alter table 表名 drop foreign key 约束名 # 删除外键
18. 查询表中的约束信息
show keys from 表名
19. 插入数据
# 给指定字段插入数据
insert into 表名(字段名1,字段名2,字段名3,字段名4) values(值1,值2,值3,值4)
#给指定的字段插入多条数据
insert into student(字段名1,字段名2,字段名3,字段名4) values
(值1,值2,值3,值4),
(值1,值2,值3,值4),
(值1,值2,值3,值4)
20. 修改数据
update 表名 set 字段名=值 ,字段名1 = 值 where 条件
21. 删除数据
delete from 表名 where 条件
注意:执行过程由先到后依次为:FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY。
22. 清空表
TRUNCATE TABLE 表名;
23. 清空表时DELETE与 TRUNCATE 区别
24. 查询数据
# 查询所有数据
select * from 表名
# 查询指定字段数据
select 字段1,字段2 from 表名
# 去重 distinct
select distinct 字段名 from 表名;
# 算术运算符 + - * /
select 字段名1,字段名2,字段名3,(字段名4)*2 as 别名 from 表名;
# 排序 asc 升序 desc 降序 order by 排序
select 字段名1,字段名2,字段名3 from 表名 where 条件 order by 字段名
# between 条件1 and 条件2 在 条件1 和条件2 之间
# not in /in 不在/在
# is null / is not null 空/非空
# 模糊查询 like 条件
# 多条件查询 and && / or ||
# 分页使用 per_size 每页显示多少条
select * from 表名 where 条件 limit start,per_size
22. 函数的使用
CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以用不同的格式显示日期/时间数据。
语法 : CONVERT(data_type(length),data_to_be_converted,style)
data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。
函数
| 描述 | |
length(s) | 返回s的长度 | |
concat(s1,s2,s3....,n) |
字符串
s1,s2
等多个字符串合
并为一个字符串
| |
LPAD(s1,len,s2)
|
在字符串
s1
的开始处填充字
符串
s2
,使字符串长度达到
len
| |
LTRIM(s)
|
去掉字符串
s
开始处的空格
| |
REPLACE(s,s1,s2)
|
将字符串
s2
替代字符串
s
中
的字符串
s1
| |
REVERSE(s)
|
将字符串
s
的顺序反过来
| |
RPAD(s1,len,s2)
|
在字符串
s1
的结尾处添加字
符串
s2
,使字符串的长度达
到
len
| |
RTRIM(s)
|
去掉字符串
s
结尾处的空格
| |
SUBSTR(s, start, length)
|
从字符串
s
的
start
位置截取
长度为
length
的子字符串
| |
SUBSTRING(s, start, length)
|
从字符串
s
的
start
位置截取
长度为
length
的子字符串
| |
TRIM(s)
|
去掉字符串
s
开始和结尾处的
空格
|
数字函数
round(值/列/表达式,保留小数点的个数) 四舍五入
truncate(值/列/表达式,保留小数点的个数) 与round最大的区别是 不i会进行四舍五入
mod(m,n) 函数 找出M除以n的余数
日期函数:
函数名 | 描述 |
CURDATE()
|
返回当前日期
|
CURTIME()
|
返回当前时间
|
CURRENT_DATE()
|
返回当前日期
|
CURRENT_TIME()
|
返回当前时间
|
DATE()
|
从日期或日期时间表达式中提取日期值
|
DATEDIFF(d1,d2)
|
计算日期
d1->d2
之间相隔的天数
|
DAY(d)
|
返回日期值
d
的日期部分
|
DAYNAME(d)
|
返回日期
d
是星期几,如
Monday,Tuesday
|
DAYOFMONTH(d)
|
计算日期
d
是本月的第几天
|
DAYOFWEEK(d)
|
日期
d
今天是星期几,
1
星期日,
2
星期
一,以此类推
|
DAYOFYEAR(d)
|
计算日期
d
是本年的第几天
|
HOUR(t)
|
返回
t
中的小时值
|
LAST_DAY(d)
|
返回给给定日期的那一月份的最后一天
|
MONTHNAME(d)
|
返回日期当中的月份名称,如
November
|
MONTH(d)
|
返回日期
d
中的月份值,
1
到
12
|
NOW()
|
返回当前日期和时间
|
SECOND(t)
|
返回
t
中的秒钟值
|
SYSDATE()
|
返回当前日期和时间
|
TIMEDIFF(time1,
time2)
|
计算时间差值
|
TO_DAYS(d)
|
计算日期
d
距离
0000
年
1
月
1
日的天数
|
WEEK(d)
|
计算日期
d
是本年的第几个星期,范围是
0
到
53
|
WEEKDAY(d)
|
日期
d
是星期几,
0
表示星期一,
1
表示星
期二
|
WEEKOFYEAR(d)
|
计算日期
d
是本年的第几个星期,范围是
0
到
53
|
YEAR(d)
|
返回年份
|
转换函数
显示数据类型转换
隐式数据类型转换
日期转成时间戳
MySQL日期和时间戳的转换_知其黑、受其白的博客-CSDN博客_mysql时间戳转换日期
函数名 | 描述 |
IF(expr,v1,v2)
|
如果表达式
expr
成立,返回结果
v1
;否
则,返回结果
v2
。
|
IFNULL(v1,v2)
|
如果
v1
的值不为
NULL
,则返回
v1
,否则返
回
v2
。
|
ISNULL(expression)
|
判断表达式是否为
NULL
|
NULLIF(expr1, expr2)
|
比较两个参数是否相同,如果参数
expr1
与
expr2
相等 返回
NULL
,否则返回
expr1
|
COALESCE(expr1, expr2,
...., expr_n)
|
返回参数中的第一个非空表达式(从左向
右)
|
23. 分组查询
select * from 表名 where 条件 group by 字段名 [ having 条件 ]
每隔n分组统计数据:
Mysql按时间区段(每隔30分钟)统计数据并展示_认真的咸鱼的博客-CSDN博客_sql每30分钟
24. inner join 的使用 left join right join cross join 交叉连接
select 字段名1,字段名2
from 表名1 别名1 inner join 表名2 别名2
on 别名1.字段1= 别名2.字段2
where 条件
25. 索引
mysql中索引的类型
普通索引、唯一索引 、主键索引、联合索引
SHOW INDEX FROM table_name;
CREATE INDEX 索引名 ON 表名(column(length 可选长度));
ALTER TABLE table_name ADD INDEX index_name (column(length 可选长度));
CREATE TABLE `table` (
COLUMN TYPE ,
PRIMARY KEY (`id`),
INDEX index_name (column(length 可选长度))
);
CREATE UNIQUE INDEX indexName ON table(column(length));
ALTER TABLE table_name ADD UNIQUE indexName (column(length));
CREATE TABLE `table` (
COLUMN TYPE ,
PRIMARY KEY (`id`),
UNIQUE index_name (column(length))
);
ALTER TABLE 表名 ADD PRIMARY KEY(列名);
CREATE TABLE `表名` (
COLUMN TYPE ,
PRIMARY KEY(列名) );
ALTER TABLE table_name ADD INDEX index_name(column(length),column(length));
CREATE TABLE `table` (
COLUMN TYPE ,
INDEX index_name
(column(length),column(length))
);
mysql 事务
事务是什么
查看MySQL默认事务隔离级别
SELECT @@transaction_isolation;
set session transaction isolation level read uncommitted;
set session transaction isolation level read committed;
set session transaction isolation level repeatable read;
set session transaction isolation level serializable;
CREATE USER username IDENTIFIED BY'password';
SELECT USER,HOST FROM mysql.user;
GRANT 权限 ON 数据库.表 TO 'username'@'localhost' IDENTIFIED BY 'password'
权限列表
刷新权限
每当调整权限后,通常需要执行以下语句刷新权限。
FLUSH PRIVILEGES;
删除用户
DROP USER username@localhost;