mysql入门
数据库概述
数据库概念: 存储数据的仓库,本质是一个文件系统 数据库分类: 关系型数据和非关系型数据库 关系型数据库: 必须遵循SQL规范,强调以二维表格的形式存储数据 举例: MySQL ORACLE DB2 SqlServer SQLite 非关系型数据: NoSQL不仅仅是SQL,强调以key-value形式存储数据 举例: HBase Redis MongoDB
MySQL数据库连接
登录:
方式1: mysql -u用户名 -p密码
方式2: mysql -u用户名 -p 回车后再输入密码
方式3: mysql -h主机地址 -p 回车后再输入密码
注意: localhost默认代表本地主机,或者127.0.0.1也代表本机
登出:
方式1: exit
方式2: quit
方式3: \q
注意: 在mac/linux中使用ctrl+d/ctrl+c也能退出
SQL规范
SQL简介
SQL: 结构化查询语言, 是所有关系型数据库都要遵循的规范 大白话解释: 可以理解成sql是普通话,mysql,oracle等是方言
SQL分类
DDL: 数据定义语言:简称DDL(Data Definition Language) 作用: 用来定义数据库对象:数据库,表,列/字段等。 关键字: create,drop,alter等 DML: 数据操作语言:简称DML(Data Manipulation Language) 作用:用来对数据库中表的记录进行更新。 关键字: insert,delete,update等 DQL: 数据查询语言:简称DQL(Data Query Language) 作用:用来查询数据库中表的记录。 关键字: select,from,where等 DCL: 数据控制语言:简称DCL(Data Control Language) 用来定义数据库的访问权限和安全级别,及创建用户。
SQL通用语法
1、SQL语句可以单行或多行书写,以分号结尾。 举例: select * from 表名 where 条件; 2、可使用空格和缩进来增强语句的可读性 select * from 表名 where 条件; 3、MySQL数据库的SQL语句不区分大小写,关键字建议使用大写 例如:select * from 表名 where 条件; SELECT * FROM 表名 WHERE 条件; 大小写切换快捷键: ctrl+shift+u 4、可以使用 /**/,--,# 的方式完成注释 /**/:多行注释,在注释区域内可以随意换行 -- 和# :单行注释,写在语句开头,换行后注释截止。注意: -- 后面必须有一个空格 单行注释快捷键: ctrl+/ 多行注释快捷键: ctrl+shift+/
MySQL数据库使用
数据库增删改查操作
知识点:
创建数据库: create database [if not exists] 数据库名; 注意: 默认字符集就是utf8 删除数据库: drop database [if exists] 数据库名; 使用/切换数据库: use 数据库名; 查看所有的数据库名: show databases; 查看当前使用的数据库: select database(); 查看指定库的建库语句: show create database 数据库名;
示例:
# 一.数据库操作
# 1.创建数据库: create database [if not exists] 数据库名;
# 注意: 默认字符集就是utf8(万国码)
create database test1;
create database test2 character set utf8;
# if not exists如果库已经存在就忽略当前操作不报错,如果不存在就创建
create database if not exists test1;
create database if not exists test3;
# 2.删除数据库: drop database 数据库名;
drop database test3;
# if exists如果库存在就删除,否则忽略当前操作不报错
drop database if exists test2;
# 3.使用/切换数据库: use 数据库名;
use test1;
use test2;
# 4.查看操作
# 查看所有的数据库名: show databases;
# 查看当前使用的数据库: select database();
select database();
# 查看指定库的建库语句: show create database 数据库名;
show create database test1;
数据类型
字符串类型: varchar(字符长度) 整数类型: int 注意: 默认长度是11,如果int不够用就用bigint 浮点类型: float(python默认) 或者 double(java默认) decimal(默认是有效位数是10,小数后位数是0) 日期时间: date datetime year
库中表增删改查操作
知识点:
创建表: create table [if not exists] 表名(字段1名 字段1类型 [字段1约束] , 字段2名 字段2类型 [字段2约束] ...); 删除表: drop table [if exists] 表名; 修改表名: rename table 旧表名 to 新表名; 注意: 修改表中字段后面演示此处略 查看所有表: show tables; 查看表结构(字段信息): desc 表名; 查看指定表的建表语句: show create table 表名;
示例:
# 二.库中表的操作
# 操作表的前提是: 先有库并且使用它
# 创建库
create database day01_db;
# 使用库
use day01_db;
# 创建表
# 格式化代码快捷键: ctrl+alt+L
create table student
(
id int,
name varchar(100),
age int,
height float
);
# 创建测试表
create table if not exists test1(id int);
create table if not exists test2(id int);
# 注意: 关键字不建议作为字段名使用,如果直接使用会报错
create table if not exists test3(desc varchar(100)); # 此行执行报错
# 就想用关键字作为字段名怎么办? 手动自己条件反引号`关键字`
create table if not exists test3(`desc`varchar(100)); # 此行执行成功
# 删除表: drop table [if exists] 表名;
drop table test1;
drop table if exists test2;
# 修改表名: rename table 旧表名 to 新表名;
# 注意: 修改表中字段后面演示此处略
rename table student to stu;
# 查看所有表:
show tables;
# 查看表结构:
desc stu;
# 查看指定表的建表语句:
show create table stu;
show create table test3;
修改表中字段(增删改)
知识点:
注意: 操作字段本质就是在修改表 添加字段: alter table 表名 add [column] 字段名 字段类型 [字段约束]; 删除字段: alter table 表名 drop [column] 字段名; 修改字段名和字段类型: alter table 表名 change [column] 旧字段名 新字段名 字段类型 [字段约束]; modify只修改字段类型: alter table 表名 modify [column] 字段名 字段类型 [字段约束]; 查看字段信息: desc 表名;
示例:
# 三.表中字段操作
# 注意: 操作字段本质就是在修改表
# 添加字段: alter table 表名 add [column] 字段名 字段类型 [字段约束];
alter table stu add column weight double;
alter table stu add class varchar(100);
# 删除字段: alter table 表名 drop [column] 字段名;
alter table stu drop column weight;
alter table stu drop class;
# 修改字段名和字段类型:alter table 表名 change [column] 旧字段名 新字段名 字段类型 [字段约束];
# 演示change只修改字段名
alter table stu change column id sid int;
# 演示change只修改字段类型
alter table stu change height height double;
# 演示change同时修改字段名和字段类型
alter table stu change sid id varchar(100);
# modify只修改字段类型:alter table 表名 modify [column] 字段名 字段类型 [字段约束];
# 演示modify只能修改类型
alter table stu modify column height decimal(10,2);
# 查看字段信息: desc 表名;
desc stu;
表中记录操作(增删改)[重点]
知识点:
插入数据记录: insert into 表名 (字段名...) values (具体值...) , (具体值...); 注意1: 具体值要和前面的字段名以及顺序一一对应上 注意2: 如果要插入的是所有字段,那么字段名可以省略(默认代表所有列都要插入数据) 注意3: 如果要插入多条记录,values后多条数据使用 逗号 分隔 删除数据记录: delete from 表名 [where 条件]; 注意: 如果没有加条件就是删除所有数据 修改数据记录: update 表名 set 字段名=值 [where 条件]; 注意: 如果没有加条件就是修改对应字段的所有数据
示例:
# 四.表中记录的增删改操作
# 操作表中记录的前提:先有表并且有对应的字段
# 操作表的前提: 先有库并且使用它
# 操作库的前提: 先连接mysql服务
# 连接mysql的前提: 先安装并启动mysql服务
# 1.操作数据的准备工作
# 创建库
create database if not exists day01_db;
# 使用库
use day01_db;
# 创建表
create table product(
pid varchar(100),
pname varchar(100),
price double,
cname varchar(100)
);
# 2.插入数据记录: insert into 表名 (字段名...) values (具体值...) , (具体值...);
# 注意1: 具体值要和前面的字段名以及顺序一一对应上
insert into product(pid, pname, price, cname) values ('p001','联想',9999,'电脑');
# 注意2: 如果要插入的是所有字段,那么字段名可以省略(默认代表所有列都要插入数据)
insert into product values ('p002','小米',2999,'手机');
# 注意3: 如果要插入多条记录,values后多条数据使用 逗号 分隔
insert into product values ('p003','苹果',8888,'电脑'),('p004','华为',8999,'手机'),('p005','魅族',3999,'手机');
# 3.修改数据记录: update 表名 set 字段名=值 [where 条件];
update product set price=5999 where pname='小米';
# 注意: 如果没有加条件就是修改对应字段的所有数据
update product set price=5999; -- 报黄警告,提示选择excute执行,观察结果
# 4.删除数据记录: delete from 表名 [where 条件];
delete from product where pid='p001';
# 注意: 如果没有加条件就是删除所有数据
delete from product;-- 报黄警告,提示选择excute执行,观察结果