MySQL必备基础知识有哪些
这篇文章给大家分享的是有关MySQL必备基础知识有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、SQL的概念
结构化查询语言(StructuredQueryLanguage)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
二、SQL分类
(1)数据定义语言(Data Definition Language) DDL
用来定义数据库对象:数据库,表,列……
(2)数据操作语言(Data Manipulation Language) DML
用来对数据库中表的记录进行更新。
(3)数据查询语言(Data Query Language) DQL
用来查询数据库中表的记录。
(4)数据控制语言(Data Control Language) DCL
(一)DDL
1.创建数据库createdatabase数据库名;createdatabase数据库名characterset字符集;//字符集一般为uft-8,第二个语句是创建数据的同时并设置了字符集。2.查看数据库use数据库名;//切换数据库showdatabases;//查看MySQL中都有哪些数据库selectdatabase();//查看当前正在使用的数据库showcreatedatabase数据库名;//查看一个数据库的定义信息3.修改数据库字符集alterdatabase数据库名characterset字符集;4.删除数据库dropdatabase数据库名;5.创建表CREATETABLE表名(字段名称1字段类型(长度),字段名称2字段类型(长度)//注意:最后一个字段名称末尾不加,);/*常用的数据类型int整型double浮点型varchar字符串data日期类型,yyyy-MM-dd年-月-日注意:char也表示字符串,但是跟varchar是有区别的char和varchar区别:char类型是固定长度的,varchar是根据输入字符分配合适的空间,一般情况下用varchar*/6.查看表showtables;//查看当前数据库所有的表desc表名;//查看表的结构7.修改表renametable旧表名to新表名;//修改表名altertable表名characterset字符集;//修改字符集alerttable表名add字段名称字段类型;//向表中添加字段altertable表名drop字段名;//删除字段8.删除表drop表名ifexists表名;//删除该表
(二)DML
1.插入数据insertinto表名(字段名1,字段名2...)values(字段值1,字段值2...);2.更改数据update表名set列名=值[where字段名=值];3.删除数据deletefrom表名[where字段名=值];
(三)DQL
1.简单查询select列名from表名;//列名可以用*号代替表示查询所有字段2.条件查询select列名from表名where条件表达式;//%表示任意多个字符串,_表示匹配一个字符,
3.排序SELECT字段名FROM表名[WHERE字段=值]ORDERBY字段名[ASC/DESC];//ASC表示升序排序(默认),DESC表示降序排序4.聚合函数/*常用聚合函数*count(字段)统计指定列不为NULL的记录行数*sum(字段)计算指定列的数值和*max(字段)计算指定列的最大值*min(字段)计算指定列的最小值*avg(字段)计算指定列的平均值*/SELECT聚合函数(字段名)FROM表名;5.分组SELECT分组字段/聚合函数FROM表名GROUPBY分组字段[HAVING条件];6.limit关键字SELECT字段1,字段2...FROM表名LIMIToffset,length;//offset起始行数,从0开始记数,如果省略则默认为0.//length返回的行数
(四)DCL
1.创建用户CREATEUSER'用户名'@'主机名'IDENTIFIEDBY'密码';2.给用户授权GRANT权限1,权限2...ON数据库名.表名TO'用户名'@'主机名';3.查看权限SHOWGRANTSFOR'用户名'@'主机名';4.删除用户DROPUSER'用户名'@'主机名';5.查询用户SELECT*FROMUSER;
三、 SQL约束
1.主键约束//不可重复唯一非空字段名字段类型primarykey;//主键的自动增长AUTO_INCREMENT表示自动增长(字段类型必须是整数类型)//默认主键起始值是1,改变起始值//--创建主键自增的表,自定义自增其实值字段名字段类型DEFAULT默认值//CREATETABLE表名(//eidINTPRIMARYKEYAUTO_INCREMENT,//……//)AUTO_INCREMENT=100;//DELETE和TRUNCATE对自增长的影响(前者对自增没有影响,后者从1开始自增)2.非空约束字段名字段类型notnull,3.唯一约束字段名字段类型unique,4.默认值字段名字段类型DEFAULT默认值
四、事务控制
1.什么是事务事务是一个整体,由一条或者多条SQL语句组成,这些SQL语句要么都执行成功,要么都执行失败,只要一条SQL出现异常,整个操作就会回滚,整个业务执行失败。2.手动提交事务①开启事务starttransaction;②提交事务commit;③回滚事务rollback;3.自动提交事务(MySQL默认)//取消自动提交SET@@autocommit=off;//查看自动状态,on是自动,off是手动提交SHOWVARIABLESLIKE'autocommit';4.**事务的四大特性**(重点)原子性,一致性,隔离性,持久性。5.事务隔离级别//查看隔离级别select@@tx_isolation;//5.7版本//设置隔离级别setglobaltransactionisolationlevel级别名称;//readuncommitted读未提交//readcommitted读已提交//repeatableread可重复读//serializable串行化
五、多表
(一)概述
1.在实际开发中,单表是满足不了业务需求的,同一个字段中很可能出现大量的冗余字段,这就需要我们引入了多表。2.如果表1的某个字段与表2的主键对应,那么表1的这个字段就称为表1的外键,拥有外键的表是从表,与外键对应的主键所在的表成为主表。4.外键约束:外键约束可以让两张表之间产生一定的对应关系,从而形成了约束。5.外键指的是与在从表中与主表的主键对应的字段。6.添加外键约束的语法格式[CONSTRAINT][外键约束名称]FOREIGNKEY(外键字段名)REFERENCES主表名(主键字段名);altertable从表add[CONSTRAINT][外键约束名称]FOREIGNKEY(外键字段名)REFERENCES主表名(主键字段名);//中括号里面的东西都是可以省略的7.删除外键约束的语法格式altertable从表dropforeignkey外键约束名称;8.外键约束的注意事项:①从表的外键类型必须与主表的主键类型一致。②添加数据时,应该先添加主表的数据,然后再添加从表的数据③删除数据的时候,要先删除从表中的数据,再删除主表中的数据。9.级联删除删除数据的时候,要先删除从表中的数据,再删除主表中的数据,设置级联删除变可以直接删除主表中的数据,同时从表中的数据也会跟着消失。ondeletecascade;//添加外键约束的时候后面跟着这句
(二)多表间关系
一对多: 在多的表上建立外键
多对多: 建立第三个表,最起码有两个字段(两个表的主键)
一对一: 任意一个表上建立外键
(三) 多表查询
1.内连接查询SELECT字段名FROM左表,右表WHERE连接条件;SELECT字段名FROM左表[inner]JOIN右表ON连接条件;2.外连接查询SELECT字段名FROM坐标LEFT[outer]JOIN右表ON连接条件;SELECT字段名FROM坐标RIGHT[outer]JOIN右表ON连接条件;//内连接:innerjoin,只获取两张表中交集部分的数据.//左外连接:leftjoin,以左表为基准,查询左表的所有数据,以及与右表有交集的部分//右外连接:rightjoin,以右表为基准,查询右表的所有的数据,以及与左表有交集的部分3.子查询SELECT查询字段FROM表WHERE字段=(子查询);SELECT查询字段FROM(子查询)表别名WHERE条件;SELECT查询字段FROM表WHERE字段IN(子查询);//子查询如果查出的是一个字段(单列),那就在where后面作为条件使用.//子查询如果查询出的是多个字段(多列),就当做一张表使用(要起别名).
六、数据库三范式
数据库设计的一种规则
目的: 创建 冗余较小,结构合理的数据库。
第一范式(1NF) 满足最低要求的范式——列具有原子性,列要做到不可拆分性
第二范式(2NF) 在满足第一范式的基础之上进一步满足更多的规范—— 一张表只能描述一件事情
第三范式(3NF) 以此类推………………
七、MySQL索引
索引的作用:为了提高索引的效率
**常见索引的分类:**主键索引(primary key);
唯一索引(unique);普通索引(index);
(一)主键索引
1.创建的时候添加主键索引CREATETABLE表名(字段名类型PRIMARYKEY,//主键索引是唯一索引);2.在已有表的基础上添加主键索引ALTERTABLE表名ADDPRIMARYKEY(列名);
(二)唯一索引
1.创建的时候添加唯一索引CREATETABLE表名(UNIQUE[索引名称](列名));2.在已有表的基础上添加唯一索引CREATEUNIQUEINDEX索引名on表名(列名);ALTERTABLE表名ADDUNIQUE(列名);
(三)普通索引
createindex索引名on表名(列名[长度]);ALTERTABLE表名ADDINDEX索引名(列名);
(四)删除索引
ALTERTABLEtable_nameDROPINDEXindex_name;
八、MySQL视图
//视图是一个表中根据不同需求提取出来的一个实际上不存在的表createview视图名[column_list]asselect语句;//通过视图进行查询时将视图看成是一张表即可
感谢各位的阅读!关于“MySQL必备基础知识有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。