MySQL基础教程:知识点汇总⽂章⽬录
1. MySQL简介
数据库(DataBase) 是按照数据结构来组织、存储和管理数据的仓库。
数据库是⼀个数据的集合。
其本质是⼀个⽂件系统,以⽂件的⽅式,将数据保存在电脑上。
Mysql的数据类型:
2.MySQL操作数据库
2.1 MySQL创建数据库
-- ⽅式1 直接指定数据库名进⾏创建
CREATE DATABASE db1;
/
*
⽅式2 指定数据库名称,指定数据库的字符集
⼀般都指定为 utf8
*/
CREATE DATABASE db1 CHARACTER SET utf8;
2.2 MySQL查看、选择数据库
-- 切换数据库从db1 切换到 db1_1
USE db1_1;
-- 查看当前正在使⽤的数据库
SELECT DATABASE();
-- 查看Mysql中有哪些数据库
SHOW DATABASES;
-- 查看⼀个数据库的定义信息
SHOW CREATE DATABASE db1_1;
2.3 MySQL修改数据库
-- 将数据库db1 的字符集修改为 utf8
ALTER DATABASE db1 CHARACTER SET utf8;
-- 查看当前数据库的基本信息,发现编码已更改
SHOW CREATE DATABASE db1;
2.4 MySQL删除数据库
-- 删除某个数据库
DROP DATABASE db1_1;
3. MySQL操作数据表
3.1 MySQL创建表
格式:
CREATE TABLE表名(
字段名称1字段类型(长度),
字段名称2字段类型注意最后⼀列不要加逗号
);
⽰例:
-- 创建测试表
CREATE TABLE test1(
tid INT,
tdate DATE
);
3.2 MySQL复制表结构
-- 创建⼀个表结构与 db1 相同的 db2 表
CREATE TABLE db2 LIKE db1;
-- 查看表结构
DESC db2;
3.3 MySQL查看表
-- 查看当前数据库中的所有表名
SHOW TABLES;
-- 显⽰当前数据表的结构
DESC category;
-- 查看创建表的SQL语句
SHOW CREATE TABLE category;
3.4 MySQL删除表
-- 直接删除 db1 表
DROP TABLE db1;
-- 先判断再删除db2表
DROP TABLE IF EXISTS db2;
3.5 MySQL修改表名
-- rename table 旧表名 to 新表名;
RENAME TABLE category TO category1;
3.6 MySQL添加列
-- alter table 表名 add 字段名称字段类型
# 为分类表添加⼀个新的字段为分类描述 cdesc varchar(20)
ALTER TABLE category ADD cdesc VARCHAR(20);
3.7 MySQL修改列名称
-- alter table 表名 change 旧列名新列名类型(长度);
ALTER TABLE category CHANGE cdesc description VARCHAR(30); 3.8 MySQL删除列
-- alter table 表名 drop 列名;
ALTER TABLE category DROP description;魔方教程一步一步图解第四讲
3.9 MySQL插⼊数据
-- insert into 表名(字段名1,字段名2...) values(字段值1,字段值2...); -- ⽅式1:插⼊全部字段,将所有字段名都写出来
INSERT INTO student (sid,sname,age,sex,address)VALUES(1,'孙悟空',20,'男','花果⼭');
-- ⽅式2:插⼊全部字段,不写字段名
INSERT INTO student VALUES(2,'孙悟饭',10,'男','地球');
-- ⽅式3:插⼊指定字段的值
INSERT INTO category (cname)VALUES('⽩⾻精');
注意:
值与字段必须要对应,个数相同&数据类型相同
值的数据⼤⼩,必须在字段指定的长度范围内
varchar char date类型的值必须使⽤单引号包裹。
如果要插⼊空值,可以忽略不写,或者插⼊null
input赋值语句返回值是什么类型如果插⼊指定字段的值,必须要上写列名
3.10 MySQL更改数据
-- update 表名 set 列名 = 值 [where 条件表达式:字段名 = 值 ]
# ⽰例:
-- 不带条件修改,将所有的性别改为⼥(慎⽤!!)
UPDATE student SET sex ='⼥';
-- 带条件的修改,将sid 为3的学⽣,性别改为男
UPDATE student SET sex ='男'WHERE sid =3;
-- ⼀次修改多个列,将sid为 2 的学员,年龄改为 20,地址改为北京
UPDATE student SET age =20,address ='北京'WHERE sid =2;
3.11 MySQL删除数据
删除所有数据
-
- delete from 表名
DELETE FROM student;
指定条件 删除数据
-- delete from 表名 [where 字段名 = 值]
DELETE FROM student WHERE sid =1;
删除表中的所有数据,有两种做法
①delete from 表名; 不推荐. 有多少条记录 就执⾏多少次删除操作. 效率低
②truncate table 表名: 推荐. 先删除整张表, 然后再重新创建⼀张⼀模⼀样的表. 效率⾼当⼀个表中条数⾮常多,⼜要做删除动作的时
候,如果⽤delete会很慢,那我们可以使⽤truncate
truncate table student;
3.12 MySQL简单查询
-- select 列名 from 表名
SELECT*FROM emp;-- 使⽤ * 表⽰所有列
-- 查询emp表中的所有记录,仅显⽰id和name字段
SELECT eid,ename FROM emp;
-- 将所有的员⼯信息查询出来,并将列名改为中⽂
# 使⽤ AS关键字,为列起别名
SELECT
eid AS'编号',
ename AS'姓名',
sex AS'性别',
salary AS'薪资',
hire_date '⼊职时间',-- AS 可以省略
dept_name '部门名称'
FROMmysql入门基础教程
emp;
-- 使⽤distinct 关键字,去掉重复部门信息
SELECT DISTINCT dept_name FROM emp;
-- 运算查询
SELECT ename , salary +1000FROM emp;
3.13 MySQL条件查询
# 查询员⼯姓名为黄蓉的员⼯信息
SELECT*FROM emp WHERE ename ='黄蓉';
# 查询薪⽔价格为5000的员⼯信息
SELECT*FROM emp WHERE salary =5000;
# 查询薪⽔价格不是5000的所有员⼯信息
SELECT*FROM emp WHERE salary !=5000;
SELECT*FROM emp WHERE salary <>5000;
# 查询薪⽔价格⼤于6000元的所有员⼯信息
SELECT*FROM emp WHERE salary >6000;
# 查询薪⽔价格在5000到10000之间所有员⼯信息
SELECT*FROM emp WHERE salary BETWEEN5000AND10000;
# 查询薪⽔价格是3600或7200或者20000的所有员⼯信息
-- ⽅式1: or
SELECT*FROM emp WHERE salary =3600OR salary =7200OR salary =20000; -- ⽅式2: in() 匹配括号中指定的参数
SELECT*FROM emp WHERE salary IN(3600,7200,20000);
3.14 MySQL模糊查询
% 表⽰匹配任意多个字符串,
_ 表⽰匹配 ⼀个字符
# 查询含有'精'字的所有员⼯信息
SELECT*FROM emp WHERE ename LIKE'%精%';
# 查询以'孙'开头的所有员⼯信息
SELECT*FROM emp WHERE ename LIKE'孙%';
# 查询第⼆个字为'兔'的所有员⼯信息
SELECT*FROM emp WHERE ename LIKE'_兔%';
# 查询没有部门的员⼯信息
SELECT*FROM emp WHERE dept_name IS NULL;
-- SELECT * FROM emp WHERE dept_name = NULL;
# 查询有部门的员⼯信息
SELECT*FROM emp WHERE dept_name IS NOT NULL;
4. MySQL单表查询
4.1 MySQL单列排序
-- 默认升序排序 ASC
SELECT*FROM emp ORDER BY salary;与security都有哪些
-- 降序排序
SELECT*FROM emp ORDER BY salary DESC;
4.2 MySQL组合排序
-- 组合排序
SELECT*FROM emp ORDER BY salary DESC, eid DESC;
4.3 MySQL聚合函数
-- SELECT 聚合函数(字段名) FROM 表名
#1 查询员⼯的总数
-- 统计表中的记录条数使⽤ count()
SELECT COUNT(eid)FROM emp;-- 使⽤某⼀个字段
平价源码网SELECT COUNT(*)FROM emp;-- 使⽤ *
SELECT COUNT(1)FROM emp;-- 使⽤ 1,与 * 效果⼀样
-
- 下⾯这条SQL 得到的总条数不准确,因为count函数忽略了空值
-- 所以使⽤时注意不要使⽤带有null的列进⾏统计
SELECT COUNT(dept_name)FROM emp;
#2 查看员⼯总薪⽔、最⾼薪⽔、最⼩薪⽔、薪⽔的平均值
-- sum函数求和, max函数求最⼤, min函数求最⼩, avg函数求平均值SELECT
SUM(salary)AS'总薪⽔',
MAX(salary)AS'最⾼薪⽔',
MIN(salary)AS'最低薪⽔',
AVG(salary)AS'平均薪⽔'
eclipse游戏FROM emp;
#3 查询薪⽔⼤于4000员⼯的个数
SELECT COUNT(*)FROM emp WHERE salary >4000;
#4 查询部门为'教学部'的所有员⼯的个数
SELECT COUNT(*)FROM emp WHERE dept_name ='教学部'; #5 查询部门为'市场部'所有员⼯的平均薪⽔
SELECT
AVG(salary)AS'市场部平均薪资'
FROM emp
WHERE dept_name ='市场部';

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。