MySQL配置及常用SQL语句

这篇博客详细介绍了MySQL的配置步骤、基本SQL语句,包括增删查改操作,以及数据库管理和优化,如数据类型、约束、使用VSCode连接、索引、视图、导入导出、备份恢复等。重点讨论了查询语句中的条件查询、排序、内置函数、子查询和连接查询,强调了索引在提高查询速度中的重要作用。

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

1.配置

* 1 MySQL 服务启动
	* 计算机管理—>服务—>MySQL—>手动开启关闭
	* cmd—>services.msc  打开服务窗口
	* 管理员身份打开cmd (win+R—>cmd—>shift+ctrl+enter)
	```MySQL
		* net start mysql   启动
		* net stop mysql   关闭
	```
* 2 MySQL 登录
```MySQL
	* mysql -u root -p  (本地服务器)
	* mysql -h127.0.0.1 -u root -p
	* mysql --host=127.0.0.1 --user=root --passport=root
```

0. 安装设置

        重设密码
  * alter user 'root'@'localhost' identified by 'new_password';
  * flush privileges;

2. Basic Command 增删

 		* show databases;     // 分号!
 		
 		* create database <dbname>;    // 创建数据库
 		
 	    * use <dbname>;           // 连接数据库
 	    
 		* show tables;      // 查看所有表的名称
 		
 		* create table <table_name>        // 创建表
 		 (
 		 列名a 数据类型(数据长度),
 		 列名b 数据类型(数据长度),
 		 列名c 数据类型(数据长度)     //last没有逗号
 		 );
 		 
 		  -- 查看创建数据库/表的SQL语句  (即上述“创建表“的SQL)
 		 * show create database db_name;
 		 * show create table table_name;
 		 
 		 * select * from <table_name>;  // 查看表的内容
 		 
 		 * insert into <table_name>(列名a,列名b) values(v1,v2); //表中插入数据
 		 
 		 * drop database db_name;   //删除数据库
 		 
 		 * drop table table_name;    //删除表
 		 
 		 -- 查看表结构
 		 * desc table_name;

3.数据类型

在这里插入图片描述

4. 约束分类

在这里插入图片描述

5. MySQL + VSCode

  • VScode 安装 MySQL、MySQL Syntax两个插件;

  • 在这里插入图片描述

  • MySQL 点击+号—>localhost—>root—>password—>enter—>enter;

  • 连接错误

在这里插入图片描述

  • 解决办法:
. 进入mysql
. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password';   

. flush privileges;
. vscode—> mysql —>refresh.

在这里插入图片描述

6. 查表SELECT FROM

6.1 条件查询
* select 列名1,列名2 form table_name where 限制条件;   --列名顺序代表实际显示结果顺序

* select * from table;         --查询所有的列, *——通配符

* 限制条件包括:> 、<、>=、<=、AND、OR、IN、NOT IN、LIKE+通配符_/%

* select name from table1 where age>20 OR age<30;

* select name from table1 where age IN (20,30);    --查询age==20 || age==30的数据 not范围

* select name from table1 where phone LIKE '11__';  -- 下划线_代表 一个 未指定字符

* select name from table1 where phone LIKE '12%';  -- 百分号%代表 不定个 未指定字符
6.2 排序 ORDER BY
* select name from table1 order by;     --默认升序
 
* select name from table1 order by ASC;    --升序

* select name from table1 order by DESC;   --降序
6.3 内置函数

在这里插入图片描述

  • COUNT 函数可用于任何数据类型(因为它只是计数)
  • SUM 、AVG 函数都只能对数字类数据类型做计算
  • MAX 和 MIN 可用于数值、字符串或是日期时间数据类型
  • 关键词AS可以给值重命名
6.4 子查询

“Tom” 所在部门做了几个工程
在这里插入图片描述

  • 上面代码包含两个 SELECT 语句,第二个 SELECT 语句将返回一个集合的数据形式,然后被第一个 SELECT 语句用 in 进行判断。

  • HAVING 关键字可以的作用和 WHERE 是一样的,都是说明接下来要进行条件筛选操作。

  • 区别在于 HAVING 用于对分组后的数据进行筛选

6.5 连接查询
  • , where
  • join on
内连接
笛卡尔积

select t1.name,t2.age from t1,t2

显示行数 = t1行数 * t2行数
外连接

7.删除修改

  1. 数据库\表
* drop database db_name;         --=删除数据库
* db_name一般无法修改,create new database

    重命名表
* rename TABLE old_name to new_name;
* alter TABLE old_name rename new_name;
* alter TABLE old_name rename to new_name;

   删除表
   * drop TABLE table_name;
  1. 表的一列
     1.增加一列 ADD
  *  ALTER TABLE 表名字 ADD COLUMN 列名字 数据类型 约束;
   或:
     ALTER TABLE 表名字 ADD 列名字 数据类型 约束;
  *  增加的列默认放在表的最右边,关键词 AFTER\FIRST-->可指定位置
  *  ALTER TABLE employee ADD weight INT(4) DEFAULT 120 AFTER age;   --新增一列weight放在age列的后面
  *  ALTER TABLE employee ADD test INT(10) DEFAULT 11 FIRST;   -- 新增一列放在第一列
  
      2.删除一列 DROP
  * ALTER TABLE 表名字 DROP COLUMN 列名字;
    或:
    ALTER TABLE 表名字 DROP 列名字;
    
      3.修改一列  CHANGE (修改名称,数据类型,约束)
  * ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束;
  * 数据类型不可忽略,否则change失败
  * ALTER TABLE employee CHANGE height shengao INT(4) DEFAULT 170;
  
      4.修改数据类型  MODIFY 
  *  ALTER TABLE 表名字 MODIFY 列名字 新数据类型;
  *  修改数据类型必须小心,可能会导致数据丢失       

3.表中某个值(数据) UPDATE

    1.修改表中某个值
*  UPDATE 表名字 SET 列1=值1,列2=值2 WHERE 条件;
*  UPDATE employee SET age=21,salary=2000 WHERE name='Tom';
*  不加where限制条件,则会修改全部列对应的值
    2. 删除一行记录
* DELETE FROM 表名字 WHERE 条件;
* DELETE FROM employee where name='Tom'; 

8.数据库管理

  • 索引:可以加快查询速度
  • 视图:是一种虚拟存在的表
  • 导入:从文件中导入数据到表
  • 导出:从表中导出到文件中
  • 备份:mysqldump 备份数据库到文件
  • 恢复:从文件恢复数据库
8.1 索引
  • 可加快查询速度

  • 在使用 SELECT 语句查询的时候,语句中 WHERE 里面的条件,会自动判断有没有可用的索引。(即select语句无需添加新的关键词,自动判断)

  • 具有唯一性的字段适合创建索引

  • 当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进行对比,然后返回满足条件的记录。这样做会执行大量磁盘 I/O 操作,并花费大量数据库系统时间。

  • 而如果在表中已建立索引,在索引中找到符合查询条件的索引值,通过索引值就可以快速找到表中的数据,可以大大加快查询速度。

      1. 2种格式
* ALTER TABLE 表名字 ADD INDEX 索引名 (列名);
* CREATE INDEX 索引名 ON 表名字 (列名);
  
      2.Example
* alter table employee add index idx_id(id);    # 在employee表上的id列上建立名为idx_id的索引
* create index idx_name on employee (name);   # 在employee表上的name列上建立名为idx_name的索引
8.2 视图
  • 视图是从表中导出但是虚拟的表
  • 数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中;
  • 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据;
  • 视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变;
  • 在使用视图的时候,可以把它当作一张表。
     1. 格式
   * CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;
  
     2.Example
   * create view v_emp(v_name,v_age)  as select name,age from employee;
   * select * from v_emp;     
8.3 导入
  • 导入纯文本文件
  • 根据mysql的安全策略,操作之前,需先查看 secure_file_priv
  • secure_file_priv值为 null, MYSQL服务禁止导入导出
  • secure_file_priv值为 一目录名,MySQL服务只允许在这个目录中执行文件的导入和导出操作
  • secure_file_priv值为 ‘’ ,(空,下图所示), 任何目录皆可执行文件的导入和导出操作
  • windows 在my.ini文件中加入语句,即可修改
* show variables like '%secure%';

在这里插入图片描述

  • 格式
* LOAD DATA INFILE '文件路径和文件名' INTO TABLE 表名字;
* load data infile 'C:/Users/Fernweh/Desktop/SQL6/in.txt' into table employee
  fields terminated by','                 -- 有分隔符的情况下
  lines terminated by'\r\n';             --windows 回车换行-->CRLF;一定要加这句话!
* unix/   -->LF;则不用添加.
8.4 导出
    1.格式
* SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;
    2. Example
*  SELECT * INTO OUTFILE '/var/lib/mysql-files/out.txt' FROM employee;
* 
8.4 备份
  • 备份与导出的区别:导出的文件只是保存数据库中的数据;
  • 而备份,则是把数据库的结构,包括数据、约束、索引、视图等全部另存为一个文件。
  • mysqldump语句是在命令行中,not SQL语句,不加分号!
    1.格式
* mysqldump -u root 数据库名>备份文件名;   #备份整个数据库
* mysqldump -u root 数据库名 表名字>备份文件名;  #备份整个表
    2.Example
* mysqldump -u root -p mysql_shiyan > bak.sql

在这里插入图片描述

8.5 恢复
  • 用备份文件恢复数据库
     1.SQL语句
 * use db_name;
 * source C:/Users/Fernweh/Desktop/bak.sql;   
     2.命令行
 * mysql -u root -p db_name < bak.sql

Problems

  1. MySQL数据库时区异常



注意

  • 如您发现本文档中有错误的地方,
  • 或者您发现本文档中引用了他人的资料而未进行说明时,请联系我进行更正。
  • 转载或使用本文档时,请作说明。
  • 非常感谢:)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值