mysql

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 区别

truncate 是整体删除(速度较快), delete 是逐条删除(速度较慢);
truncate 不写服务器 log,delete 写服务器 log,也就是 truncate 效率比 delete 高的原因;
truncate 是会重置自增值,相当于自增列会被置为初始值,又重新从 1 开始记录,而 不是接着原
来的值。而 delete 删除以后, 自增值仍然会继续累加。

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的余数 

日期函数:

MySQL中允许直接使用字符串表示日期,但是要求字符串的日期 格式必须为:‘YYYY-MM-DD HH:MI:SS’ 或者‘YYYY/MM/DD HH:MI:SS’
函数名描述
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)
返回年份

转换函数

 显示数据类型转换

显示数据类型转换是指需要依赖转换函数来完成相关类型的转换。
如:
DATE_FORMAT(date,format) 将日期转换成字符串 ;
STR_TO_DATE(str,format) 将字符串转换成日期 ;

 隐式数据类型转换

隐式数据类型转换是指 MySQL 服务器能够自动地进行类型转换。
如:可以将标准格式的字串日期自动转换为日期类型。
MySQL 字符串日期格式为: ‘YYYY-MM-DD HH:MI:SS’ 或 ‘YYYY/MM/DD HH:MI:SS’;

日期转成时间戳

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 事务

事务是什么

事务是一个最小的不可再分的工作单元,作为单个逻辑工作单元执行的一系列操作,要么完全地执
行,要么完全地不执行。
事务四大特征 (ACID)
原子性  :  事务中的操作要么都不做,要么就全做。
一致性  : 一个事务应该保护所有定义在数据上的不变的属性 ( 例如完整性 约束 ) 。在完成了一个成功的事务时,数据应处于一致的状态。
隔离性   : 一个事务的执行不能被其他事务干扰
持久性  : 一个事务一旦提交,它对数据库中数据的改变就应该是永久性 的。
使用事务

 查看MySQL默认事务隔离级别

SELECT @@transaction_isolation;
设置事务隔离级别
对当前 session 有效。
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;
MySQL 的用户管理
MySQL 是一个多用户的数据库系统,按权限,用户可以分为两种:
root 用户,超级管理员,和由 root 用户创建的普通用户。
用户管理
创建用户
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;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宠乖仪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值