MYSQL笔记

这篇笔记详细介绍了MySQL的基础知识,包括数据库初始化、字符集设置、数据类型和表格操作,如CRUD。重点讲解了各种函数的用法,如ISNULL(), IFNULL(), 字符串函数,以及分组、集合操作的关键字如IN, NOT IN, UNION。还讨论了列的约束,如主键、唯一、非空和外键约束。" 99686176,6702046,OpenGL环境搭建与第一个窗口,"['计算机图形学', 'OpenGL环境配置']

数据库初始

显示当前的mysql数据库中有多少个DATABASE

		SHOW DATABASES;

选择一个DATABASE使用

		USE MYSQL;

显示当前的DATABASE中有多少个TABLE

		SHOW TABLES;

退出

		EXIT;

SQL结构化查询语言
DDL数据定义语言
用来定义数据库中的对象
CREATE创建 DROP删除 ALTER修改
DML数据操作语言
操作数据库表格中的数据
写入信息
INSERT新增 DELETE删除 UPDATE修改
读取信息
SELECT查询
DQL
SELECT查询
DCL数据控制语言
控制数据库中的用户权限
GRANT赋予权限 REVOKE回收权限
TPL事务处理语言
可以理解为多线程并发操作同一个文件
BEGIN TRANSACTION
操作
COMMIT;提交
ROLLBACK;提交
SAVE POINT 还原点;

字符集的设置

0.1修改数据库的字符集
查询数据库的名字和字符集

		SELECT SCHEMA_NAME,DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='TEST'
按照CREATE DATABASE TEST;创建数据库的方式,字符集有默认值"latin1",此时不能处理中文

解决
设置数据库的字符集

		CREATE DATABASE TEST DEFAULT CHARACTER SET='UTF8'; 
设置表格的字符集
		CREATE TABLE STUDENT(
			SID INT(12),
			SNAME VARCHAR(12),
			SSEX VARCHAR(4)
		)CHARACTER SET 'UTF8'

数据类型,表格的创建与修改,CRUD

1.DDL数据定义语言
1.1.在数据库中创建一个DATABASE
CREATE DATABASE 数据库名;

		CREATE DATABASE TEST;
1.2.数据库中的数据类型
按照存储数据的方式分类
	1.2.1.数值型
		1.2.1.1.整数TINYINT	SMALLINT		MEDIUMINT	INT	INTEGER	BIGINT
		1.2.1.2.小数FLOAT	DOUBLE		DECIMAL		NUMERIC
	1.2.2.字符串
		1.2.2.1.存储字符串CHAR	VARCHAR
		1.2.2.2.存储二进制BINARY	VARBINARY
		1.2.2.3.字符串大文本TEXT
		1.2.2.4.二进制大文本BLOB	
	1.2.3.日期时间
		1.2.3.1.日期DATE
		1.2.3.2.时间TIME
		1.2.3.3.日期和时间DATETIME
		1.2.3.4.时间戳TIMESTAMP
1.3.在创建的DATABASE中创建一个table
	CREATE TABLE 表名(
		列名1 数据类型(长度),
		列名2 数据类型(长度),
		列名3 数据类型(长度),
		列名4 数据类型(长度)
	)
		CREATE TABLE STUDENT(
			SID INT(12),
			SNAME VARCHAR(12),
			SSEX VARCHAR(4)
		)
1.4.通过DDL语句修改表格的结构
	1.4.1.修改表格名字
		ALTER TABLE 原表名 RENAME TO 新表名
	1.4.2.修改列名字/类型/长度	[列名 类型(长度)什么都不改变也不会错]
		ALTER TABLE 表名 CHANGE 原列名 列名 类型(长度)
	1.4.3.新增一个列
		ALTER TABLE 表名 ADD 列名 类型(长度)
	1.4.4.删除一个列
		ALTER TABLE 表名 DROP 列名
	1.4.5.删除一个表格
		DROP TABLE 表名
	1.4.6.删除一个数据库
		DROP DATABASE 数据库名

2.DML数据操作语言
2.1.新增数据

		INSERT INTO 表名(列名,列名,列名) VALUES(数值,数值,数值);
		INSERT INTO 表名 VALUES(数值,数值,数值);
		INSERT INTO 表名(列名,列名,列名) VALUES(数值,数值,数值),(数值,数值,数值);
		INSERT INTO 表名 VALUES(数值,数值,数值),(数值,数值,数值);
2.2.查询数据
		SELECT 列名,列名 FROM 表名
		SELECT * FROM 表名
2.33.删除数据
		DELETE FROM 表名;
2.3.4修改数据
		UPDATE 表名 SET=,=值;

条件筛选+排序

2.3.5.条件筛选,可以放在删除修改查询后面,WHERE,后面可以跟数学符号和一些关键字
	SELEC * FROM STU WHERE A>1 AND A<2;
	这种方式会先按照第一个条件筛选,再按照第二个条件筛选
		SELEC * FROM STU WHERE A BETWEEN 1 AND 2;
		SELEC * FROM STU WHERE A NOT BETWEEN 1 AND 2;
	这种方式会将那个两个条件一起进行筛选
		SELECT * FROM STU WHERE A IN(1,2,3,4);
		SELECT * FROM STU WHERE ANOT IN(1,2,3,4);
		
		SELECT * FROM STU WHERE A LIKE '%A__'	
2.3.6.排序		ORDER BY		升序ASC	降序DESC
		SELECT * FROM STU WHERE A LIKE '%A__' ORDER BY A ASC,B ASC;	

函数的使用

函数必须有返回值,不一定都有参数

ISNULL(expr)

如 expr 为 NULL,那么 ISNULL()的返回值为 1,否则返回值为 0。

IF(expr1,expr2,expr3)

expr1 是 TRUE,则 IF()的返回值为 expr2;否则返回值则为 expr3。IF()的返回值为数字值或字符串值

IFNULL(expr1,expr2)

假如 expr1 不为 NULL,则 IFNULL()的返回值为 expr1;否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串

字符串函数

LENGTH()

CONCAT()

SUBSTR()

INSTR()

REPLACE()

UPPER()

LOWER()

LTRIM()

RTRIM()

LPAD()

RPAD()

REVERSE()

分组

分组函数GROUP BY

使用分组函数时,只能展示分组函数和分组条件

去重复DISTINCT

		SELECT DISTINCT NOW() FROM EMP

COUNT()

MAX()

MIN()

AVG()

SUM()

11.几个关键字

11.1.IN

满足查询子集中的某一个即可,默认按照 “=” 比较
IN后面的子集内,可以是常量固定值,也可以是通过另一条SQL语句查询出来的结果

11.2.NOT IN

下面三个后面不允许写固定值,只能写SQL语句

11.2.ANY

满足查询子集中的某一个

		举例:
			">ANY"
			满足大于后面中的任意一个,即大于最小的
			SELECT * FROM EMP WHERE EMPNO >ANY(SELECT empno FROM emp WHERE empno IN(7844,7902))
			"<ANY"
			满足小于后面中的任意一个,即小于最大的
			SELECT * FROM EMP WHERE EMPNO <ANY(SELECT empno FROM emp WHERE empno IN(7844,7902))
			"=ANY"
			满足等于后面中的任意一个,相当于IN
			SELECT * FROM EMP WHERE EMPNO =ANY(SELECT empno FROM emp WHERE empno IN(7844,7902))
			"!=ANY"
			满足不等于后面中的任意一个,如果后面的内容有多个,相当于没有条件了,如果只有一个,相当于不等于
			SELECT * FROM EMP WHERE EMPNO !=ANY(SELECT empno FROM emp WHERE empno IN(7844,7902

11.3.SOME

与"ANY"完全一致

11.4.ALL

满足查询子集中的全部
使用方法等同于"ANY"

12.集合的操作 UNION

要求前后查询的字节列数一致
类型没有要求
拼接后显示的列名是前一个自己默认的列名
注意和 UNION ALL 的区别
UNION合并后会做去重复的处理,即如果产生重复的元素,记录的是第一次出现的那一行,性能较慢
UNION ALL将两个查询的内容直接合并,不做任何处理,性能较快

13.列的约束

13.1.主键约束

每一个表格内只能有一个列设置为主键
主键约束通常是用来标记表格中数据的唯一存在

要求: 要求当前的列不能为null值
要求当前的列的值是唯一存在的,不能重复

		ALTER TABLE 表名   ADD 	CONSTRAINT 约束名称      约束类型    ();
		ALTER TABLE PERSON ADD 	CONSTRAINT PK_PERSON_PID PRIMARY KEY(PID);

13.2.唯一约束

13.3.非空约束

13.4.外键约束

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值