欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

了解MySQL

程序员文章站 2022-09-27 15:17:17
目前流行的数据库 MySQL Oracle Microsoft SQLServer Microsoft Access PostgreSQL DB2/UDB InfoMax MySQL介绍 世界上最流行的开源数据库,支持任何平台的操作系统,是一个强大的关系型数据库,支持SQL 概念:Structure ......

目前流行的数据库

mysql  oracle  microsoft sqlserver  microsoft access

postgresql  db2/udb  infomax

mysql介绍

  世界上最流行的开源数据库,支持任何平台的操作系统,是一个强大的关系型数据库,支持sql

 

概念:structure query language(sql)结构化查询语言

  1、为了与关系型数据库通讯的语言

  2、几乎所有的关系型数据库都支持sql语言

  3、操作对象:table表格、view视图、index索引、program unit程序单元

sql语言分类

  • dql:数据查询语言 data query language

    • select 查看数据

  • ddl:数据定义语言 data defination language

    • create 创建

    • alter 修改

    • drop 删除

    • rename 重命名

    • truncate 清空

  • dml:数据操纵语言 data mutipulation language

    • insert 新增

    • delete 删除

    • update 修改

    • select 查看(可以放在dql中)

  • dcl:数据控制语言 data control language

    • grant 授权

    • revoke 撤权

  • 事务

    • start transaction 开启事务

    • commit 提交事务

    • rollback 回滚事务

    • savepoint 设置事务回滚点

mysql登录

  • 密文登录(建议使用):mysql -u 用户名 -p

  • 明文登录:mysql -u 用户名 -p密码 (没有空格)

  • 完全登陆法:myql -u 用户名 -p密码 数据库名称 -h 服务器ip -p 端口号

    • mysql -u root -p123456 mysql -h 127.0.0.1 -p 3306

  • 修改密码:mysqladmin -u root(用户名) -p password root(新密码)

show命令(常用)

  • 切换数据库(进入数据库):use 数据库名称 eg:use mysql

  • 查看系统数据库:show databases;

  • 查看表格(进入数据库之后):show tables;

  • 查看系统状态:show status;

  • 查看系统参数:show variables;

  • 查看系统线程:show processlist;(主要用来检测那些用户登录了mysql数据库,并检测当前进入了哪个数据库)

  • 查看系统引擎:show engines;(这三者面试常见)

    • innodb:现在我们用的数据库引擎默认是innodb,因为它支持事务、行级锁、外键

    • myisam:引擎一般,mysql5.0以下用的

    • memory:一般适用于数据不是很多,读写速率和效率比较高的时候

  • 查看表结构:show columns from tbname;

    • desc tbname

  • 查看建表过程:show create table tbname;(主要是查看建表过程的sql语句

  • 查看表索引:show index from tbname;(只有表格建立了索引,才可以查看)

  • 补充

    • %:匹配0到多个字符 eg:show tables like "test%"; 会查询以test开头的所有数据库

    • _:匹配1个字符

    • *:指代符

简单的select 语句

  • 简单计算:select 1+1;select 1+1 as sum,1*1 product;

  • 查看所处数据库:select database(); show tables; show processlist;

  • select now(),current_date,sysdate();

    • select sysdate(),sleep(3),sysdate();=====sysdate():实时时间

    • select now(),sleep(3),now();=====now():当前时间

  • select * from tbname;select host,user from tbname;

 

mysql的数据类型(标记的都是常用的)

 整型 (下面的m表示显示的长度,unsigned表示无符号,zerofill表示长度不够0填充)

tinyint[(m)] [unsigned] [zerofill] 一个很小的整数。

有符号的范围是-128到127,无符号的范围是0到255。

smallint[(m)] [unsigned] [zerofill] 一个小整数。

  有符号的范围是-32768到32767,无符号的范围是0到65535。

mediumint[(m)] [unsigned] [zerofill]一个中等大小整数。

  有符号的范围是-8388608到8388607,无符号的范围是0到 16777215。

int[(m)] [unsigned] [zerofill] 一个正常大小整数。

  有符号的范围是-2147483648到2147483647,无符号的范围是 0到4294967295。

integer[(m)] [unsigned] [zerofill] 

  这是int的一个同义词。

bigint[(m)] [unsigned] [zerofill]一个大整数。

  有符号的范围是-9223372036854775808到 9223372036854775807,无符号的范围是0到18446744073709551615 

 

浮点型 (m表示显示的位数,d表示小数点后面几位)

float[(m,d)] [zerofill] 

  一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466e+38到1.175494351e-38,0 和1.175494351e-38到3.402823466e+38。m是显示宽度而d 是小数的位数。没有参数的float或有<24 的一个参数表示一个单精密浮点数字。

double[(m,d)] [zerofill]

  一个正常大小(双精密)浮点数字。不能无符号。允许的值是1.7976931348623157e+308到-2.2250738585072014e-308、 0和 2.2250738585072014e-308到1.7976931348623157e+308。m是显示宽度而d是小 数位数。没有一个参数的double或float(x)(25 < = x < = 53)代表一个双精密 浮点数字。

double precision[(m,d)] [zerofill]  real[(m,d)] [zerofill]   这些是double同义词。

decimal[(m[,d])] [zerofill] 

一个未压缩(unpack)的浮点数字。不能无符号。

numeric(m,d) [zerofill]

这是decimal的一个同义词。

 

 字符型 (m表示存储的最大长度)

 char(m) [binary] 

  一个定长字符串,当存储时,总是是用空格填满右边到指定的长度。m的范围是1 ~ 255个字符。

varchar(m) [binary] 

  一个变长字符串,当存储时在m的范围内,字符串的长度是多少,就存储多少长度

tinyblob  tinytext

  一个blob或text列,最大长度为255(2^8-1)个字符。

blob  text 

  一个blob或text列,最大长度为65535(2^16-1)个字符。

mediumblob   mediumtext

  一个blob或text列,最大长度为16777215(2^24-1)个字符。

longblob   longtext 

  一个blob或text列,最大长度为4294967295(2^32-1)个字符。

 

枚举型和集合型

create table t4(
    id int,
    name varchar(50),
    gender enum('male','female'....)/('0','1')   #单选,或者数据缺失null
                                   
);    
create table t5(
    hobby set('篮球','足球','羽毛球')    # 一个或者多个组合,或者为空'',或者数据缺失null
);

 

日期型

date 

  一个日期。支持的范围是'1000-01-01'到'9999-12-31'。mysql以'yyyy-mm-dd'格式来显示 date值,但是允许你使用字符串或数字把值赋给date列。

datetime 

  一个日期和时间组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。mysql 以'yyyy-mm-dd hh:mm:ss'格式来显示datetime值,但是允许你使用字符串或数字把值赋 给datetime的列。

timestamp[(m)] 

  一个时间戳记。范围是'1970-01-01 00:00:00'到2037年的某时。mysql以 yyyymmddhhmmss、yymmddhhmmss、yyyymmdd或yymmdd格式来显示 timestamp值,取决于是否m是14(或省略)、12、8或6,但是允许你使用字符串或数字把值 赋给timestamp列。

time 

  一个时间。范围是'-838:59:59'到'838:59:59'。mysql以'hh:mm:ss'格式来显示time值,但 是允许你使用字符串或数字把值赋给time列。

year[(2|4)] 

  一个2或4位数字格式的年(缺省是4位)。允许的值是1901到2155,和0000(4位年格式),如果 你使用2位,1970-2069( 70-69)。mysql以yyyy格式来显示year值,但是允许你把使用字 符串或数字值赋给year列。(year类型在mysql3.22中是新类型。)