mysql数据库常用内容笔记

本文介绍了MySQL数据库的优势,如方便查询和持久化数据。详细阐述了DBMS、DB和SQL的概念及其关系,并讨论了数据库存储数据的特点。此外,文章还涵盖了数据类型、登录登出MySQL的语法、DDL和DML语言、常见命令、事务处理、视图的创建及特点,以及数据库的安全性和备份策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySql

  1. 数据库的优势有哪些?
    1.为了方便查询数据;
    2.为了持久化的保存数据;

  2. DBNS、DB、SQL
    1.DB:是数据库保存数据的容器;
    2.DBNS:是数据库管理系统或者数据库管理产品;常见的数据库管理系统有MYSQL、ORACAL、DB2、sql server
    3.SQL:是结构化查询语句
    4. 三者的关系:
    DBMS----SQL-----DB:DBMS
    管理系统通过SQL语言下命令给DB数据库

  3. 数据库存储数据的特点:
    1.表是放在库中的;
    2.数据是存放在表中的;
    3.一个数据库中的表名是唯一的;
    4.数据库中的列的名称称为字段;
    5.表中数据是以行的形式存放;

  4. 数据类型
    1.整数数据类型:一般情况下id的时候就使用int类型。其他的使用较少。
    2.浮点数据类型:float和double类型。区别是小数点精确度不同。
    3.定点数据类型:DECIMAL(M,D)
    4.字符串类型:CHAR–0-255, VARCHAR–0-65535;

  5. 登录登出mysql

登录:
mysql -u root -p
退出:
quit或者exit

  1. 语法规范:
    1.关键字要大写,表名,字段名小写;
    2.mysql支持关键字小写

  2. 常见命令:
    1.查询有哪些数据库:show databases;
    2.指定操作库:use 数据库名;
    3.查看数据库中有哪些表:show tables;
    4.查看表结构:desc 表名
    5.查看表数据库:select * from 表名

  3. DDL语言(数据定义语言)
    1.库和表的管理:

创建数据库:create databases 库名;
删除数据库:drop databases 库名;
		2.创建表
		注意:创建表时,要先进入use库后创建.
		创建表:
create table 表名(
					字段名 数据库类型
					字段名 数据库类型
					);
		删除表:
drop table 表名;
  1. MySql修改表
    1.修改表名 rename:
alter table 旧表名 rename  新表名;
	2.修改字段的数据类型   MODIFY
alter table 表名 MODIFY  字段名  字段类型;
	3.修改字段名  change:
alter table 表名 change 旧字段名 新字段名  新字段类型;
	4.添加字段  add  first  after
	将字段firstname添加到age字段之后
alter table student add firstname varchar(5)after age;
	将firstname添加到第一列
alter table student add firstname varchar(5)first
	5.删除字段  drop
alter table 表名 drop 字段名;
  1. DML语言(数据操纵语言)
    1.不指定字段插入:
insert into 表名 values(1,‘lisi’,56,‘13335354646’);
	2.指定字段名插入:
insert into student (name,age,stuphone)values(‘lisi’,56,‘13376765454’)
	3.同时插入多行数据:
insert into student values
 		(2,‘wangwu’,46,‘13345677654’),
 		(3,‘tom’,22,‘12347564857’);
	4.修改语句:
	修改其中某个字段的值
update 表名 set id = 4 where age = 56
	**where后面跟的是唯一的值,where前是需要修改的内容**
	多个字段同时修改时用逗号隔开;
update student set id = 4,name = ‘augus’ where age = 56
	5.删除语句:
	删除其中某一行数据
delete from 表名 where name = ‘wagwu’;
	同时删除多行数据
delete from 表名 where name in(‘lisi’,‘wangwu’)

6.常见约束:

		1.主键: PRIMARY KEY
		作用:DBMS为了方便查找数据库,设计的一个规则
	特点:
		一张表中主键是唯一的;
		主键可以用来唯一的标识一行数据,主键不能为空集;
		
		2.联合主键:表中字段不能作为唯一标识每一行的数据时,选取表中两个或者多个字段作为联合主键;
	特点:如果去掉联合主键某个字段,剩下的字段任然可以构成联合主键,那么说明之前的联合主键是错误的。



	修改表时添加主键:
alter table user add primary key(id);
	选中表   表名      关键字    字段名  
	删除主键:
alter table user drop primary key;
	创建表时,设置主键;
	 	方式一 
create table class(
	-> id int(11) primary key,
	-> name varchar(12)
	-> );
		方式二:
create table class1(
		-> id int(11),
		-> name varchar(12),
		-> primary key(id)
		-> );
 	创建联合主键;
create table user1(
    		-> name char(16),
    		-> gender char(10),
    		-> birthday date,
    		-> city varchar(16),
    		-> primary key(name,city)
    		-> );
	主键自增 AUTO_INCREMENT
		通过auto_increment设置主键自增
		特点:
			和主键结合使用,
			自增字段的数据类型是整数类型
			自增的数据开始值是1,没增加一行数据,自增1

	添加自增
create table tb_dept10(
id INT(11) PRIMARY key AUTO_INCREMENT,
name VARCHAR(25),
location VARCHAR(50)
);
	设置自增默认值
CREATE TABLE tb_dept11(
id INT(11) PRIMARY key auto_increment,
name VARCHAR(25),
location VARCHAR(50)
)auto_increment=100;
	删除自增
ALTER TABLE tb_dept10 MODIFY id int(11);
	在修改表时设置自增
ALTER TABLE tb_dept12 CHANGE COLUMN id id INT(11) auto_increment;
	修改表时指定初始值
ALTER TABLE tb_dept12 auto_increment=100;
	外键:
	FOREIGN KEY(sid) REFERENCES studentinfo(id)
)ENGINE=InnoDB DEFAULT CHARSET=GB2312;
	唯一约束UNIQUE
		特点:
			主键在一个表里面只能有一个
			但是唯一性约束可以有多个
			设置了唯一性约束的字段表中有且只能有一个空值

	创建表的时候设置唯一性约束
CREATE TABLE tb_dept1(
id INT(11) PRIMARY KEY,
name VARCHAR(25) UNIQUE,
location VARCHAR(50)
);
	修改表的时候添加唯一性约束
ALTER TABLE tb_dept2 ADD  UNIQUE(name);
		起别名:
ALTER TABLE tb_dept2 ADD CONSTRAINT 			别名 UNIQUE(字段);
	删除唯一性约束
ALTER TABLE tb_dept2 DROP INDEX name;
	默认值DEFAULT 'Beijing'
		特点:
		在插入数据时,如果不写入就使用默认值,如果写入就使用新值

		新建表时创建
CREATE TABLE tb_dept3(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
location VARCHAR(50) DEFAULT 'shanghai'
);
	非空约束(NOT NULL)
		特点:
		一张表中可以设置多个字段非空,主键默认非空 

		新建表时设置
CREATE TABLE tb_dept4(
id INT(11) NOT NULL,
name VARCHAR(35),
location VARCHAR(50)
);
		修改表时设置
ALTER TABLE tb_dept3 CHANGE name name VARCHAR(34) not NULL;

7.DQL数据查询语言

	查询会产生一张虚拟表
	语法结构:
	*代表表中的所有字段,不建议使用,当数据量大时会影响查询效率
select 字段名,字段名 from 表名 where 筛选条件
	查询表中所有的数据库:
select * from student;
	指定字段查询:
select 'name' , address from student;
	as起别名:

select name as 姓名,address as 地址 from student;
起别名中,不写as 也是可以辨认的;
limit使用
注意:limit 0,2 逗号前面表示从哪一行开始取值,第一行是0,逗号右边是取值取多少行

select * from student where id = 901 limit 0,2;
	distinct排除重复
select distinct department as 院系,address from student;
	单条件查询:

```javascript
=     !=   <  >  >=  <==
		select * from student where id >=905
	多条件查询:and  or   not
select * from student where id>=905 and sex='女';
select * from student where id>=905 or sex=‘男’
	集合操作:
		1、or
SELECT * FROM student WHERE department='		计算机系' OR department='英语系' 		OR sex='女'
	2、in
SELECT * FROM student WHERE department IN ('计算机系','中文系')
	3、not in
SELECT * FROM student WHERE department NOT IN ('计算机系','中文系')
*/
	模糊匹配
		LIKE
	_ 一个字符
SELECT * FROM student WHERE name LIKE '_三'
		%任意字符 可以是0个
SELECT * FROM student WHERE address LIKE '辽宁%'
		查询空号 is NULL
SELECT * FROM student WHERE name is NULL
		常量列:
SELECT name as 姓名,address AS 地址,'希望小学' AS 学校 FROM student
		排序
		升序 ASC
SELECT * FROM score WHERE c_name='计算机' ORDER BY grade ASC
		降序 DESC
SELECT * FROM score WHERE c_name='计算机' ORDER BY grade DESC
		聚合函数:
		count 计数:
SELECT COUNT(grade) FROM score
		max 
		求计算机系学生的最高分
 SELECT stu_id AS 学号, MAX(grade) AS 成绩 FROM score WHERE c_name='计算机'
		min 求计算机系学生的最低分
SELECT stu_id AS 学号, min(grade) AS 成绩 FROM score WHERE c_name='计算机'
		sum 求和
SELECT stu_id AS 学号, SUM(grade) AS 成绩 FROM score WHERE c_name='计算机'
		avg 平均值
SELECT stu_id AS 学号, AVG(grade) AS 成绩 FROM score WHERE c_name='计算机'
		分组
		WHERE子句:
		从数据源中去掉不符合其搜索条件的数据
		GROUP BY子句:
		搜集数据行到各个组中,统计函数为各个组计算统计值,每个组输出一行结果
		HAVING子句:
		从分组计算结果中进行过滤,去掉不符合其组搜索条件的各组数据行

		求每个系的最高分
SELECT c_name,AVG(grade) FROM score GROUP BY c_name
		多字段分组
SELECT stu_id,c_name,AVG(grade) FROM score GROUP BY c_name,stu_id
		HAVING 对之前分组的结构进行过滤
SELECT c_name,AVG(grade) FROM score GROUP BY c_name HAVING AVG(grade)<=90;
	子查询:sql里面嵌套sql
SELECT id,name FROM student 
WHERE id=(
SELECT stu_id FROM score WHERE c_name='计算机' AND grade=70);
	IN 后面可以赋多个值,用括号

中文系的学生信息

SELECT * FROM student WHERE id IN (SELECT stu_id FROM score WHERE c_name='中文') 
	NOT IN
SELECT * FROM student WHERE id NOT IN (SELECT stu_id FROM score WHERE c_name='中文') 
	EXISTS 如果子查询返回结果为真 则执行前面sql ,如果为假 则前半句sql执行结果为空
SELECT * FROM score WHERE EXISTS (SELECT stu_id FROM score WHERE c_name='中文111') 
	ALL 本质用and 取最大值
	ANY OR 取最小值

	1.ANY子句表示父查询只需要任意匹配一条子查询结果就可执行
	2.ANY子句中 = ANY(子查询) 与IN同意
	3.ANY子句中 > ANY代表大于最小值
	4.ANY子句中 < ANY代表小于最大值

	1.ALL子句中 > ALL代表大于最大值
	2.ALL子句中 < ALL代表小于最小值

	UNION 合并表
	all 数据会重复
SELECT * FROM student_copy UNION all SELECT * FROM student;
	不加all会去重
SELECT * FROM student_copy UNION SELECT * FROM student;
	内连接:求两张表交集的部分
SELECT * FROM a_table INNER JOIN b_table ON a_table.a_id = b_table.b_id
	左连接: 以左表为基础,展示出左表全部数据和右表交集部分数据
SELECT * FROM a_table LEFT JOIN b_table ON a_table.a_id = b_table.b_id
	右连接:以右表为基础,展示出右全部数据和左表交集部分数据
SELECT * FROM a_table RIGHT JOIN b_table ON a_table.a_id = b_table.b_id
  1. 事务
    事务具有4个特定:原子性,一致性,隔离性,耐久性。
  2. 视图
    视图是保存查询结果,把结果虚拟成一张表,视图依赖原始的表数据和结构,如果原来的表数据或者结构发生改变,视图的数据也会相应发生改变。
    视图的特点:
    1.效率高
    2.安全性,可以指定展示其中某几列数据,隐藏敏感信息。
    语法结构为:
    reate view 视图名 as 查询sql
    创建视图:
create view view_show_stu(sid,sname,sex,birth,class) as 	select * from student;
	查看视图结构:
show create view get_stdent_score
	修改视图
	 语法结构:	
ALTER VIEW 视图名 AS 新的查询sql
	修改视图
	 ALTER VIEW showstu AS SELECT student.sno,student.sname,student.ssex,student.sbirthday,

	 student.class,score.cno,score.degree FROM student,score WHERE student.sno = score.sno
删除视图
DROP VIEW showstu;
	存储过程
	创建存储过程

	定义结束结束

	创建存储过程
CREATE PROCEDURE ShowStuScore1()
BEGIN
SELECT * FROM tb_students_score;
END 
	创建带参数的存储过程
 delimiter 
create PROCEDURE GetStu(in name VARCHAR(30))
BEGIN
SELECT * FROM student WHERE sname=name;
END 
	通过call语句调用存储过程
 delimiter ;
CALL GetStu('李军')
	查看存储过程的状态
SHOW PROCEDURE STATUS LIKE 'GetStu';
	查看存储过程的定义
show CREATE PROCEDURE GetStu;
	修改存储过程 只能修改存储过程的状态,修改内容只能先删除在修改
例子: ALTER PROCEDURE showstuscore MODIFIES SQL DATA SQL SECURITY INVOKER;
	删除存储过程 
drop PROCEDURE ShowStuScore1
	备份数据库中某个表
mysqldump -uroot -p test student>C:\student.sql
	备份单个数据库
mysqldump -u root -p 库名>C:\student.sql
	同时备份多个库
mysqldump -u root -p --databases 库名 库名>C:\student.sql
	导出数据库信息
	查看secure-file-priv当前的值是

show variables like ‘%secure%’;

如果导出失败:
则需要添加secure_file_priv
SELECT * FROM student INTO OUTFILE 'C://Pcode/person.txt';

回复数据库

mysql -u root -p < C:\all.sql

备份所有数据库

mysqldump -u root -p --all-databases > C:\all.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值