
目录m结束符库1、创建数据库2、查看数据库3、选择进入数据库4、修改数据库5、删除数据库表一、数据类型1、数值类型2、日期时间型3、字符串类型二、表的创建1、表结构的设计2、创建表3、查看表4、表修改1、修改表名2、修改字段名3、修改字段类型4、change5、增加字段6、删除字段5、删除表三、表的约束1、非空约束a、创建数据表时b、修改数据表时c、删除非空约束2、唯一约束3、主键约束a、创建表时b、修改表时4、默认值约束四、自动增长要求数据操作一、插入数据---insert1、插入单条数据验证数据是否插入插入部分数据插入多条数据Insert into table_name set 字段名更新数据---update删除数据---delete例子单表查询一、SELECT语句二、简单查询1、列出所有字段名称进行查询2、使用通配符*进行查询3、查询指定字段4、查询去重数据三、条件查询一、常见比较运算符1、例子2、包含运算符in3、逻辑运算符 or4、is null5、is not null6、like7、转义字符二、逻辑运算符1、not2、and 条件同时满足3、or4、between 初值 and 结束值5、优先级四、高级查询一、聚合函数1、count----计数2、sum() -------求和3、avg ----平均值嵌套函数4、max5、min(二)、分组查询(三)、排序查询(四)、限量查询(五)、内置函数1、concat函数 ----链接函数(六)、设置别名多表查询一、多表查询一、交叉连接查询二、内连接补充自然连接自连接三、外连接复合条件连接查询二、子查询一、in关键字结合子查询二、exists关键字(五)、比较运算符三、外键约束索引一、类型1、普通索引2、唯一性索引3、主键索引4、全文索引5、空间索引视图事务特性列---投影运算行------条件运算m结束符\G -----纵向结构显示且为结束符\g “”库1、创建数据库create database database_name2、查看数据库show databases; -----查看所有库 show create database database_name; ------查看指定库的细节 select database(); ------查看当前选择数据库前提是需要先进入该数据库3、选择进入数据库use database_name;4、修改数据库alter database database_name;5、删除数据库drop database database_name;表一、数据类型1、数值类型整数类型浮点数类型decimal(5,2) 5是数值总长度小数位为2定点数类型BIT类型2、日期时间型date3、字符串类型char 固定 varchar 可变长 enum 枚举型二、表的创建1、表结构的设计字段名 数据类型 是否为空 默认值 主键约束 唯一性约束 注释字端名 是否为外键 字端类型的属性2、创建表create table table_name ();()中间填字段名中间用“”分隔开------字段名 数据类型 primary key ----主键 not null -----不为空 comment ----注释 engine -----存储引擎 default --默认值 engineMYISAM default3、查看表desc table_name; ------查看指定的表基本结构show tables; ----查看所有表show create table table_name ; -----查看创建表的细节4、表修改1、修改表名alter table table_name rename to table_new_name; ------修改表名2、修改字段名alter table table_name rename column local_name_old to local_name_new; -----修改字段名3、修改字段类型alter table table_name modify dnsme char(16); --------修改字段类型4、changealter table table_name change local_name_old local_name_new char(20) first; -------修改表名字段类型字段位置必须要带上旧、新表名5、增加字段alter table table_name add id int first; alter table table_name add id int after id ; ------增加字段默认增加在最后first添加在第一行after后要加上字段表示添加在其之后6、删除字段alter table table_name drop id; -----删除字段验证------用desc5、删除表drop table table_name; -----删除表三、表的约束常见约束非空唯一主键1、非空约束NOT NULLa、创建数据表时在字段的数据类型后加“NOT NULL”CREATE TABLE tb_dept01( deptno INT, dname VARCHAR(14), local VARCHAR(13) NOT NULL );b、修改数据表时在ALTER TABLE语句中通过MODIFY或CHANGE重新定义字段的方式添加非空约束。ALTER TABLE tb_dept01 MODIFY dname VARCHAR(14) NOT NULL;c、删除非空约束ALTER TABLE tb_dept01 CHANGE COLUMN dname dname varchar(14);2、唯一约束一个字段也可以做成表级约束放到最下方3、主键约束主键约束只能做一个每个表中PRIMARY KEYa、创建表时CREATE TABLE tb_dept02( id INT PRIMARY KEY, dname VARCHAR(14) UNIQUE, local VARCHAR(13) NOT NULL );b、修改表时mysql ALTER TABLE tb_dept01 ADD PRIMARY KEY(deptno); ------添加ALTER TABLE tb_dept01 DROP PRIMARY KEY;-----删除4、默认值约束字段名 数据类型 default 默认值a、创建表时CREATE TABLE tb_emp02( id INT PRIMARY KEY, ename VARCHAR(16) UNIQUE, sal DECIMAL(7,2), status VARCHAR(13) DEFAULT 1 );b、修改表时ALTER TABLE tb_emp02 MODIFY sal DECIMAL(7,2) DEFAULT 0.00;c、删除ALTER TABLE tb_emp02 CHANGE sal sal DECIMAL(7,2);四、自动增长字段名 数据类型 auto_incerment要求1、一个表只能有一个2、整型或浮点型3、是键主键或候选键可以手动更改在前一个数值的基础上自动加1数据操作一、插入数据---insert1、插入单条数据Insert into table_name给整张表的全部数据进行插入验证数据是否插入*代表所有字段信息插入部分数据插入多条数据字符串日期需要加定界符“”或‘’英文状态下Insert into table_name set 字段名更新数据---update不加where对所有进行修改加上Where对于满足条件的进行修改删除数据---delete对表中数据进行删除例子表中数据全部删掉------空表单表查询一、SELECT语句select [distinct] *|{select_expr1, select_expr2, …} from 数据表名 [where 条件表达式1] [group by 字段名 [having 条件表达式2]] // 分组统计 [order by 字段名 [asc|desc]]s //排序 [limit [offset] 记录数] //限制输出二、简单查询1、列出所有字段名称进行查询SELECT 字段名1,字段名2,… FROM 数据表名; 字段名的顺序可以改变2、使用通配符*进行查询SELECT * FROM 数据表名;3、查询指定字段SELECT 字段名1,字段名2,… FROM 数据表名; 字段顺序可更改4、查询去重数据SELECT distinct 字段名 FROM 数据表名;SELECT distinct 字段名1,字段名2字段名3 FROM 数据表名; ------同时满足3个字段条件同时满足三、条件查询一、常见比较运算符比较运算符说明比较运算符左右两侧的操作数是否相等比较运算符左右两侧的操作数是否不相等!比较运算符左右两侧的操作数是否不相等比较运算符左侧操作数是否小于右侧操作数比较运算符左侧操作数是否小于等于右侧操作数比较运算符左侧操作数是否大于右侧操作数比较运算符左侧操作数是否大于等于右侧操作数BETWEEN ... AND ...比较数据是否存在于指定范围内IN包含比较数据是否存在于指定集合内IS NULL比较数据是否为NULLIS NOT NULL比较数据是否不为NULLLIKE模糊查找通配符匹配获取匹配到的数据列---投影运算行------条件运算1、例子SELECT * FROM 数据表名 where sal1000;2、包含运算符inselect * from 数据表名 where deptno in (10,20);3、逻辑运算符 ormysql select * from emp WHERE deptno10 or deptno20; 与in(10,20)结果相同4、is nullmysql select * from emp where mgr is null;5、is not nullmysql select * from emp where mgr is not null;6、likemysql select * from emp where mgr like;% ---长度为任意的字符串包括空字符 代表0~n _----一个_代表一个字符 mysql select * from emp where mgr like%一;----最后一位为一mysql select * from emp where mgr like__一;7、转义字符\%-----即%mysql select * from emp where mgr like%\%%; -----中间带%的数据二、逻辑运算符1、notmysql select * from emp where mgr not;2、and 条件同时满足mysql select * from emp where 字段名and字段名;3、ormysql select * from emp where 字段名or字段名;4、between 初值 and 结束值mysql select * from emp where 字段名 between 初值 and 结束值;5、优先级notandor四、高级查询一、聚合函数*不考虑空值字段名会看具体数据是否为空值1、count----计数mysql select count(*) from emp ;mysql select count(字段名) from emp ;2、sum() -------求和mysql select sum(cumn) from emp ;3、avg ----平均值mysql select avg(cumn) from emp ;嵌套函数mysql select avg(ifnull(cumn,0)) from emp ;4、maxmysql select max(sal) from emp ;5、minmysql select min(sal) from emp ;(二)、分组查询mysql select deptno,avg(sal),sum(sal) from emp group by deptno ;mysql select deptno,avg(sal) from emp group by deptno having avg(sal)3000;(三)、排序查询order by [asc|desc] 默认升序 desc---降序mysql select * from emp where deptno30 order by job;(四)、限量查询limit [,]记录数mysql select * from emp order by sal desc limit 5; ----前5个mysql select * from emp order by sal desc limit 1,4; ------1是偏移量偏移1位即从第2个开始计算4是要显示的数量(五)、内置函数1、concat函数 ----链接函数2、(六)、设置别名mysql select * from emp e where e.deptno30; 表的别名mysql select ename as姓名 from emp e where e.deptno30; 表的别名 as可以省略多表查询一、多表查询一、交叉连接查询select 字段名 from 数据表1 cross join 数据表2select 字段名 from 数据表1 数据表2二、内连接又叫简单连接根据连接条件仅筛选出两张表中相匹配的记录select 查询字段 from 数据表1 [inner] join 数据表2 on 连接条件即 数据表1.字段数据表2.字段;补充自然连接可以去除重复字段select * from 数据表1 natural join 数据表2 把公共字段放在第一列自连接连接的两张表是同一张表必须用别名三、外连接select 所查字段 from 数据表1 left|right [outer] join 数据表2 on 匹配条件复合条件连接查询select 字段 from 数据表1数据表2数据表3 where 数据表1.字段数据表2.字段 and 数据表2.字段数据表3.字段二、子查询一、in关键字结合子查询mysql select * from dept where deptno in(select deptno from emp where sal2900);---工资大于2900mysql select * from dept where deptno not in(select deptno from emp where sal2900); ----工资小于等于2900二、exists关键字EXISTS关键字用于判断子查询的结果集是否为空若子查询的结果集不为空返回TRUE否则返回FALSE。select * from dept where exists (select * from emp where emp.deptnodept.deptno and emp.sal2900); emp.deptnodept.deptno ----连接条件三、any关键字任意一个必须与比较操作符一起用select * from emp where deptno10 and salany(select sal from emp where deptno20);四、all关键字所有select * from emp where deptno10 and salall(select sal from emp where deptno20);(五)、比较运算符三、外键约束注意主表和从表的关联字段的数据类型必须是一样的alter table 从表名 add constraint fk_外键字段名 foreign key(外键字段名) references 主表名(主键字段名) fk_外键字段名 ----可任意更改,不能加引号查看show create table 表名 \GALTER TABLE 从表名 ADD CONSTRAINT [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表表名(主键字段名); [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}] [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}] 默认拒绝参数名称功能描述CASCADE主表中删除或更新记录时同时自动删除或更新从表中对应的记录SET NULL主表中删除或更新记录时使用NULL值替换从表中对应的记录不适用于已标记为NOT NULL的字段NO ACTION拒绝主表删除或修改外键关联列RESTRICT拒绝主表删除或修改外键关联列。在不定义ON DELETE和ON UPDATE子句时这是默认设置也是最安全的设置删除delete from emp where deptno(select deptno from dept WHERE dname人力资源部);删除主键数据DELETE FROM dept WHERE dname人力资源部;删除外键约束ALTER TABLE emp DROP FOREIGN KEY fk_deptno;索引一、类型1、普通索引是MySQL中的基本索引类型使用KEY或INDEX定义不需要添加任何限制条件。2、唯一性索引创建唯一性索引的字段允许有NULL值但需要保证索引对应字段中的值是唯一的。3、主键索引是一种特殊的唯一性索引用于根据主键自身的唯一性标识每一条记录。主键索引的字段不允许有NULL值。4、全文索引主要用于提高在数据量较大的字段中的查询效率。5、空间索引只能创建在空间数据类型的字段上。创建索引create index 索引名 ON 表名 (属性名 [ ( 长度) ] [ asc | desc ]);查看索引Show index from table_name ; ----纯查看索引Show create table table_name ;删除索引drop index index_name on table_name ;alter table table_name drop index index_name ;视图是一张虚拟表创建create [or replace] view 视图名[(字段名)] as单表查看修改事务特性原子性隔离性一致性持久性p192 第二个蓝跳 查询事务隔离级别select tx_isolation;