probar mysql

x para conectarse al servidor mysql:

mysql -h IP -P 端口号 -u root -p

Operar la base de datos a través del programa java:

Crear y eliminar base de datos:

utf8_bin distingue entre mayúsculas y minúsculas

utf8_general_ci no distingue entre mayúsculas y minúsculas

#创建一个数据库
CREATE DATABASE hsp_db01;

#删除数据库----慎用
DROP DATABASE hsp_db01;

#创建一个带utf8的数据库
CREATE DATABASE hsp_db02 CHARACTER SET utf8
#创建一个带utf8的数据库并带校对规则
CREATE DATABASE hsp_db03 CHARACTER SET utf8 COLLATE utf8_bin

consulta básica

SELECT * FROM t1 WHERE NAME = 'tom'

Mostrar sentencias de la base de datos:

SHOW DATABASES #显示所有数据库

SHOW CREATE DATABASE hsp_db02 #查看数据库的创建方法

Copia de seguridad de la base de datos: en la línea de comandos de DOS

mysqldump -u root -p -B 数据库1 数据库2  > D:\\beifen.sql

Copia de seguridad de tablas individuales:

mysqldump -u root -p  数据库1 表1 表2 数据库2 表2 > D:\\beifen.sql

Restaurar la base de datos: dentro de mysql

source d:\\beifen.sql

Crear mesa:

create table `user`(
	id int,
	`name` varchar(255),
	`password` varchar(255),
	`birthday` date)
	character set utf8 collate utf8_bin engine innodb;

Modificar tabla:

Agregue columnas después del currículum:

ALTER TABLE `emp`
	ADD image VARCHAR(3) NOT NULL DEFAULT " " 
	AFTER RESUME

Modifique la columna del trabajo para que su longitud sea 60

ALTER TABLE `emp`
	modify job varchar(60) not null default ""

Eliminar la columna de sexo:

ALTER TABLE `emp`
	DROP sex

Modifique el nombre de la tabla:

RENAME TABLE `emp` TO employee

Modificar los nombres de las columnas:

ALTER TABLE `emp` 
	CHANGE NAME user_name VARCHAR(32) DEFAULT NOT NULL ''



CRUD:

Añadir datos a la tabla: insertar en

INSERT INTO `emp` VALUES(100,"小妖怪","男",2022)
INSERT INTO `goods` (id,goods_name,price) 
	VALUES(10,"huawei",2000)

Ver todos los datos en la tabla:

SELECT * FROM goods

Declaración de actualización: cambiar el salario de todos a 5000----usar con precaución sin dónde

UPDATE employee SET sal = 5000

 Cambiar el sueldo de bobo a 5000

UPDATE `employee` 
	SET sal = 5000
	WHERE user_name = "bobo"

Aumento de salario: aumentar el salario de Bobo en 1000

UPDATE `employee` 
	SET sal = sal + 1000,job="出主意的"
	WHERE user_name = "bobo"

Eliminar toda la información relacionada con Bobo:

DELETE FROM emp
	WHERE user_name = "bobo"

Eliminar todos los registros: no donde, use con precaución

Mesa abatible: usar con precaución

drop table employee

instrucción SELECCIONAR:

Consultar a todos los estudiantes en la tabla:

SELECT * FROM students

Los nombres y las puntuaciones de inglés correspondientes de todos los estudiantes en la tabla de consulta:

SELECT `name`,`english` FROM students

Eliminar datos duplicados:

SELECT DISTINCT `name`,`english` FROM students 

Use select para operar en columnas:

Cuente la puntuación total de cada estudiante :

SELECT `name`,(chinese+english+math) AS `all` FROM students

Sume 10 al puntaje total de todos los estudiantes:

select `name`,(chinese+english+math+10) as `all` from students

Encuentre todos los estudiantes con una puntuación total > 100:

SELECT * FROM students
	WHERE (chinese+english+math) AS `all` > 100

 Nombres que comienzan con Han ----LIKE

SELECT * FROM students
	WHERE (chinese+english+math) AS `all` > 100
	AND `name` LIKE "韩%"

 Clasificación: orden por asc|desc ascendente y descendente

Ordenar por puntuación matemática:

select * from students
	order by math

Orden descendiente:

select * from students
	order by math desc
SELECT `name`,(chinese+english+math) AS `all` FROM students
	ORDER BY `all` DESC

Recuento de función de agregación/estadística

Estadísticas para el número total de estudiantes:

SELECT COUNT(*) FROM students

 El número total de estudiantes con una puntuación de matemáticas de 90

select count(*) from students
	where math>90

La diferencia entre contar(*) y contar(columna)----ignorar vacío:

Suma de función estadística

Cuente la puntuación total de una clase de matemáticas:

select sum(math) from students

Calificaciones totales en cada materia:

SELECT SUM(math),SUM(english) FROM students

Estadísticas de la puntuación media de todas las puntuaciones de idiomas:

select sum(math)/count(*) from students

avg encuentra el puntaje promedio en matemáticas de una clase:

select AVG(math) from students

Puntuación general media:

select AVG(math+english) from students

 Valor máximo: max, valor mínimo min

select max(math) from students

Estadísticas de grupo: agrupar por

Consulta salario por departamento:

SELECT AVG(sal),MAX(sal),deptno
	FROM emp GROUP BY deptno

Salario promedio por puesto, por sector:

SELECT AVG(sal),MAX(sal),deptno,job
	FROM emp GROUP BY deptno,job

El salario promedio es menos de 2000

select AVG(sal),max(sal),deptno
	from emp group by deptno
		HAVING AVG(sal)<2000

Uso de funciones relacionadas con cadenas:

Codificación de caracteres:

SELECT CHARSET(ename) FROM emp

Concatenación de cadenas:

SELECT CONCAT(ename,"工作是",job) FROM emp

Saca el valor con la primera letra minúscula:

SELECT CONCAT LCASE SUBSTRING(ename,1,1),SUBSTRING(ename,2)
	FROM emp

o

SELECT CONCAT LCASE LEFT(ename,1),SUBSTRING(ename,2)
	FROM emp

Declaración de control de flujo:

#流程控制语句
SELECT IF(TRUE,"北京","上海") FROM DUAL

SELECT ename,IF(comm IS NULL,0.0,comm)
	FROM emp

Declaración de control de flujo 2:

SELECT ename,(SELECT CASE
		WHEN job="clerk" THEN "职员"
		WHEN job="manger" THEN "经理"
		ELSE job END) AS job
	FROM emp

Mejoras en una sola tabla:

Mejora de la consulta, ordene primero por departamento, luego descienda por salario:

SELECT * FROM emp
	ORDER BY dep ASC,sal DESC

Mejora de consulta, consulta de paginación:

SELECT * FROM emp
	ORDER BY id_num
	LIMIT 0,3
	#第一页
SELECT * FROM emp
	ORDER BY id_num
	LIMIT 3,3
	#第二页
#语法:limit start,rows
#语法:limit 每页显示记录数*(第几页-1),每页显示记录数

 #Muestra el número total de empleados en cada puesto, el salario promedio      

#显示各个岗位的雇员总数,平均工资
SELECT COUNT(*),AVG(sal),job
	FROM emp
	GROUP BY job

 Cuente el número de empleados que no reciben beneficios:

SELECT COUNT(*),COUNT(*)-COUNT(comm)
	FROM emp

Deduplicación estadística:

SELECT COUNT(DISTINCT mgr)
	FROM emp

Consulta de varias cláusulas:

SELECT dept,AVG(sal) AS avg_sal
	FROM emp
	GROUP BY dept
	HAVING avg_sal > 1000
	ORDER BY avg_sal DESC
	LIMIT 0,2

Consulta de varias tablas:

Al escribir sql, escriba primero los simples y luego agregue condiciones de filtro

La clave es analizar las condiciones del filtro:

SELECT ename,sal,emp.dname FROM emp,dept
	WHERE emp.deptno = dept.deptno AND dept.deptno = 10

Muestra el nombre, el salario y el grado salarial del empleado:

SELECT ename,sal,grade
	FROM emp,salgrade
	WHERE sal BETWEEN losal AND histal

Autoconexión: mostrar el nombre del empleado de la empresa y su superior:

Asegúrese de tomar un alias, la tabla toma un alias, no necesita agregar como

SELECT worker.ename AS "职员名",boss.ename AS "上司名" 
	FROM emp AS emp01,emp AS emp02
	WHERE worker.mgr=boss.empno

Subconsulta de varias líneas: primero averigüe las condiciones del filtro,

SELECT * 
	FROM emp
	WHERE deptno=(
		SELECT deptno
		FROM emp
		WHERE ename="smith"
	)

 Subconsulta de varias filas 2:

SELECT * 
	FROM emp
	WHERE job IN (
		SELECT DISTINCT job
			FROM emp
			WHERE deptno=10
	)AND deptno !=10

Subconsulta tabla temporal:

Réplica de tablas:

INSERT INTO mytab_01
	(id,`name`,sal,job,deptno)
	SELECT empno,ename,sal,job,deptno FROM emp

Autorreplicación: replicación de tablas (replicación de gusanos)

INSERT INTO mytab_01
	SELECT * FROM mytab_01

Deduplicación de tablas: 1. Cree una nueva tabla tab_02 primero, para que tab_02 tenga registros duplicados

#创建一个新表
CREATE TABLE table_02 LIKE emp
#新表插入数据
INSERT INTO my_table02
	SELECT * FROM emp	
#数据去重,思路:
#1)先创建一个新表my_temp
CREATE TABLE my_temp LIKE my_table02
#2)通过关键字distinct处理,把数据记录到my_temp
INSERT INTO my_temp 
	SELECT DISTINCT * FROM my_table02
#3)清除my_table02的所有记录
DELETE FROM my_table02
#4)把my_temp的记录复制到mytable_02
INSERT INTO my_table02
	SELECT * FROM my temp
#5)drop掉临时表my_temp
DROP TABLE my_temp

 Consulta combinada: union elimina duplicados, union all no elimina duplicados

La conexión exterior de la tabla: muestra las calificaciones de todas las personas, si no hay calificación, también muestra el nombre y la identificación

unión externa izquierda, unión externa derecha

#原来的方式,不会显示没匹配到的
SELECT `name`,stu.id,grade
	FROM stu ,exam
	WHERE stu.id=exam.id
#改成左外连接
SELECT `name`,stu.id,grade
	FROM stu LEFT JOIN exam
	ON stu.id=exam.id

 En este punto, stu es la mesa de la izquierda y examen es la mesa de la derecha.

Restricciones de mysql: clave principal clave principal, clave principal mixta

Después de definir la restricción de clave principal, los valores de la columna de clave principal no se pueden repetir

restricción única, que indica que la columna no se puede repetir

Restricción de clave externa: FOREIGN KEY espera que exista una identificación (u otra), primero cree la tabla principal

 Puntos de atención de clave externa: la tabla principal debe ser una clave principal o única, y no se puede eliminar a voluntad. ¿Puede agregar vacío para ver la restricción de clave principal, la longitud puede ser inconsistente y el tipo de tabla es innodb?

Incremento automático: AUTO_INCREMENT

Generalmente se usa con la clave principal, también se puede usar con un único, generalmente se usa para enteros, el valor predeterminado es 1

Modifique el valor autocreciente:

ALTER TABLE t25 AUTO_INCREMENT = 100

Índice: experimente la optimización del índice, cree un índice para cada columna requerida

#创建	索引  索引名	在      哪个表(哪个列)
CREATE INDEX empno_index ON emp(empno)

El índice en sí ocupa espacio en el disco, así que vuelva a consultarlo después de crear el índice. Vuela rápido

SELECT * FROM emp
	WHERE empno=123456

Crear un índice solo es válido para la columna creada

El principio de indexación: cuando no hay índice, el escaneo completo de la tabla es ineficiente

                Cuando hay un índice, construye un árbol binario

Los problemas causados ​​por el índice, 1, el espacio se vuelve más grande, 2, no es propicio para la modificación de los datos (el cambio de la estructura de datos__manteniendo el índice)

La clave principal también es un índice, único también es un índice, índice ordinario, índice de texto completo (buscar campos en el artículo) solr y ES

Crear índice: Agregar índice

#创建	索引  索引名	在  哪个表(哪个列)
CREATE INDEX empno_index ON emp(empno)

#添加唯一索引
CREATE UNIQUE INDEX id_index ON t25 (id)
#添加普通索引:
CREATE INDEX id_index ON t25 (id)
#添加普通索引2:
ALTER TABLE t25 ADD INDEX id_index (id)
#添加主键索引:
ALTER TABLE t25 ADD PRIMARY KEY (id)

#删除索引:
DROP INDEX id_index ON t25
#删除主键索引
ALTER TABLE t26 DROP PRIMARY KEY
#修改索引,先删除在添加
#查询索引:
SHOW INDEX FROM t24
SHOW INDEXES FROM t24
SHOW KEYS FROM t24

Comprobar si una tabla tiene índices:

SHOW INDEXES FROM t25

Cuáles son adecuados para crear índices: 1. Consultas repetidas 2. Unicidad de identificadores

Transacción: garantice la unicidad de los datos, ya sea que todos tengan éxito o todos fallen, como la transferencia

#1.创建表
#2.开始事务
START TRANSACTION
#3.设置保存点
SAVEPOINT a
#4.执行dml操作
INSERT INTO t27 VALUES(100,"tom")
#5.设置保存点
SAVEPOINT b
#6.执行dml操作
INSERT INTO t27 VALUES(101,"tom2")
#7.回退到b保存点
ROLLBACK TO b
#8.回退到a保存点
ROLLBACK TO a
#9.回退到事务开始状态
ROLLBACK
#10.提交事务,一切生效,不在更改

 Operación de contraseña de usuario:

#1.创建新的用户
CREATE USER 'hsp_edu' @ 'localhost' IDENTIFIED BY '123456'
#2.删除用户
DROP USER 'hsp_edu' @ 'localhost'
#3.登录

#4.修改密码(自己的)	(别人的)
SET PASSWORD=PASSWORD("abcdef")
#(别人的)
SET PASSWORD FOR 'hsp_edu' @ 'localhost' = PASSWORD('123456')

 

Supongo que te gusta

Origin blog.csdn.net/weixin_42435798/article/details/124952305
Recomendado
Clasificación