mysql第一天
文章目录
1. Mysql的安装
- 安装成功后的datadir目录
datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
- 卸载完成后需要将该文件夹删除
1.2 启动MySQL服务
-
计算机->管理->服务
-
cmd->services.msc 打开
-
cmd->net start mysql (需要系统管理员权限)
- 以管理员的身份打开cmd窗口
1.3 MySQL 的登录和退出(cmd命令行窗口)
- 登录
mysql -uroot -proot
- 退出
exit
- 登录其他主机上的数据库
mysql -h(ip地址) -uroot -proot
mysql --host=ip地址 --user=root --password=root
2.SQL
- 定义:SQL(Structured Query Language):结构化查询语言
2.1 SQL的作用
- 所有关系型数据库的查询规范,不同数据库都支持
- 通用数据库操作语言,可以用于不同数据库系统
- 不同的数据库SQL有一定区别
2.2 SQL 语句类别
-
DDL(数据定义语言):例如:建库,建表
-
DML(数据操纵语言):例如:对表中的记录增删改
-
DQL(数据查询语言):例如:对表中的查询操作
-
DCL(数据控制语言):例如:对用户权限控制
-
图解
2.3 SQL的语法规范
-
语句以分号结尾
-
不区分大小写
-
3种注释
注释的语法 说明 –空格 单行注释 /**/ 多行注释 # MySQL的特有注释 -
图解
3.DDL(操作数据库,表)
3.1 操作数据库:CRUD
- C(Create):创建
- R(Retrieve):查询
- U(Update):改
- D(Delete):删
- 使用数据库
R.1: 查看所有数据库的名称
show databases;
R.2:查看某个数据库的字符集(查看某个数据库的创建语句)
show creat database mysql(数据库名称);
- 效果图
C.1 创建一个数据库
creat database db1(数据库名称);
- 效果图
C.2创建一个数据库(看数据库名是否存在,存在才创建)
create database if not exists db1(数据库名);
- 效果图
C.3 创建一个数据库以gbk为编码
CREATE DATABASE IF NOT EXISTS db4 CHARACTER SET gbk;
- 效果图
U.1 修改数据库的字符集
alter database 数据库名称 character set 字符集名称;
- 效果图
D.1 删除数据库(判断是否存在,存在再删除)
drop database if exists db4;
- 效果图
使用数据库
1. 查询当前正在使用的数据库名称
select database();
- 效果图
2. 使用数据库(进入数据库)
use 数据库名称;
- 效果图
4.DDL:操作表
R.1 查询某个数据库中所有的表的名称
show tables;
- 效果图
R.2 查询某个表中的结构
desc 表的名称;
- 效果图
C.1 创建表
create table 表名{
字段名1 字段类型,
字段名2 字段类型,
...
字段名n 字段类型
}
常用的数据类型
类型 | 语法 | 示例 |
---|---|---|
整数(int) | int | age int, |
小数(double) | double | score double(5,2),表示最大长度为5,保留2位小数 |
日期(date) | date | atime date,取值为yyyy-MM-dd |
日期(datetime) | datetime | atime datetime,取值为yyyy-MM-dd HH:mm:ss, |
时间戳类型(timestamp) | timestamp | atime timestamp,取值为yyyy-MM-dd HH:mm:ss, |
字符串类型(varchar) | varchar() | name varchar(8),8代表最大字符为8 |
注意点
- 时间戳类型如果不给这个字段赋值,或赋值为null,则默认使用当前系统时间,来自动赋值
示例
create table student(
id int,
age int,
score double(4,2),
birthday date,
insert_time timestamp
)
- 效果图
C.2 复制一个相同的表
create table stu like student;
- 效果图
D.1 删除表
drop table if exists 表名;
drop table 表名; -- 也可以
- 效果图
U.1 修改表名
alter table 表名 rename to 新的表名;
- 效果图
R.1 查看一个表的字符集
show create table 表名;
- 效果图
R.3 修改一个表的字符集
alter table 表名 character set 字符集的名称;
- 效果图
U.2 表中添加一列
alter table stu add 列名 数据类型
- 效果图
U.3 修改列的名称,数据类型
- 修改列的名称和数据类型
alter table 表名 change 列名 新列名 新数据类型;
- 效果图
- 修改列的数据类型
alter table 表名 modify 列名 新数据类型;
- 效果图
D.2 删除表中的某一列
alter table 表名 drop 列名;
- 效果图
5.DML(增删改表中记录)
5.1添加数据
insert into 表名(列名1,列名2,列名3...列名n) values(值1,值2,值3.....值n)
-- 方法二(全部赋值的简化写法)
insert into 表名 values(值1,值2,值3....值n)
- 效果图
- 效果图2
5.2 删除数据
delete from 表名 [where 条件表达式]; -- 删除满足条件的记录
delete from 表名;-- 删除表中所有数据
-- 删除表,然后在创建一个一模一样的空表
truncate table 表名;
- 删除满足条件的记录效果图
- 删除所有记录
注意点
- 第二种方法删除记录不推荐(表中多少记录,执行多少次删除操作,效率低)
- 第三种方法先删除表,再创建表,效率高
5.3 修改数据
update 表名 set 列名1=值1,列名2=值2... where 条件
- 效果图
- 如果不加任何条件,则会将表中的所有记录全部修改
6. 查询表中的记录(DQL)
- 查询语法
select
字段列表
from
表名列表
where
条件列表
group by
分组列表
having
分组之后的条件
order by
排序
limit
分页限定
6.1 基础查询
- 多个字段的查询
- 去除重复
- 计算列
- 起别名
6.2 多个字段的查询
select 字段1,字段2 from 表名;
-- 创建一个表
CREATE TABLE student3 (
id INT, -- 编号
NAME VARCHAR(20), -- 姓名
age INT, -- 年龄
sex VARCHAR(5), -- 性别
address VARCHAR(100), -- 地址
math INT, -- 数学
english INT -- 英语
);
INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (1,'马云',55,'男','
杭州',66,78),(2,'马化腾',45,'女','深圳',98,87),(3,'马景涛',55,'男','香港',56,77),(4,'柳岩
',20,'女','湖南',76,65),(5,'柳青',20,'男','湖南',86,NULL),(6,'刘德华',57,'男','香港
',99,99),(7,'马德',22,'女','香港',99,99),(8,'德玛西亚',18,'男','南京',56,65);
-- 查看表
SELECT *FROM student3;
-- 多个字段的查询
SELECT NAME,age FROM student3;
- 效果图
- 规范查询
- 通配符查询(全部的字段)
6.3 去除重复的结果集
- 有重复的结果集
- 去除重复的结果集
6.4 计算列的和
- 有null参与
- 解决于null相加为null的问题
6.5 起别名
- 给一个字段另起一个名字
select 字段名 as 别名 from 表名
- 示例
SELECT NAME AS 姓名,math AS 数学,english AS 英语,math+IFNULL(math+english,0) AS 总分 FROM student3;
- 效果图
- as可以省略,用空格代替
SELECT NAME 姓名,math 数学,english 英语,math+IFNULL(math+english,0) 总分 FROM student3;
- 效果图
7.DQL(条件查询)
- where 子句后的运算符
1.>、<、<=、>=、=、<>
2.BETWEEN…AND
3.IN(集合)
4.LIKE ‘张%’
5.IS NULL
6.and 或 &&
7.or 或 ||
8.not 或 !
7.1 查询关系表达式(>,<,=…)
- 查询年龄大于等于20的记录
- 等于20只需要写一个等号
- 不等于20可以写!=或者<>
7.2 between…and…查询
- 查询年龄20到30之间
- && 连接关系表达式
- and 连接关系表达式
- age between 20 and 30
7.3 or 或者 || 和IN(集合)
- 查询年龄18,22,25的人
7.4 is null 和 is not null
- 不能用等号判断值是否为null
- 需要使用 is null判断
- 判断不为null的记录
7.5 like(模糊查询)
-
占位符
- _ 代表单个字符
- % 代表多个字符
-
查询姓马的人的记录
- 查询第二字是‘化’的人的记录
- 查询姓名为3个字的人的记录
- 查询姓名中包含‘德’的人的记录(常用)
8.总结
8.1 数据库的操作
- 查看所有数据库
show databases;
- 创建数据库
create database 库名;
- 查看数据库创建数据的语句
show create database 库名;
- 删除数据库
drop database;
8.2 库中表的操作
- 查看所有表
show tables;
- 创建表
create table student{
id int,
name varcha(10),
age int
}
- 查看表的结构
show create table 表名;
- 查看表的组成,表格形式
desc 表名;
- 删除表
drop table 表名;
8.3 表中数据的操作
- 插入数据
insert into 表名(列名)values(值);
- 修改数据
update 表名 set 列名=值 where 条件;
- 删除数据:删除所有数据
delete from 表名 where 条件;
truncate [table] 表名;
- 查询记录
- 查询所有列
selete * from 表名;
- 查询时指定别名
selete 字段名 as 别名 from 表名; -- as可以省略
- 去除重复数据
distinct