Mysql快速入门
目录
CRUD:C:create 增加R:Retrieve 获取/查询U:update 更新D:delete 删除 (发送sql语句)client------------------>server
语句分类: 流程;新建数据库--》新建表---》插入数据/更新数据/删除数据(以下语句服务与这一流程)
mysql的核心:存储引擎
{
innoDB:1.事务处理、回滚、崩溃修复能力和多版本并发控制
2.自增长auto_increment
3.外键(foreign key)
优点:有良好的事物处理,崩溃修复能力和并发控制
缺点:读写效率较差,占用的数据空间相对较大。
MyISAM:优势在于占用空间小,处理速度快。缺点在于不支持事物的完整性和并发性。
Memory: 1.数据全部放在内存中
(很少用到) 2.哈希索引
--------------------------------------------------------------------------------
特性 | InnoDB | MyISAM | Memory
--------------------------------------------------------------------------------
事务安全| 支持 | 无 | 无
--------------------------------------------------------------------------------
存储限制| 64TB | 有 | 有
--------------------------------------------------------------------------------
}
Mysql 的数据类型:
一、数值型
1.整型(int(4byte),tinyint(1byte),smallint(2byte),bigint(8byte))
2.浮点型(float(M,D),double(M,D)) M表示有效位数,D表示小数位
二、字符串类型
1.普通类型(char(M)M是固定长度,整体匹配查询效率高,varchar(M)它的长度是可变的,单个字符匹配,节省空间) M表是字段的长度
2.可变类型(text,blob)
3.特殊类型(set,enum)
三、时间日期类型(date(YYYY(年)-MM(月)-DD(日)),time(HH(小时):MM(分钟):SS(秒)),datetime(YYYY-MM-DD HH:MM:SS),timestamp(YYYYMMDDHHMMSS),year(M))
Mysql语句说明:
CRUD:
C:create 增加
R:Retrieve 获取/查询
U:update 更新
D:delete 删除
(发送sql语句)
client------------------>server
语句分类:
流程;新建数据库--》新建表---》插入数据/更新数据/删除数据(以下语句服务与这一流程)
DDL语句(数据定义语言)
创建数据库
创建表
修改表结构
结构性的操作,不涉及具体存储的数据
DML语句 (数据搜索语言)
针对table数据表中数据的增删改,
DQL语句 (数据查询语言)
针对table数据表中数据的查询操作
DCL语句 (数据控制语言)--了解
事物的提交/回滚等
一、1.sql通用语句
sql语句可以单行或者多行书写,以分号结尾( ;)
可以使用空格和缩进来增加语句的可读性
MySql中使用sql不区分大小写,一般关键字大写,数据库名 表名 列名 小写
2.注释方式
-----------------------------------------------------------
注释语法 | 说明
-----------------------------------------------------------
--空格 | 单行注释
-----------------------------------------------------------
/**/ | 多行注释
-----------------------------------------------------------
# | Mysql特有的单行注释
3.DDL操作数据库
1.创建数据库
命令 说明
create database 数据库名; 创建指定名称的数据库。
create database 数据库名 character set 字符 创建指定名称的数据库,并且指定字符集(一般都指定utf8)
集;
2.查看/选择数据库
命令 说明
use 数据库名; 选择指定名称的数据库。
select database(); 查看mysql中有哪些数据库
show databases; 查看数据库定义信息
例:show create database 数据库名; 查看创建数据库的信息
3.修改数据库
命令 说明
alter database 数据库名 character set 字符集;数据库的字符集修改操作
例:alter database db1 character set utf8;
4.删除数据库
命令 说明
drop database 数据库名; 从Mysql中永久的删除某个数据库
例:drop database db1;
4.DDL操作数据表
0.常用的数据类型
类型 描述
int 整型
double 浮点型
varchar 字符串型
date 日期类型(年月日)
1.创建表
语法格式:
create table 表名(
字段名称1 字段长度,
字段名称2 字段长度,
........ 最后一个字段不用“,”结束
);
-- 复制表结构创建新表(只复制表结构)
CREATE TABLE 待复制表明 LIKE 被复制表名;
2.查看表
语法格式
查看表结构
desc 表名;
查看当前数据库中所有的表
SHOW TABLES;
查看创建表的sql语句
SHOW CREATE TABLE 表名;
3.删除表
语法格式
drop TABLES 表名;
drop TABLES if exists 表名;先判断表是否存在再删除
4.修改表(ADD,MODIFY,change,drop)
#重命名表名
rename table category to category1;
#向表中添加列,关键字 ADD
alter table category1 add cdsec varchar(20);
#修改表中列的数据类型或长度,关键字 modify
alter table category1 MODIFY cdsec int;
#对分类表的cdsec 字段进行修改,更换为description varchar(30)
alter table category1 change cdsec description varchar(30);
#删除分类表中descrption这列
alter table category1 drop description;
5,DML操作数据库
1.插入数据:
插入格式:
方式一,插入数据时,把所有字段名称全部显示写出
insert into 表名(字段名)values (字段值);
方式二,插入全部字段不再写字段名
insert into 表名 values (字段值);
方式三,插入指定字段值
insert into 表名(指定字段) values (指定字段值);
2.更改数据
更改格式:
方式一
update 表名 set 字段1 字段值1 where 字段2 字段值2;//将行中有字段2为字段值2中的字段1的值改为字段值1
方式二
update 表名 set 字段 字段值 ;//把字段的值全部改为指定字段值
方式三 可以同时修改多个列
update 表名 set 字段1 字段值1 ,字段2 字段值2;//把字段的值全部改为指定字段值
3.删除数据
删除格式;
方式一:删除表中全部数据
delete from 表名;
方式二:删除表中自定条件的数据
delete from 表名 where 字段 = 字段值;
(整表删除时,delete删除效率低,表中有多少数据就执行多少次,不推荐使用)
高效删除格式:
truncate table 表名;(先删除整张表,然后再重新创建一摸一样的表)
6.DQL操作数据库
1.准备数据
~~~~~~~~
2.简单查询
查询格式:
#查询emp表中所有数据
select * from emp;
#查询部分字段
select enaem as '员工姓名',salary as '工资' from emp;
select enaem '员工姓名',salary '工资' from emp;
#去重操作 查看有多少部门
select distinct dept_name from emp;
#运算查询
select enaem,salary+1000 from emp;
3.条件查询
查询格式:
select 列名 from 表名 where 条件
3.1运算符
1.比较运算符
>(大于) <(小于) <=(小于等于) >=(大于等于) =(等于) !=(不等于)
BETWEEN...AND....-------------(显示在某一区间的值)例:where 字段名 between 数值 and 数值
IN(集合)------------------------集合表示多个值,使用逗号分隔,例:where 字段名 in(值1,值2....)
LIKE'%赵%'---------------------模糊查询 ,例:where 字段名 like'%字符%'(包含字符的)/'字符%'(以字符开头的)/'%字符'(以字符结尾的)
模糊查询通配符(% 表示匹配任意多个字符串 - 表示匹配一个字符)
#查询含有’精'的所有员工信息
select * from emp where enaem like '%精%';
#查询第二个字为'兔'的所有员工信息
select * from emp where enaem like '_兔%';
IS NULL------------------------查询某一列为NULL的值,注:不能写 = NULL
2.逻辑运算符
and &&-----------------------多个条件同时成立
or ||----------------------------多个条件任意成立
Not----------------------------不成立,取反