• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > mysql基础知识

mysql基础知识

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了mysql,基础知识等相关知识,希望本文的分享对您有所帮助
本篇文章主要介绍MySQL基础知识,数据库它是一个以某种有组织的方式存储的数据集合,保存有组织的数据的容器(通常是一个文件或一组文件),感兴趣的朋友了解一下。

SQL分类

SQL 主要语句可以划分为一下3类

  • DDL:数据定义语言,这些语句定义不同的数据段、数据库、表、列、索引等数据库对象。常用语句关键字主要包括create,drop,alter等

  • DML:数据操作语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用语句关键字主要包括 insert,delete,update和select等。

  • DCL数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要 的语句包括关键字grant、revoke等

DDL语句

是对数据库内部的对象进行创建 、删除、修改等操作语言,它和DML语句最大的区别是DML只是对表内部数据操作,而不涉及表的定义、结构的修改,更不会涉及其他对象。DDL更多地由数据库管理员(DBA)使用。

连接mysql服务器 
mysql -uroot -p 

创建数据库test1
create database test1;

显示有哪些数据库
show databases;

<!-- mysql  自动创建的表有
information_schema:主要存储了系统中的一些数据库信息,比如用户表信息、列信息、权限信息、字符集信息、分区信息等等
cluster:存储了系统的集群信息
mysql:存储了系统的用户权限信息。
test:系统自动创建的测试数据库,任何用户都可以访问 -->

选择数据库
use test1

显示test1数据库中创建的所有表
show tables

删除数据库
drop database test1;

创建表
create table emp(ename varchar(10),hiredata date,sal decimal(10,2),deptno int(2));

查看表定义
desc emp;

查看创建表的定义
show create table emp;

删除表
drop table emp;

修改表
alter table emp modify ename varchar(20);

增加表字段
alter table emp add column age int(3);

删除表字段
alter table emp drop column age;

字段改名
alter table emp change age age1 int(4);

<!-- change 和modify都可以修改表的定义,不同的是change后面需要写两次列名,不方便,但是change的优点是可以修改列名称,则modify则不能 -->

修改字段排序
alter table emp add birth date after ename;
alter table emp modify age int(3) first;

更改表名
alter table emp rename emp1;

DML语句
是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select)。

插入记录
insert into emp(ename,hiredate,sal,deptno)values('zzx1','2000-01-01','2000',1);
也可以不用指定字段名称,但是values后面的顺序要和字段的排列顺序一致
inset into emp('zzx1','2000-01-01','2000',1);
含可空字段、非空但是含有默认值的字段、自增字段、可以不用再insert后的字段列表里面出现,values后面只写对应字段名称的value,没写的字段可以自动设置为
null、默认值、自增的下一个数字

批量增加用逗号隔开
insert into dept values(5,'xxx'),(8,'xxx');

更新记录
update emp set sal=4000 where ename='xxx';

删除记录
delete from emp where ename='doney';

查询记录select * from emp;
*表示所有记录,也可以用逗号隔开的字段来选择查询

查询不重复的记录select distinct deptno from emp;

条件查询
用where关键字来实现,可以使用<>!=等多条件可以使用or、and等

排序和限制desc和asc是排序关键字,desc是降序、asc是升序排列 ORDER BY 排序,默认是升序select * from emp order by sal;
如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序,如果只有一个排序字段,则相同字段将会无序排序select * from emp order by deptno,sal desc;
限制select * from emp order by sal limit 3;//前者是起始偏移量,后者是显示行数select * from emp order by sal limit 1,3;

limit 和order by 一起使用来做分页

聚合
用户做一下些汇总操作

sum(求和),count(*)(记录数),max(最大值),min(最小值)
with rollup 是可选语法,表示是否对分类聚合后的结果进行再汇总
having 表示对分类后的结果在进行条件的过滤。

select deptno,count(1) from emp group by deptno having count(1)>=1;

表连接

大类上分为外连接和内连接
外链接 又分为左连接和右连接

左连接:包含所以的左边表中的记录甚至是右边表中没有和它匹配的记录。
右连接:同上

select ename,detname from emp left join dept on emp.deptno=dept.deptno;
左连接和右连接可以相互转换

子查询

select * from emp where deptno in(select deptno from dept);
如果子查询记录唯一,可以使用=替代in
select * from emp where deptno =(select deptno from dept limit 1);

记录查询
将两个表的数据按照一定的查询出来后,将结果合在一起显示

union all 是将结果集合并在一起,而union是将union all后的结果在进行一次distinct,去除重复

select deptno from emp union all select deptno from dept;
select demtno from emp union select deptno from dept;

? xxx 来查看

如果要查看类别 ? data types 具体的 ? int 
查看语法 如 ? create table

数据类型

对于整形数据,MySql还支持在类型名称后面的小括号设置宽度,默认设置为int(11),配合zerofill,
当数字位数不够的时候,用字符‘0’填充

alter table t1 modify id1 int zerofill

对于小数,MySql 分为两种,浮点数和定点数。浮点数包括float和double,而定点数只有decimal,定点数在Mysql内部是以字符串形式存放,比浮点数更精确,适合用于货币等精度高的数据

浮点数和定点数可以用类型名称加(M,D) M是几位,D是位于小数点后面几位。

日期类型

  • DATE来表示年月日

  • DATETIME来表示年月日时分秒

  • TIME来表示时分秒

  • 当前系统时间,通常用TIMESTAMP来表示

TIMESTAMP
创建一个字段为TIMESTAMP类型,系统自动创建了默认值为CURRENT_TIMESTAMP(系统日期)。同时MySql规定TIMESTAMP类型字段一列只能有一个默认值current_timestamp。如果修改会报错.

TIMESTAMP 另一个重要特点是与时区有关。当插入时间时,先转换为本地时区后存放,而从数据库取出时,同样会将日期转换为本地时区后显示,这样两个时区的用户看到同一个时区可能就不一样

查看当前时区
show variables like 'time_zone';
修改时区
set time_zone='+9.00';

DATETIME插入的格式

YYYY-MM-DD HH:MM:SS 或YY-MM-DD HH:MM:SS 的字符串允许任何标点符号用来做时间部分的间隔符
如92@12@31 11^30^45

YYYYMMDDHHMMSS 或YYMMDDHHMMSS的格式没有间隔符的字符串

字符串类型

CHAR和VARCHAR类型
两者的主要区别是存储方式不同:CHAR列的长度固定为创建表时声明的长度,长度可以为0-255;二VARCHAR列中的值是可变长度。同时在检索的时候,CHAR列删除尾部的空格 ,而VARCHAR保留空格,由于CHAR是固定长度,所以它的处理速度别VARCHAR快很多,但是其缺点是浪费内存,在使用中VARCHAR被更多的使用

create table vc (v varchar(4),c char(4))
insert into vc values('ab  ','ab  ');
selelct length(v),length(c) from vc
//4,2

枚举

create table t(gender enum('m','f'));
insert into t values('
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05怎样查询两个表中同一字段的不同数据值
  • 2017-05-11mysql unsigned 用法及相减出现补数溢出解决方法
  • 2018-12-05MySQL · 引擎特性 · InnoDB IO子系统的详细介绍
  • 2017-05-11mysql常用命令大全 mysql常用命令总结
  • 2018-12-05mysql 字符集处理
  • 2018-12-05MySQL之—使用c3p0与DBCP连接池,造成的MySql 8小时问题的详细代码解决方案
  • 2018-12-05解决Oracle 11gR2 RAC 无法在客户端通过scanIP连接数据库
  • 2018-12-05select into 和 insert into select 两种表复制语句
  • 2018-12-05关于Mysql如何将数据分组后取出时间最近的数据详解
  • 2018-12-05如何得到数据库中所有表名 表字段及字段中文描述

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MySQL优化之-集群搭建代码步骤详解(图)
    • Couchbase Server 2.0 发布,NoSQL 数据库
    • MYSQL ERROR 1045 (28000): Access denied for user (using pass
    • SSL连接的实例教程
    • MYSQL explain 执行计划
    • SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法
    • 在ADF中跟踪SQL执行时间实现代码
    • mysql中取系统当前时间,当前日期方便查询判定的代码
    • 全文本检索的应用(3)
    • 如何修复mysql数据库

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有