当前位置:   article > 正文

Mysql数据库和navicat_mysql和navicat

mysql和navicat

1.navicat中的每一个操作,在本质上都对应了一个sql,你可以在工具下面找到历史日志进行查看

在这里插入图片描述
2.基础的sql语句
1.查看数据库:show databases;
2.切换数据库:use 数据库名
3.查看数据库中所有的表:show tables;
4.显示表中所有的信息:describe 数据库表名;
5.创建一个数据库create database 表名;
6.退出连接:exit;(强制退出ctrl+c)
7.sql本身的注释:单行注释:-- , 多行注释:/* */

操作数据库的语句
1.创建数据库:CREATE DATABASE [IF NOT EXISES] 表名;
2.删除数据库:DROP DATABASE [IF EXISES] 表名;
3.使用数据库:USE 表名 当表名为关键字或字段名是一个特殊字符时表名用`括起来。
4.查看所有的数据库:SHOW DATABASE;
5.show create table table_name; – 显示create database 语句是否能够创建指定的数据库。
6.show table status; – 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。
7.show columns from database_name.table_name; – 显示表中列名称。

数据库的列类型
1.主要常用的数值:
int 标准的整数 4个字节(最常用)
double 浮点数 8个字节
decimal 字符串形式的浮点数 金融计算的时候常用

2.字符串类型
char 字符串固定大小 0~255
varchar 可变字符串 0~65535 String类型中常用的变量
text 文本串 2^16-1 用于保存大文本

3.时间日期类型
date YYYY-MM-DD,日期格式
time HH:mm:ss 时间格式
datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
timestamp 时间戳 1970.1.1到现在的毫秒数,较为常用
year 年份表示

4.空值
没有值,未知,要注意的是,不要用null进行运算,null参加运算那么结果为null。

数据库的字段属性
Unsigned:无符号的整数,声明了该列不能为负数
zerofill :0填充的,不足的位数补0
自增:通常理解为自增,自动在上一条记录的基础上+1;通常用来设计唯一的主键~index,必须是长整数类型
可以自定义设置主键的起始值和步长
非空:NULL not NULL
当设置为not null时,不填写值则会报错
null 如果不填写值,默认为null。
默认:设置默认的值
sex,默认值是男,如果不能指定该列的值,则会有默认的值。

创建数据库表(重点)
CREATE TABLE IF NOT EXISTS student (
id INT(4) NOT NULL AUTO_INCREMENT COMMENT ‘学号’,
name VARCHAR(30) NOT NULL DEFAULT ‘匿名’ COMMENT ‘姓名’,
pwd VARCHAR(20) NOT NULL DEFAULT ‘123456’ COMMENT ‘密码’,
sex VARCHAR(2) NOT NULL DEFAULT ‘女’ COMMENT ‘性别’,
birthday DATETIME DEFAULT NULL COMMENT ‘出生时间’,
adress VARCHAR(100) DEFAULT NULL COMMENT ‘家庭住址’,
email VARCHAR(50) DEFAULT NULL COMMENT ‘邮箱’,
PRIMARY KEY(id)
)ENGINE=INNODB DEFAULT CHARSET=utf8

创建数据表的格式
CREATE TABLE [IF NOT EXISTS] 表名(
‘字段名’ 列类型 [属性] [索引] [注释],
‘字段名’ 列类型 [属性] [索引] [注释],
‘字段名’ 列类型 [属性] [索引] [注释],
)[表类型][字符集设置][注释]

查看数据库的
查看创建数据库的操作 SHOW CREATE DATABASE 数据库名
查看创建数据表的定义语句:SHOW CREATE TABLE 表名
显示表的结构:DESC 表名

数据库类型:
数据库引擎:INNOB默认使用 安全性高,支持事务处理,多表多用户操作
MYISAM早些年使用的 节约空间,速度较快

修改表
修改表的名称:ALTER TABLE 表名 RENAME AS 新表名
增加表的列:ALTER TABLE 表名 ADD 列名 列属性
字段修改约束(定义属性的类型):ALTER TABLE 表名 MODIFY 列名 属性
eg:ALTER TABLE student MODIFY age VARCHAR(10)
修改字段的名称:ALTER TABLE 表名 CHANGE 列名 新列名 属性
eg:ALTER TABLE student CHANGE age age1 int(1);
删除表的列:ALTER TABLE 表名 Drop 列名
删除表:DROP TABLE [IF EXISTS] 表名
添加外键ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY(‘作为外键的列’) REFERNCES (作为外键的列);

插入操作
插入语句:INSERT INTO 表名(字段名) VALUES(‘值1’),(值2)
注意事项:①.字段和字段之间用英文逗号隔开
②.字段是可以省略的,但是后面的值必须要一一对应,不能少
③.可以同时插入多条数据,Values后面的值要用括号括起来并且用逗号隔开

修改操作
修改语句:UPDATE 表名 SET ='结果‘ WHERE =‘值’ AND =‘值’(条件)
注意事项:①列要尽量戴上``
②条件,筛选的条件,如果没有指定,则会改变所有的列
③锁哥属性之间,使用英文逗号隔开

删除操作
删除语句:DELETE FROM 表名[WHERE 条件]
注意事项:①在用DELETE FROM的时候一定要用where条件来对语句进行限制,否则将会导致整个表全部删除
②清空整个表的操作:TURNCATE 表名
③delete和turncate的区别:相同点:都能删除数据,都不会删除表结构
不同点:turncate重新设置自增列,计数器会归零 delete不会改变自动增量
turancate不会影响事务

通过delete删除的问题我们可以知道,如果重启数据库,会有以下的现象
①InnoDB 自增列会从一开始(InnoDB的数据存在内存当中,断电及失)
②MyISAM 继续从上一个自增量开始(保存在文件之中,不会因为断电就丢失)

简单查询操作
查询语句:SELECT 要查询的数据 FROM 表名
注意:①可以进行起别名操作:在字段名后或者表名后添加as,即可
eg:SELECT studentNo AS 学号,studentname AS 学生姓名 FROM student AS s;
②拼接字符串函数Concat ,可以对查询的结果进行拼接想要的字符串
eg:SELECT CONCAT(‘姓名:’,studentname) AS 新名字 FROM student

查询操作①去重:distinct 当作用于一个字段时,返回一个不重复的字段,当作用于两个字段时,只有当两个字段都相同时才删
除,否则保留。distinct必须放在开头,放到其他地方会报错
例子可看:
https://www.cnblogs.com/peijie-tech/p/3457777.html
②where子句:SELECT 数据 FROM 表名 WHERE 条件 逻辑运算符:and or not 。在where中可以用between and来
代表介于两者之间。
③模糊查询:比较运算符:Like:语法:a like b 描述:SQL匹配,如果a匹配b,则结果为真。
IN:语法: a in(a1,a2,a3) 描述:假设a在a1,a2,a3其中的一个值中,结果为真。
其中的IS NULL ,IS NOT NULL中的IS只有后面是NULL的时候才能进行判断,具体的数值是
不能进行判断的,会报错。
<=>:安全等于号,既可以进行判断NULL值,又可以进行判断普通值
④连表查询:INNER JOIN : 如果表中至少有一个匹配就返回行
LEFT JOIN:会从左表中返回所有的值,即使右表中没有匹配
RIGHT JOIN:会从右表中返回所有的值,即使左表中没有匹配
JOIN (连接的表) ON (判断的条件)连接查询
WHERE (判断的条件) 等值查询
连表查询的思路:分析需求:分析要查询的字段来自哪里,(连接查询)
确定方法:确定使用哪种查询,在7中join查询中。
确定交叉点(共有的数据),
判断的条件(共有的数据相同或者其他条件)。
当多表查询时,两张表两张表查询,然后再接下一张,不要乱。
⑤自连接:from后面添加两次自己,记得要起别名,因为都是在一张表中,所以要注意别名。
⑥limit(分页)和order by(排序):
排序:升序ASC,降序DESC 使用方法:在where后,order by 字段 ASC/DESC。
⑦子查询:在条件过多的时候,需要多次连表查询时,可以简化连表查询的步骤,在where后续
需要条件满足不了时,可以用(把查询语句括起来返回一个你想要的结果)
⑧分组和过滤SELECT subjectname,AVG(studentresult) AS 平均分,MAX(studentresult) as 最高
分,MIN(studentresult) as 最低分
FROM result as r
INNER JOIN subject as sub
ON r.subjectno = sub.subjectno
GROUP BY r.subjectno
HAVING 平均分>80
在这里插入图片描述
select语句大全
在这里插入图片描述
在这里插入图片描述

mysql常用函数:1.数学运算:SELECT ABS(-8) --取绝对值
SELECT CEILING(9.4) --向上取整
SELECT FLOOR(9.4) --向下取整
SELECT RAND() --返回一个0~1之间的随机数
SELECT SIGN(10) --判断一个数的符号,正的返回1,负的返回-1
2.字符串函数:SELECT CHAR_LENGTH(‘即使再小的帆也能远航’) --字符串长度
SELECT CONCAT(‘我’,‘爱’,‘你们’) --拼接字符串
SELECT INSERT(‘我爱乃琳和asoul’,1,1,‘大家’) --查询,从一个位置开始
替换一个长度出来
SELECT LOWER(‘NAILIN’) --小写字母
SELECT UPPER(‘nailin’) --大写字母
SELECT INSERT(‘nailin’,n)–返回第一次出现子串的索引
SELECT REPLACE(‘乃琳喜欢火锅’,‘火锅’,‘乃淇淋’) --替换出现的指定字
符串
SELECT SUBSTR(‘乃琳说自己是Tom’,4,5) --返回指定的子字符串,最后
一位代表截取长度
SELECT REVERSE(‘十分的好’) --反转字符串

聚合函数:COUNT():计数函数 COUNT(expr) ,返回SELECT语句检索的行中expr的值不为NULL的数量
在这里插入图片描述
SUM(): 求和函数
AVG():平均值函数
MAX():最大值
MIN():最小值
3.流程控制函数
IF结构:在SELECT 其他值 IF(判断语句,‘正确返回值’,‘错误返回值’) from 表名;
首先进行判断,如果此判断表达式正确,则返回正确返回值,否则返回错误返回值
CASE结构1: SELECT 其他值
CASE 要判断的字段或者表达式
when 常量1 then 要显示的值1或者表达式
when 常量2 then 要显示的值1或者表达式
when 常量3 then 要显示的值1或者表达式
else 要显示的值n或者语句n;
end
from 表名;
CASE结构2:SELECT 其他值
CASE
when 条件1 then 要显示的值或者语句
when 条件2 then 要显示的值或者语句
when 条件3 then 要显示的值或者语句
else 要显示的值或者语句
end

事务

对于事务ACID的理解:
参考博客链接https://blog.csdn.net/dengjili/article/details/82468576
这个讲的好,一致性,原子性, 隔离性,持久性。
原子性:要么都成功,要么都失败
一致性:事务前后的数据完整性要保持一致
隔离性:事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多
个并发事务之间要相互隔离。
持久性:事务一旦提交则不可逆,被持久化到数据库中。

mysql事务管理代码
mysql是默认开启事务自动提交的
SET autocommit = 0; 关闭自动提交
SET autocommit = 1; 开启自动提交

手动处理事务
SET autocommit = 0; 关闭自动提交

事务提交
START TRANSACTION 标记了一个事务的开始,从这个之后的sql都在一个事务内

INSERT XX
INSERT XX

–提交:持久化(成功!)
COMMIT
–回滚:回到原来的样子(失败!)
ROLLBACK

–事务结束
SET autocommit = 1 开启自动提交

–了解
SAVEPOINT 保存点名 --设置一个事务的保存点
ROLLBACK TO SAVEPOINT 保存点名 --回滚到保存点

测试事务实现转账
START Transaction

UPDATE account SET money=money-500 WHERE name = ‘A’;
UPDATE account SET money=money+500 WHERE name = ‘B’;

COMMIT;
ROLLBACK;
SET autocommit = 1;

SELECT * FROM account;

索引分类:

主键索引(PRIMARY KEY)
唯一的标识,主键不可重复,并且每一个表只能有一个列作为主键
唯一索引(UNIQUE KEY)
避免重复的列出现,唯一索引可以重复,多个列都可以标识为唯一索引
常规索引(KEY/INDEX)
默认的,index,key来设置关键字
全文索引(FULLTEXT)
在特定的数据库引擎下才有:MyISAM
快速定位数据

索引命令:
显示所有的索引信息
SHOW INDEX FROM 表名

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/475557
推荐阅读
相关标签
  

闽ICP备14008679号