MySQL教程之MySQL知识总结
发布时间:2022-08-10 10:20:12 所属栏目:MySql教程 来源:互联网
导读:1.MySQL数据库 MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,从而增加了速度并提高了灵活性。 MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言,由于其体积
|
1.MySQL数据库 MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,从而增加了速度并提高了灵活性。 MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中 小型网站的开发都选择 MySQL 作为网站数据库,搭配 PHP 和 Apache 可组成良好的开发环境。 2.MySQL存储方式 一台数据库服务器中会创建很多数据库,在数据库中会创建很多张表,在表中会有很多记录。 3.SQL结构化查询语言 SQL是高级的非过程化编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚 本文件的扩展名,可以嵌套,具有极大的灵活性和强大的功能。 4.SQL语言的分类 (1)DDL(数据定义语言) (2)DML(数据操作语言) (3)DCL(数据控制语言) (4)DQL(数据查询语言) 5.MySQL数据库的创建、修改和删除 (1)创建数据库 语法: create database 数据库名称 [character set 字符集 collate 字符集校对规则](一般忽略); (2)查看数据库 查看所有数据库: 语法: show databases; 查看某个数据库: 语法: show create database 数据库名称; (3)修改数据库: 语法:alter database 数据库名称 [character set 字符集 collate 字符集校对规则](一般忽略); (4)删除数据库: 语法:drop database 数据库名称; (5)使用或者切换数据库: 语法:use 数据库名称; 6.MySQL表的创建、修改和删除 (1)创建表 语法:create table 表名( 数据名称 数据类型(长度) 约束, ....... ); 注:括号内的语句用逗号进行多次创建,最后的语句不加任何标点符号 数据类型:(MySQL所对应的Java类型) Java中的类型 MySQL中的类型 byte/short/int/long tinyint/smallint/int/bigint float float double ouble boolean bit char/String char和varchar类型 char和varchar的区别: char代表是固定长度的字符或字符串。 定义类型char(8),向这个字段存入字符串hello,那么数据库使用三个空格将其补全。 varchar代表的是可变长度的字符串。 定义类型varchar(8), 向这个字段存入字符串hello,那么存入到数据库的就是hello。 Date date/time/datetime/timestamp datetime和timestamp区别 datetime就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用null存入 到数据库中 timestamp也是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的 系统时间存入到数据库中。 File BLOB/TEXT 约束: 约束作用:保证数据的完整性 单表约束: 主键约束:primary key (主键约束默认就是唯一 非空的) 唯一约束:unique 非空约束:not null (2)查看表 查看一个数据库下的所有的表: 语法:show tables; 查看单独一个表: 语法:desc 表名; (3)删除表 语法:drop table 表名; (4)修改表 增添列: 语法: alter table 表名 add 列名 数据类型(长度) 约束; 修改列类型,长度和约束: 语法: alter table 表名 modify 列名 数据类型(长度) 约束; 删除列: 语法: alter table 表名 drop 列名; 修改列名称: 语法: alter table 表名 change 旧列名 新列名 数据类型(长度) 约束; 修改表名: 语法: rename table 表名 to 新的表名; 修改表的字符集: 语法: alter table 表名 character set 字符集; 7.MySQL数据的增删改查 (1)添加表记录 向表中插入某些列: 语法: insert into 表名 (列名1,列名2,列名3…) values (值1,值2,值3…); 向表中插入所有列: 语法: insert into 表名 values (值1,值2,值3…); 注意: 1.值的类型与数据库中表列的类型一致; 2.值的顺序与数据库中表列的顺序一致; 3.值的最大长度不能超过列设置最大长度; 4.值的类型是字符串或者是日期类型,使用单引号引起来。 (2)修改表记录 语法: update 表名 set 列名=值,列名=值 [where 条件]; 注意: 1.值的类型与列的类型一致; 2.值的最大长度不能超过列设置的最大长度; 3.字符串类型和日期类型添加单引号。 (3)删除表记录 语法: delete from 表名 [where 条件];(或者truncat from 表名;)<注:truncat删除表数据无法恢复> 注意: 1.删除表的记录,指的是删除表中的一行记录; 2.删除如果没有条件,默认是删除表中的所有记录。 (4)查看表记录 语法: select *(或者列名) from 表 [条件]; 8.MySQL解决向数据库中插入中文记录会出现错误 解决方法: 需要将MySQL数据库服务器中的客户端部分的字符集改为gbk,找到MySQL的安装路径:my.ini文件,修改文件中[client]下的字符集,将 [default-charaacter-set=ISO-8895-1]改成[default-charaacter-set=gbk],然后再重新启动MySQL的服务器。 9.按不同方式查看表记录 (1)按条件查询: 使用where 字句 > ,< ,<= , >= , <> *不等 , = like:模糊查询 , in:范围 查询 , 条件关联:and or not 查询李四信息: select * from 表名 where 列名[name = 李四] = '李四'; 查询李四信息并且英语大于90: select * from 表名 where 列名[name = 李四] ='李四' and 列名[Englist]>90; 在lik可以使用: _ , % _只能带表一个字符 %带表多个字符 * %王% 带表中间包含着个字就行 查询姓李的学生信息: select * from 表名 where name like '%李%' 查询英语成绩是69,75,89的学生: select * form 表名 where 列名[english] in (69 , 75 , 89); (2)查询排序: 使用order by 字段名称 asc/desc; *默认是用asc , 倒序desc; 查询学生信息按成绩排: selech * from order by 列名[english]; 查询学生成绩按倒序: selech * from order by 列名[english] desc; 查询学生按语文成绩倒序再按英语升序排列: select * from order by 列名[chinese] desc, 列名[english] asc; 查询姓李的学生,英语按倒序排列: select * from 表名 where 列名[name] like '李%' order by 列名[english] desc; (3)分组统计查询: 聚合函数: sum(); 获得总数: count();*个数; 最大值:max() 最小值:min() 平均值:avg; 获得所有成绩的和: select sum(exam)from 表名; count(); 获得所有的计数: select count(*) from 表名; max()/min(); 获得某门考试的最大和最小成绩: select max(math) from 表名;/select min(math) from 表名; avg() 获得平均数:select avg(chinese) from 表名; 分组查询 语法:使用group by 字段名称; 按商品名称统计,每类商品所花费的总金额:select product,sum(price) from orderitem group by product; 注意: where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条件过滤(分组后条件过滤)需要使用一个关键字HAVING; 例:select product,sum(price) from orderitem group by product having sum(price) > 5000 order by sum(price) asc; 10.单表查询的执行顺序流程 select ... from ... where ... group by ... having ...order by ...; (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



