首页 > 数据库 >数据库系列-mysql-sql执行示例

数据库系列-mysql-sql执行示例

时间:2024-07-01 21:59:50浏览次数:19  
标签:COMMENT name 示例 -- sql mysql test NULL tb

数据库定义语言

-- 数据库查询语句模板
 
-- !数据库创建
-- 创建数据库test,如果存在则不创建,默认字符集为utf8,不区分大小写,cs为大小写敏感,也可以使用utf8_bin,字符采用二进制存储
CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
 
-- 数据库删除
DROP DATABASE IF EXISTS `test`;
 
-- !数据库切换
USE `test`;
 
-- !数据库列表
SHOW DATABASES;
 
-- !数据库表列表
SHOW TABLES;
 
-- !创建表
-- 创建表tb_test,comment 为描述 primary key 为主键 index为索引 unique为唯一索引
CREATE TABLE `tb_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `name` varchar(255) NOT NULL COMMENT '名称',
  `age` int(11) NOT NULL COMMENT '年龄',
  PRIMARY KEY (`id`) INDEX `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- 创建外键表
CREATE TABLE `tb_test_fk` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `name` varchar(255) NOT NULL COMMENT '名称',
  `age` int(11) NOT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- 创建数据表,添加外键
CREATE TABLE `tb_test_fk` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `name` varchar(255) NOT NULL COMMENT '名称',
  `age` int(11) NOT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
  FOREIGN KEY (`name`) REFERENCES `tb_test` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- 添加外键
  ALTER TABLE `tb_test_fk` ADD CONSTRAINT `fk_test_fk` FOREIGN KEY (`id`) REFERENCES `tb_test` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
 
-- 创建视图
CREATE VIEW `vw_test` AS SELECT * FROM `tb_test` left join `tb_test_fk` on `tb_test`.`name` = `tb_test_fk`.`name`;
-- !修改表结构
-- 添加字段email,默认为最后一列,first为第一列,after为指定列之后
ALTER TABLE `tb_test` ADD `email` varchar(255) NOT NULL COMMENT '邮箱';
-- 修改字段名称、类型和约束
ALTER TABLE `tb_test` CHANGE `name` `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称';
-- 修改字段类型和约束
ALTER TABLE `tb_test` MODIFY `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称';
-- 删除字段
ALTER TABLE `tb_test` DROP `name`;
-- 删除外键
ALTER TABLE `tb_test` DROP FOREIGN KEY `fk_test_fk`;

数据库操作语言

-- !添加数据
-- 添加单行数据
INSERT INTO `tb_test` (`name`, `age`) VALUES ('张三', 20);
-- 添加多行数据
INSERT INTO `tb_test` (`name`, `age`) VALUES ('张三', 20), ('李四', 21);
 
-- !更新数据
-- 更新单个字段
UPDATE `tb_test` SET `name` = '张三' WHERE `id` = 1;
-- 更新多个字段
UPDATE `tb_test` SET `name` = '张三', `age` = 20 WHERE `id` = 1;
 
-- !删除数据
DELETE FROM `tb_test` WHERE `id` = 1;

数据库查询语言

-- 查询数据
-- !查询单条数据
USE employees;
-- !查询一张数据表中的所有数据,生产中不建议使用
SELECT * FROM employees;
-- !分页查询 前面是起始位置,后面是查询行数
SELECT * FROM employees LIMIT 20,10;
-- !排序 desc 倒序 asc 正序
SELECT * FROM salaries order by salary;
-- !查询指定字段
SELECT first_name, last_name FROM employees;
-- !指定条件查询
SELECT * FROM salaries WHERE salary > 150000;
-- 去重
SELECT distinct emp_no FROM salaries WHERE salary > 150000;
-- 分组查询
-- 查询前100行数据,每个部门里面有哪些员工
select dept_no,group_concat(emp_no) from current_dept_emp group by dept_no limit 100;
-- 查询当前数据表有多少条数据
SELECT count(*) FROM employees;
-- 查询员工表中1959年出生的员工
-- 模糊查询,生产中不建议使用
SELECT * FROM employees WHERE birth_date LIKE '1959%';
-- left
select * from employees where left(birth_date,4) = '1959';
-- 时间比较
select * from employees where birth_date >= '1959-01-01' and birth_date <= '1959-12-31';
 
-- sql 优化
-- 1、查询表数据的时候,使用分页limit
-- 2、查询数据时,即便你要查询所有的列,也要指定列名
select * from employees; -- select l1,l2,l3 from employees;
-- 3、不要使用模糊查询
-- 4、不要使用反向查询
-- select * from employees where gender != 'F';
-- 5、能使用视图就不要去使用多表连接查询,子查询。
-- 6、做查询计划,检验sql语句
 
-- 多表查询
-- 两个表连查
select t.id as tid,s.id as sid,t.name,s.name from teacher t,student s where t.id = s.tid;
-- 内连接 inner 外连接 left right
select * from teacher t right join student s on t.id = s.tid;

数据库控制语言

创建账号
CREATE USER '你的用户名'@'localhost' IDENTIFIED BY '你的密码';
#把刚刚创建的数据库的管理权限给予刚刚创建的MySQL用户
GRANT ALL PRIVILEGES ON 你的数据库名.* TO '你的用户名'@'localhost';
#刷新权限,使用设置生效
FLUSH PRIVILEGES;
# 取消权限
revoke 权限 on 数据库.表 from '用户'@'客户端来源IP地址'    -

标签:COMMENT,name,示例,--,sql,mysql,test,NULL,tb
From: https://blog.csdn.net/2401_83068432/article/details/140053195

相关文章

  • sql-server创建存储过程
    useEFDBgo--添加学生存储过程--usp_AddStudents自定义的存储过程nameifexists(select*fromsysobjectswherename='usp_AddStudents')dropprocedureusp_AddStudentsgo--@StudentNamevarchar(20),对应表中的字段--@Genderchar(2),对应表中的字段--@Birthday......
  • Spark_04 SparkSQL的介绍及使用
    说明这一章主要包括对于sparksql概念的介绍,sparksql的特点,sparksql用到的数据类型,DataFrame的基础方法等。概念SparkSQL是Spark用于处理结构化数据的模块。诞生由于MapReduce这种计算模型的执行效率较慢,rdd原生代码较为复杂,所以引入了SparkSQL应运而生。它可以将sql转换为......
  • MySQL—创建和修改数据表结构
    创建表实例:CREATETABLE`user`(idINT,`name`VARCHAR(255),`password`VARCHAR(255),`birthday`DATE)CHARACTERSETutf8COLLATEutf8_binENGINEINNODB;显示数据库中的表showtablesfromhsp;显示表结构descdept;修改......
  • WEB01MySQL安装和数据库
    第一天、WEB课程web课程主要讲三部分内容数据库数据库介绍什么是数据库数据存储的仓库,其本质也是一个文件系统数据库会按照特定的格式对数据进行存储,用户可以对数据库中的数据进行增加,修改,删除及查询操作。数据库管理系统层次数据库管理系统(DataBaseManage......
  • 为什么升级到 MySQL 8.x 后,带有多个 IN 值的查询会更昂贵?
     MySQL的范围优化有多个IN值的查询在MySQL查询优化器中,会使用"等值范围优化"(EqualityRangeOptimization)。假设我们的查询是这样的:SELECTCOUNT(*)FROMtest.sbtest1WHEREidIN(10,50,200,...,30822);比较列表中有一万个值。在MySQL5.7下运行这个程序会得到以......
  • MyBatis中Where标签:揭秘高效SQL构建的秘密
    哈喽,大家好,我是木头左!理解Where标签的基础概念在MyBatis中,<where>标签是用于构建SQL查询语句中的一个非常重要的元素。它允许你在一个动态的SQL语句中添加WHERE子句,而不需要担心SQL语法错误或额外的逗号和AND/OR关键字。使用<where>标签可以让的SQL语句更加简洁、易读,并且能够......
  • FlinkCDCSQL数据同步mysql->clickhouse
    FlinkCDC(ChangeDataCapture)SQL用于实现数据库的数据变更捕获,并通过SQL接口进行处理。以下是一个基本的示例,全量+增量数据mysql同步到clickhouse,展示如何使用FlinkCDCSQL进行数据同步。首先,确保你有Flink和FlinkCDC的环境配置好。1.mysql测试source表(准备......
  • 实战篇——SQL注入sqli-labs-master靶场实战一
    实战篇——SQL注入sqli-labs-master靶场实战(1)SQL注入的原理没有对用户的输入进行合法性判断或过滤,而是直接将其拼接至SQL查询语句当中作为命令执行,从而导致非法操作。SQL注入的检测也就是闭合方式的判断,根据报错信息的不同情况可以分为3类——(1)有报错信息(2)无报错信息,但......
  • MySQL 使用 ALTER TABLE 语句修改表结构的方法
    MySQL使用ALTERTABLE语句修改表结构的方法基本概念与作用作用说明完整代码示例示例一:添加新列示例二:修改列的数据类型示例三:删除列示例四:重命名列示例五:添加约束示例六:删除约束示例七:更改表名示例八:更改表的存储引擎功能使用思路实际工作开发技巧在数据库开发......
  • MySQL Public Key Retrieval is not allowed 解决指南
    MySQLPublicKeyRetrievalisnotallowed解决指南基本概念与作用说明完整代码示例与解决方案示例一:检查用户权限示例二:检查KMS配置示例三:检查加密列定义示例四:重置密钥功能使用思路与最佳实践实际工作开发技巧在现代数据库管理中,加密和密钥管理是保障数据安全......