Mysql入门学习教程

目录

1、管理数据库

1.1 查看所有数据库

1.2 创建数据库

1.3 删除数据库

1.4 修改数据库

2、管理表

2.1 查询所有表

2.2 创建表

2.3 删除表

2.4 修改表

3、管理数据

4、查询数据(重点)

4.1 查询所有列

4.2 查询指定列

4.3 查询时指定别名

4.4 合并列查询

4.5 查询时添加常量列

4.6 查询去除重复数据

4.7 条件查询

4.8 聚合查询

4.9 分页查询

4.10 分组筛选


1、管理数据库

1.1 查看所有数据库

mysql> show databases;   --分号结束。sql语句就会发送给mysql服务器端执行

+--------------------+

| Database           |

+--------------------+

| information_schema |      --mysql元数据数据库。

| mysql              |    --mysql配置数据库。其中user表用于管理mysql用户和密码、权限信息。

| performance_schema |     --mysql性能监控信息数据库。

| test               |     --测试数据库。

+--------------------+

4 rows in set (0.00 sec)

mysql>

1.2 创建数据库

1)创建数据库,并制定默认字符集

mysql> create database day16

    -> default character set utf8;

Query OK, 1 row affected (0.00 sec)

 查看数据库的状态(默认字符串):show create database day15;

2)创建数据库,同时指定默认字符集,以及字符集的默认校验规则。                      

mysql> create database day15

    -> default character set utf8

    -> collate utf8_general_ci;     --指定默认的校验规则

Query OK, 1 row affected (0.00 sec)

校验规则:一个字符集可以同时存在多种校验规则。

        a)使用A校验规则:取字符的ascii码值,进行比较大小

                 a  <  b

                 97  98

        b)使用B校验规则:取字符的ascii码值的负数,进行比较大小

                 a  >  b

                 -97  -98

查看常用的字符串集的校验规则:show character set;

1.3 删除数据库

mysql> drop database day15;

Query OK, 0 rows affected (0.00 sec)

1.4 修改数据库

修改数据库默认字符集

mysql> alter database day15 default character set gbk;

Query OK, 1 row affected (0.00 sec)

2、管理表

2.1 查询所有表

mysql> use day15;   --选择数据库

Database changed

mysql> show tables;  --查看数据库中的所有表

2.2 创建表

mysql> create table student(

    -> id int,    -字段:字段名称  字段类型

    -> name varchar(20),

    -> age int

    -> );

查看一个表结构:

        show creata table student;   以sql格式返回

        desc student;  以表格格式返回

2.3 删除表

mysql> drop table student;

Query OK, 0 rows affected (0.01 sec)

2.4 修改表

1)添加字段

mysql> alter table student add column gender varchar(2);

Query OK, 0 rows affected (0.04 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table student add a int,add b int; 多个操作

2)修改字段类型

mysql> alter table student modify column remark varchar(100);

Query OK, 0 rows affected (0.03 sec)

Records: 0  Duplicates: 0  Warnings: 0

3)修改字段名称

mysql> alter table student change column remark remark2 varchar(100)

Query OK, 0 rows affected (0.05 sec)

Records: 0  Duplicates: 0  Warnings: 0

4)删除字段

mysql> alter table student drop column a,drop column b;

Query OK, 0 rows affected (0.04 sec)

Records: 0  Duplicates: 0  Warnings: 0

5)修改表名

                                  mysql> alter table student rename to student2;

Query OK, 0 rows affected (0.01 sec)

3、管理数据

-- *************** 一、 数据增删修改操作 ********************---------

-- 1.1 查看表的数据

SELECT * FROM student;

-- 1.2 插入数据

-- 插入所有列(所有列的值都要按顺序依次插入)

INSERT INTO student VALUES(1,'eric',20,'广州人','男');

INSERT INTO student VALUES(2,'rose',25,'佛山人','女');

-- 插入部分列(列的数据和值的顺序和数量一定保持一致!)

INSERT INTO student(id,NAME,age,remark2) VALUES(3,'jacky',27,'佛山人');

-- 1.3 修改数据

-- 修改所有(用的很少)

UPDATE student SET gender='男';

-- 修改某个某些条件的数据(用的较多)

UPDATE student SET gender='' WHERE id=2;

-- 修改多个列(SET 列名=值,列名=值...)

UPDATE student SET age=28,remark2='韶关人' WHERE id=2;

-- 1.4 删除数据

-- 删除表的所有数据(用的较少)

-- 注意:

   -- 1)只能删除表中的数据,不能影响表中的自增长约束

   -- 2)使用delete删除的数据,通过事务可以回滚。

   -- 3)后面带条件

DELETE FROM student;

-- 删除部分

DELETE FROM student WHERE id=3;

-- 删除所有数据

-- 注意:

   -- 1)既能删除表的数据,也能够把表的子增长约束置为0.

   -- 2)使用truncate删除的数据,不能回滚!

   -- 3)后面不能带条件

TRUNCATE TABLE student;

4、查询数据(重点)

4.1 查询所有列

-- 2.1 查询所有列

SELECT * FROM student;

4.2 查询指定列

-- 2.2 查询指定列(多个列之间以逗号分隔)

SELECT NAME,gender FROM student;

4.3 查询时指定别名

-- 2.3 查询时给列指定别名(AS)

SELECT NAME AS '姓名',gender AS '性别' FROM student;

-- AS可以省略

SELECT NAME '姓名',gender '性别' FROM student;

4.4 合并列查询

-- 2.5 合并列查询

-- 添加servet,jsp成绩列

ALTER TABLE student ADD servlet INT,ADD jsp INT;

SELECT * FROM student;

UPDATE student SET servlet=86,jsp=75 WHERE id=1;

UPDATE student SET servlet=90,jsp=65 WHERE id=2;

UPDATE student SET servlet=78,jsp=50 WHERE id=3;

UPDATE student SET servlet=85,jsp=80 WHERE id=4;

-- 需求: 查询每个学生的servlet和jsp的总成绩

-- 注意: 必须是数值类型

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

-- 注意,和数值以外合并没有意义

SELECT NAME '姓名',(gender+jsp)  FROM student;

4.5 查询时添加常量列

-- 2.4 查询时添加常量列

-- 需要: 在查询学生表时都带上一个班级列,内容为"java就业班"

SELECT NAME '姓名',gender '性别',age '年龄','java就业班' AS '班级' FROM student;

4.6 查询去除重复数据

-- 2.6 查询去除重复数据

-- 需求: 统计学生都来自于哪里

SELECT DISTINCT remark2 FROM student;

-- 这种语法也可以

SELECT DISTINCT(remark2) FROM student;

4.7 条件查询

-- 2.7 条件查询(where)

SELECT * FROM student;

-- 1) 逻辑条件: and   or

-- 需求: 查询id值为3,且性别为男的学生(交集:两个条件同时满足)

SELECT * FROM student WHERE id=3 AND gender='';

-- 需求:查询id为3,或性别为男的学生(并集: 两个条件其中一个满足)

SELECT * FROM student WHERE id=3 OR gender='';

-- 2)比较条件: >  <  >=  <=  = between and

-- 需求: 查询servlet分数大于80分的学生

SELECT * FROM student WHERE servlet>80;

-- 需求:查询jsp分数小于或等于80分的学生

SELECT * FROM student WHERE jsp<=80;

SELECT * FROM student WHERE jsp<80 OR jsp=80;

-- 需求: 查询servlet成绩大于等于80,且小于等于88的学生

SELECT * FROM student WHERE servlet>=80 AND servlet<=88;

-- 等价于上面

SELECT * FROM student WHERE servlet BETWEEN 80 AND 88; -- (包前包后)

-- 3判空条件:  =''  is null  <>''  is not null

UPDATE student SET remark2="" WHERE id=1;

UPDATE student SET remark2=NULL WHERE id=4;

-- 需求: 查询remark字段为空的学生(包含null,也包含字符串)

-- null 和 空字符串的区别:

-- null 没有数据。 判断null is null,判断不为null is not null

-- 空字符: 有数据,数据就是空字符串。判断空字符: ='' 判断不为空字符串: <>''

SELECT * FROM student WHERE remark2 IS NULL;

SELECT * FROM student WHERE remark2='';

SELECT * FROM student WHERE remark2 IS NULL OR remark2='';

-- 需求:查询remark字段不为空的学生

SELECT * FROM student WHERE remark2 IS NOT NULL AND remark2<>'';

-- 4) 模糊条件: like

-- like后面跟上符合

-- %: 表示任意多个字符(0-多个)

-- _: 表示一个字符

-- 需求: 查询姓张的学生

SELECT * FROM student WHERE NAME LIKE '%';

-- 需求: 查询姓名中包含'张'字的学生

SELECT * FROM student WHERE NAME LIKE '%%';

-- 需求: 查询姓张,且姓名只有两个字的学生

SELECT * FROM student WHERE NAME LIKE '__';

4.8 聚合查询

-- 2.8 聚合查询

SELECT * FROM student;

DELETE FROM student WHERE id=5;

-- 需求: 查询所有学生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;

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

SELECT COUNT(*) FROM student;

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

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

SELECT COUNT(remark2) FROM student;

4.9 分页查询

-- 2.11 分组查询

-- 需求: 查询男女的数量各自多少

-- 预期结果:

-- 男   3

-- 女   2

-- 1) 对性别进行分组(group by) 2)在分组基础上进行聚合函数总计

SELECT gender,COUNT(*) '人数' FROM student GROUP BY gender;

4.10 分组筛选

-- 2.12 分组筛选(group by + having(条件))

-- 需求: 查询人数大于2的性别

-- 1)分组   2)统计 3)条件

SELECT gender,COUNT(*) '人数' FROM student GROUP BY gender HAVING COUNT(*)>2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

棉花糖老丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值