1.mysql基础

mysql基础

1、SQL的概念

1.1 什么是sql

Structured Query Language结构化查询语言

1.2 SQL语句分类

  • Data Definition Language(DDL数据定义语言)如:建库,建表
  • Data Manipulation Language(DML数据操纵语言),如:对表中的记录操作增删改
  • Data Query Language(DQL数据查询语言),如:对表中的查询操作
  • Data Control Language(DCL数据控制语言),如:对用户权限的设置

2.DDL操作数据库

2.1 创建数据库

2.1.1 创建数据库的几种方式

  • 创建数据库
    CREATE DATABASE数据库名;
  • 判断数据库是否已经存在,不存在则创建数据库
    CREATE DATABASE IF NOT EXISTS数据库名;
  • 创建数据库并指定字符集
    CREATE DATABASE 数据库名 CHARACTER SET 字符集;

2.1.2 具体操作

--直接创建数据库db1
create database db1;

--判断是否存在,如果不存在则创建数据库db2
create database if not exists db2;

--创建数据库并指定字符集为gbk
create database db3 default character set gbk;

2.2 查看数据库

按tab键可以自动补全关键字

--查看所有的数据库
show databases;

--查看某个数据库的定义信息
show create database db3;
show create database db1;

2.3 修改数据库

2.3.1修改数据库默认的字符集

ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;

2.3.2 具体操作:

将db3数据库的字符集改成utf8

alter database db3 character set utf8;

2.4 删除数据库

2.4.1 删除数据库的语法

DROP DATABASE 数据库名;

2.4.2具体操作:

每行SQL语句需要选中再执行,可以按F9
删除db2数据库

drop database db2;

2.5 使用数据库

2.5.1 查看正在使用的数据库

SELECT DATABASE();
使用的一个mysql中的全局函数

2.5.2 使用/切换数据库

USE 数据库名;

2.5.3 具体操作

--查看正在使用的数据库
select database();

--改变要使用的数据库
use db4;

3、DDL操作表结构

3.1 创建表

3.1.1 创建表的格式

CREATE TABLE 表名(
	字段名1 字段类型1,
	字段名2 字段类型2
);

3.1.2 关键字说明:

1

3.2 MySQL数据类型

3.2.1常使用的数据类型如下:

1

3.2.2 详细的数据类型如下

1
2

2.2.3 具体操作:

创建student表包含id,name,birthday字段

create table student(
	id int,--整数
	name varchar(20),--字符串
	birthday date--生日,最后没有逗号
);

3.3查看表

3.3.1查看某个数据库中的所有表

SHOW TABLES;

3.3.2 查看表结构

DESC 表名;

3.3.3 查看创建表的SQL语句

SHOW CREATE TABLE 表名;

3.3.4具体操作:

  • 查看day21数据库中的所有表
use day21;
show tables;
  • 查看student表的结构
desc student;
  • 查看student的创建表SQL语句
show create table student;

3.4快速创建一个表结构相同的表

3.4.1语法

CREATE TABLE 新表名 LIKE 旧表名;

3.4.2具体操作:

  • 创建s1表,s1表结构和student表结构相同
--创建一个s1的表与student结构相同
create table s1 like student;

desc s1;

3.5 删除表

3.5.1 直接删除表

DROP TABLE 表名;

3.5.2 判断表是否存在,如果存在则删除表

DROP TABLE IF EXISTS 表名;

3.5.3 具体操作

--直接删除表s1表
drop table s1;

--判断表是否存在并删除s1表
drop table if exists s1;

3.6 修改表结构

3.6.1 添加表列ADD

ALTER TABLE 表名 ADD 列名 类型;
  • 为学生表添加一个新的字段remark,类型为varchar(20)
alter table student add remark varchar(20);

3.6.2 修改列类型MODIFY

ALTER TABLE 表名 MODIFY 列名 新的类型;
  • 将student表中的remark字段的改成varchar(100)
alter table student modify remark varchar(100);

3.6.3 修改列名CHANGE

ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
  • 将student表中的remark字段名改成intro,类型varchar(30)
alter table student change remark intro varchar(30);

3.6.4 删除列DROP

ALTER TABLE 表名 DROP 列名;
  • 删除student表中的字段intro
alter table student drop intro ;

3.6.5 修改表名

RENAME TABLE 表名 TO 新表名;
  • 将学生表student改名成student2
rename table student to student2;

3.6.6 修改字符集characterset

ALTER TABLE 表名 character set 字符集;
  • 将student2表的编码修改成gbk
alter table student2 character set gbk;

4、DML操作表中的数据

用于对表中的记录进行增删改操作

4.1插入记录

INSERT [INTO] 表名 [字段名] VALUES (字段值)

--INSERT INTO表名:表示往哪张表中添加数据
--(字段名1,字段名2,…):要给哪些字段设置值
--VALUES(值1,值2,…):设置具体的值

8.1.1插入全部字段

  • 所有的字段名都写出来
INSERT INTO 表名
    (字段名1,字段名2,字段名3)
	VALUES(1,2,3);
  • 不写字段名
INSERT INTO 表名 VALUES (1,2,3);

4.1.2 插入部分数据

INSERT INTO 表名(字段名1,字段名2,...)VALUES(1,2,...);

注:没有添加数据的字段会使用NULL

8.1.3具体操作:

  • 插入所有的列,向学生表中
insert into student (id,name,age,sex) values (1,'孙悟空',20,'男');
insert into student (id,name,age,sex) values (2,'孙悟天',16,'男');
  • 向表中插入所有字段
--插入所有列
insert into student values(3,'孙悟饭',18,'男','龟仙人洞中');
--如果只插入部分列,必须写列名
insert into student values(3,'孙悟饭',18,'男');

4.2 乱码问题的解决

  • 当我们使用DOS命令行进行SQL语句操作如有有中文会出现乱码

4.2.1insert的注意事项:

  1. 插入的数据应与字段的数据类型相同
  2. 数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
  3. 在values中列出的数据位置必须与被加入的列的排列位置相对应。在mysql中可以使用value,但不建议使用,功能与values相同。
  4. 字符和日期型数据应包含在单引号中。MySQL中也可以使用双引号做为分隔符。
  5. 不指定列或使用null,表示插入空值。

4.2.2乱码产生的原因

1

4.2.3查看MySQL内部设置的编码

  • 查看包含character开头的全局变量
show variables like 'character%';

1

4.2.4解决方案

  • 修改client、connection、results的编码为GBK,保证和DOS命令行编码保持一致
    1
  • 同时设置三项
set names gbk;

注意:退出DOS命令行就失效了,需要每次都配置

4.3 蠕虫复制

4.3.1 什么是蠕虫复制

将一张已经存在的表中的数据复制到另一张表中。

4.3.2 语法格式

  • 将表名2中的所有的列复制到表名1中
INSERT INTO 表名1 SELECT * FROM 表名2 ;
  • 只复制部分列
INSERT INTO 表名1 (1,2) SELECT1,2 FROM student;

4.3.3 具体操作

--创建student2表,student2结构和student表结构一样
drop table student2;
create table student2 like student;

--将student表中的数据添加到student2表中
insert into student2 select * from student;

--如果只想复制student表中name,age字段数据到student2表中,两张表都写出相应的列名
insert into student2 (name,age) select name,age from student;

4.4 更新表记录

UPDATE 表名 SET 列名 =[WHERE 条件表达式]

--UPDATE:需要更新的表名
--SET:修改的列值
--WHERE:符合条件的记录才更新
--你可以同时更新一个或多个字段。
--你可以在WHERE子句中指定任何条件。

4.4.1 不带条件修改数据

UPDATE表名SET字段名=;--修改所有的行

4.4.2 带条件修改数据

UPDATE 表名 SET 字段名=WHERE 字段名=;

4.4.3 具体操作

--不带条件修改数据,将所有的性别改成女
update student set sex='女';

--带条件修改数据,将id号为2的学生性别改成男
update student set sex='男' where id=2;

--一次修改多个列,把id为3的学生,年龄改成26岁,address改成北京
update student set age=26,address='北京' where id=3;

4.5 删除表记录

DELETE FROM 表名[ WHERE 条件表达式 ]
--如果没有指定WHERE子句,MySQL表中的所有记录将被删除。
--你可以在WHERE子句中指定任何条件

4.5.1 不带条件删除数据

DELETE FROM 表名;

4.5.2 带条件删除数据

DELETE FROM 表名 WHERE 字段名=;

4.5.3使用truncate删除表中所有记录

TRUNCATE TABLE 表名;

4.5.4 truncate和delete的区别

truncate 相当于删除表的结构,再创建一张表。相当于ddl
delete 只是删除表里面的记录数据,相当于dml

4.5.5 具体操作

--带条件删除数据,删除id为1的记录
delete from student where id=1;

--不带条件删除数据,删除表中的所有数据
delete from student;

5、DQL查询表中的数据

  • 查询不会对数据库中的数据进行修改.只是一种显示数据的方式
SELECT 列名 FROM 表名 [WHERE条件表达式]
--SELECT命令可以读取一行或者多行记录。
--你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
--你可以使用WHERE语句来包含任何条件。

5.1简单查询

5.1.1查询表所有行和列的数据

  • 使用*表示所有列
SELECT * FROM 表名;
  • 查询所有的学生:
select * from student;

5.1.2查询指定列

  • 查询指定列的数据,多个列之间以逗号分隔
SELECT 字段名1,字段名2,字段名3,...FROM表名;
  • 查询student表中的name和age列
select name,age from student;

5.2指定列的别名进行查询

5.2.1使用关键字

  • 使用别名的好处:显示的时候使用新的名字,并不修改表的结构。

5.2.2语法:

  • 对列指定别名
SELECT 字段名1 AS 别名,字段名2 AS 别名...FROM表名;
  • 对列和表同时指定别名
SELECT 字段名1 AS 别名,字段名2 AS 别名...FROM 表名 AS 表别名;

5.3.2 具体操作

--使用别名
select name as 姓名,age as 年龄 from student;
--表使用别名
select st.name as 姓名,age as 年龄from student as st

表使用别名的原因:用于多表查询操作

5.3清除重复值

5.3.1查询指定列并且结果不出现重复数据

SELECT DISTINCT 字段名 FROM 表名;

5.3.2具体操作:

  • 查询学生来至于哪些地方
--查询学生来至于哪些地方
select address from student;

--去掉重复的记录
select distinct address from student;

5.4 查询结果参与运算

5.4.1 某列数据和固定值运算

SELECT 列名1 +固定值 FROM 表名;

5.4.2 某列数据和其他列数据参与运算

SELECT 列名1+列名2 FROM 表名;

注意:参与运算的必须是数值类型

5.5条件查询

SELECT 字段名 FROM 表名 WHERE 条件;
  • 运算符
    1
  • 逻辑运算符
    2
  • in关键字
SELECT 字段名 FROM 表名 WHERE 字段 in(数据1,数据2...);
-- in里面的每个数据都会作为一次条件,只要满足条件的就会显示
  • 范围查询
BETWEEN1 AND2
--表示从值1到值2范围,包头又包尾
  • like关键字
--LIKE表示模糊查询
SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';
  • MySQL通配符
    1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《郑阿奇.mysql实用教材》是一本关于数据库管理系统MySQL的实用教材。该教材以郑阿奇老师的经验和教学经历为基础,系统地介绍了MySQL的基本概念、特性和使用方法。 本书共分六章,首先是MySQL的概述,介绍了数据库的基本知识以及MySQL的发展历程和特点。接着是MySQL的安装与配置,详细说明了如何在不同操作系统上安装和配置MySQL数据库,使读者能够轻松地完成环境的搭建。 第三章到第五章是本书的重点内容,分别介绍了MySQL的基本操作、高级应用和性能优化。基本操作包括数据库的创建与删除、表的创建与管理以及增删改查等操作,通过实例和案例的引导,读者能够快速掌握MySQL的基本使用方法。高级应用部分则介绍了事务、索引、视图和存储过程等高级技术,帮助读者在实际应用中更好地利用MySQL来解决问题。性能优化章节更是针对数据库的性能提出了一系列优化方案和技巧,通过对数据库结构、查询语句和服务器参数的调整,使读者能够提升系统性能,提高数据处理效率。 最后一章是MySQL的备份与恢复,简单介绍了MySQL的备份策略和常用的备份工具,以及如何在系统崩溃后恢复数据库。 该教材使用简洁明了的语言,结合大量实例和案例,使读者能够很好地理解和掌握MySQL的使用方法和技巧。同时,每章后都附有练习题和答案,方便读者巩固所学知识。 综上所述,《郑阿奇.mysql实用教材》是一本内容丰富、实用性强的MySQL教材,适合初学者和有一定基础的人士使用,是学习和应用MySQL的良好指导工具。 ### 回答2: 郑阿奇编写的《MySQL实用教材》是一本非常实用的数据库相关书籍。MySQL是一款非常流行的开源关系型数据库管理系统,而这本实用教材就是为希望学习和应用MySQL的读者而设计的。 这本教材主要包含了MySQL数据库的基本概念和操作技巧。首先,它介绍了数据库的概念、关系模型以及SQL语言的基本知识。通过这些基础知识的学习,读者可以了解到数据库的结构和操作方式。 接下来,教材详细介绍了MySQL数据库的安装和配置。这是使用MySQL的第一步,只有正确地安装和配置MySQL,才能顺利地进行后续的操作。 在数据库的实际应用方面,教材涵盖了常见的数据操作和管理技术。例如,如何创建和管理数据库、数据表以及各种数据类型的使用。同时,教材还介绍了如何添加、更新和删除数据,以及如何查询和筛选数据等常用技巧。 此外,教材还提供了一些高级技术的介绍,如索引的创建和优化、事务处理、并发控制等。这些内容对于需要进行复杂数据操作和管理的读者来说特别有帮助。 总的来说,郑阿奇的《MySQL实用教材》适合各种程度的读者,无论是初学者还是有一定经验的人。它深入浅出地介绍了MySQL的基本概念和操作技巧,帮助读者学会使用这个强大的数据库管理系统。无论是从事开发、数据分析还是其他与数据库相关的职业,这本教材都是非常实用的参考书。 ### 回答3: 《郑阿奇.mysql实用教材》是一本非常实用的MySQL数据库教材。这本教材采用了简洁明了的语言和逻辑结构,非常适合MySQL初学者使用。 首先,这本教材从MySQL的基本概念开始介绍,包括数据库的定义、表和列的概念等。然后,逐步引入了SQL语言的使用,包括常见的增删改查操作,让读者能够迅速上手操作数据库。此外,教材也介绍了MySQL的常见数据类型、约束、索引等高级概念,帮助读者更深入地理解MySQL的运作原理。 教材还特别强调了MySQL数据库的性能优化与安全性,这是很多初学者容易忽略的方面。书中详细介绍了如何优化查询语句、设计高效的表结构以及进行备份与恢复操作。此外,教材也提供了一些实例和案例,帮助读者将理论知识应用到实际项目中。 除了内容的丰富性之外,这本教材的优势还在于它的语言简练和结构清晰。作者郑阿奇用通俗易懂的语言阐述复杂的数据库概念,并且通过大量的图表和例子进行说明,使学习过程变得轻松愉快。 总之,《郑阿奇.mysql实用教材》是一本非常实用的MySQL学习材料,适合初学者使用。它全面介绍了MySQL的基本概念、SQL语言的使用以及数据库性能优化与安全,内容丰富,结构清晰。无论是希望掌握MySQL的基本操作,还是想进一步提升数据库设计与优化能力,这本教材都会是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值