MySQL基础入门

本文详细介绍了MySQL数据库的安装步骤及基本配置方法,并提供了创建、查询、修改数据库和数据表的具体操作示例。

下载

下载地址:https://dev.mysql.com/downloads/mysql/

1
我们选择64位的下载

使用前的配置

下载后先解压

1.my.ini

在解压后的文件夹下新建一个my.ini文本文件

2

然后打开my.ini文件,配置信息如下:

[mysql]  
# 设置mysql客户端默认字符集  
default-character-set=utf8   

[mysqld]  
#设置3306端口  
port = 3306   

# 设置mysql的安装目录  
basedir=F:\MySQL\mysql8

# 设置mysql数据库的数据的存放目录  
datadir=F:\MySQL\mysql8\data

# 允许最大连接数  
max_connections=200 

 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=20

# 服务端使用的字符集默认为8比特编码的latin1字符集  
character-set-server=utf8  

# 创建新表时将使用的默认存储引擎  
default-storage-engine=INNODB

# 有新的配置信息继续在这里添加
bind-address=127.0.0.1

2.启动MySQL

打开命令行,进入文件夹的bin目录,然后输入:

mysqld install

3
出现Install/Remove of the Service Denied!

查了一下一下,是权限问题,进入系统盘找到C:\Windows\System32\cmd.exe右键以管理员身份运行 再次进入相应目录执行
mysqld -install 显示Service successfully installed
4

进入到mysql的bin目录下,输入命令初始化data文件夹(很重要)

  mysqld --initialize

然后启动服务:

net start mysql

5

3.配置环境变量
复制bin目录 的地址,添加到path变量:
6

进入MySQL

打开data文件夹中的LAPTOP-K2HGBEO5.err文件,复制初始密码。然后在命令行输入:mysql -u root -p
然后复制上初始密码:
7
然后更改密码:输入 alter user user() identified by ‘new password’
8
这样,使用之前的基本配置工作就完成了。

MySQL的操作语句和方法
(首先,固定语句不区分大小写)

1.链接数据库
上文已经展示了,在启动数据库后输入:

mysql -u root -p

然后输入密码即可。

2.创建数据库

 create database 数据库名;

实例1:最简单的创建 MySQL 数据库的语句

在 MySQL 中创建一个名为 test_db 的数据库,输入的 SQL 语句与执行结果如下:
9
补充说明:为防止字符混乱的情况发生,MySQL 有时需要在创建数据库时明确指定字符集;在中国大陆地区,常用的字符集有 utf8 和 gbk:
---------> utf8 能够存储全球的所有字符,在任何国家都可以使用,默认的校对规则为 utf8_general_ci,对于中文可以使用 utf8_general_ci。
---------> gbk 只能存储汉语涉及到的字符,不具有全球通用性,默认的校对规则为 gbk_chinese_ci。

所以如果在创建数据库时要指定字符集和校对规则,语句如下:

   create database test_db_char;
   default character set utf8;
   default collate utf8_chinese_ci;

3.查看数据库

show databases;

10

//使用 LIKE 从句,查看与 test_db 完全匹配的数据库
show databases like  'test_db';
// 使用 LIKE 从句,查看名字中包含 test 的数据库
show databases like  '%test%';
使用 LIKE 从句,查看名字以 db 开头的数据库
show databases like 'db%';
 使用 LIKE 从句,查看名字以 db 结尾的数据库
 show databases like '%db';

4.选择数据库

use 数据库名;

5.删除数据库

drop database 数据库名;

11

数据表的相关基本操作

1.创建数据表

create table  <表名> ([表定义选项])[表选项][分区选项];

其中,[表定义选项]的格式为:

<列名1> <类型1> [,…] <列名n> <类型n>

举例:
12

创建完表可以查询表的结构:

desc 表名;

a

2.插入数据

  1. INSERT…VALUES语句
insert into 表名 (列名1,列名2,列名3..............)
                 values  (值1,值2,值3.........);

insert into 表名   values  (值1,值2,值3.........);

举例:
13

3.查询数据表
基本的查询:

select * from 表名;
select field1, field2...from 表名;

14

查询时指定别名的语句
(临时的)

SELECT ,字段 AS '别名' FROM 表名;

查询时添加常量列
(临时使用的列)
举例:

select id '编号', name '姓名',age '年龄','java班' as '班级' from student;

23

查询时合并列
举例:

SELECT NAME '姓名',(servlet+jsp) '总成绩'  FROM student;

24
注意,只有数据类型是数值时才有意义。

查询去除重复数据
举例:统计学生来自哪里(不重复)

SELECT DISTINCT address FROM student;

25

单一条件的查询语句

假设有如下数据表:
0
在表 employee 中查询薪水为 110的员工的姓名,输入的 SQL 语句和行结果如下所示

select 姓名,薪水 from employee
 where 薪水=8500;

21

多条件的查询语句

在表 employee 中查询薪水小于120且年龄小于26的员工的姓名,输入的 SQL 语句和行结果如下所示

 select * from employee
 where 薪水<120 and 年龄<26;

22

如果是:

 select * from employee
 where 薪水<120 or 年龄<26;

则两个判定条件满足一个即可。

还有一种特别情况是判空条件:

注意null 和 空字符串的区别(<>是不等号)
-null: 没有数据。 判断null: is null,判断不为null: is not null

  • 空字符: 有数据,数据就是空字符串。判断空字符: =’’; 判断不为空字符串: <>’’;

聚合查询
现有表如下:
26

– 需求: 查询所有学生servlet的总分 (SUM: 求和函数)

SELECT SUM(servlet) FROM student;

– 需求: 查询所有学生servlet的平均分(AVG; 平均函数)

SELECT AVG(servlet) FROM student;

– 需求:查询最高的servlet分数(MAX:最大值函数)

SELECT MAX(servlet) FROM student;

– 需求:查询最低的servlet分数(MIN:最小值函数)

SELECT MIN(servlet) FROM student;

27
28

需求: 一共几个学生(COUNT: 统计数量函数)

SELECT COUNT(*) FROM student;
SELECT COUNT(id) FROM student; -- 效率会比count(*)效率稍高

(注意: 聚合函数,会排除null值的数据)

分页查询

需求: 查询第一条和第二条数据
(注意:格式为:limit 起始行数,查询的总行数
且起始行数从0开始)

select * from student limit 0,2;

结论-----分页查询当前页数据的sql: select * from student limit (当前页码-1)*每页显示条数,每页显示条数;

查询后排序

– desc: 降序。数值从大到小,字母z-a
– asc: 升序。数值从小到大,字母a-z
– 默认情况下,按照插入的顺序排序

– 需求:按照id的升序排序

SELECT * FROM student ORDER BY id ASC;

– 需求: 按照servlet成绩降序排序

SELECT * FROM student ORDER BY servlet DESC;

29

多个排序条件的情况:先按照前面的条件排序,当出现重复记录,再按照后面的条件排序。

– 需求: 按照age升序,按照servlet成绩升序排序

SELECT * FROM student ORDER BY age ASC,servlet ASC;

分组查询(group by)

– 需求: 查询每个地区有多少人
方法:1)对地区进行分组 2)在分组的基础可以进行统计,统计的是每组的数据

SELECT address,COUNT(*) FROM student GROUP BY address;

30

–需求: 统计男女的人数

SELECT gender,COUNT(*) FROM student  WHERE gender IS NOT NULL AND gender<>'' GROUP BY gender;

分组后筛选(having)

需求:分组查询后筛选哪些地区的人数大于2个的地区

SELECT address,COUNT(*) FROM student GROUP BY address HAVING COUNT(*)>2 ;

4.删除数据表

drop table 表名;

5.修改数据表

基本的语法

常用的语法格式如下:

ALTER TABLE 表名  [修改选项]

修改选项的语法格式如下:

{ ADD COLUMN <列名> <类型>
| CHANGE COLUMN <旧列名> <新列名> <新列类型>
| ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
| MODIFY COLUMN <列名> <类型>
| DROP COLUMN <列名>
| RENAME TO <新表名> }

总结

修改表:
(1)修改时添加字段:alter table 表名 add 字段 字段类型 ;
(2)修改字段类型的大小:alter table 表名 modify 表字段 字段类型;
(3)修改表名: alter table 表名 rename to 新表名;
(4)修改列名 : alter table 表名 change 字段 新字段 新字段类型;

添加字段及修改表中数据的举例

alter table 表名
    -> add 字段名 字段类型 after 要跟随的字段名;

比如,添加age列:

15

给age列赋值:

 update 表名
    -> set age=赋的值;

16

把第四行的(姓名,性别,薪水赋予新的值):

先将狗娃,静静,阿强的年龄分别改为25,26,27
17

然后把第四行的姓名,性别,薪水赋值:


 update employee
 set 姓名="乐乐",性别="男",薪水=110
 where age=24;

18

修改数据类型

现在薪水列的数据类型范围过小,,我们改一下:

alter table employee
 modify 薪水 int;

这样,我们就可以把薪水改成较大的整数值了,比如将老李的薪水改为8500:

19

修改字段名称


alter table employee
change age 年龄 char(20);

将age改为了年龄:
20
6.删除数据

删除字段名称

alter table 表名 drop column 字段;

删除具体的某项数据

(注意:用delete删除数据只能删除表中的数据,不能影响表中的自增长约束;另外,使用delete删除的数据,通过事务可以回滚。)

DELETE FROM 表名 WHERE 条件;

(注意:用truncate既能删除表的数据,也能够把表的自增长约束置为0;另外,使用truncate删除的数据不能回滚;其次,truncate与delete不同,后面不能带条件)

TRUNCATE TABLE 表名;

7.字段类型的介绍与比较

– char(20) vs varchar(20)
– char(20): 固定长度的字符串。不管实际存储的数据的大小,一定占用20个字符空间
– varchar(20): 可变长度的字符串。占用的空间大小就是实际存储的数据大小。

– int vs int(4)
– int: 默认最多11位,长度根据实际存储的数值的长度
– int(4): 固定的数组长度

– date vs datetime vs timestamp
– date: 日期
– datetime: 日期+时间
– timestamp: 时间戳,用于记录当前数据的插入或更新的时间

8.小结

管理数据库:
增: create database 数据库名 default character set 字符集;
修: alter database 数据库名 default character set 新的字符集;
删: drop database 数据库名;
查: show databases;
管理表:
增: create table 表名(字段名1 字段类型,字段名2 字段类型…);
修:
增加字段: alter table 表名 add column 字段名 字段类型;
修改字段类型: alter table 表名 modify column 字段名 新的字 段类型;
修改字段名: alter table 表名 change column 旧字段名 新的字段名 字段类型;
修改表名: alter table 表名 rename to 新表名;
删: drop table 表名;
查: show tables; desc 表名;
管理数据:
增: insert into 表名(字段名1,字段名2…) values(值1,值2…);
修: update 表名 set 字段名1=值1,字段名2=值2… where 条件;
删: delete from 表名 where 条件;
truncate table 表名;
查: (12中查询)
a)所有字段:select * from 表名;
b)指定字段: select 字段名1,字段名2 from 表名;
c)指定别名: select 字段名1 as 别名1,字段名2 as 别名2 from 表名;
d)添加常量列: select 常量值 as 别名 from 表名;
e)合并列: select (字段名1+字段名2+…) as 别名 from 表名;
f)去除重复: select distinct 字段名 from 表名;
g)条件查询:
逻辑条件: where 条件1 and/or 条件2;
比较条件: where 字段名 >/>=/</<=/=/<> 值
where 字段名 between 值1 and 值2;
判空条件:
null; where 字段名 is null/is not null;
空字符串: where 字段名=’’/<>’’
模糊条件: where 字段名 like 值
%: 代表任意个字符
_: 代表一个字符
h)聚合查询:
max(): 最大值
min():最小值
avg():平均值
count(): 统计数量
i)分页查询:
limit 起始行,查询行数
j)排序:
order by 字段名 asc/desc
asc: 升序
desc: 降序
h)分组查询:
group by 字段名
k)分组后筛选:
group by 字段名 having 条件;

sql语句分类:
1)数据定义语句(DDL):
create/alter/drop
2)数据操作语句(DML)
insert/update/delete/truncate
3)数据查询语句(DQL)
select/show

经过初步学习,我们可以了解到MySQL不仅功能全面,综合化,而且追求最大并发效率。当我们要满足多用户同时访问,或者是网站访问量比较大时,使用MYSQL是明智的选择。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值