MySQL

 

一、MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一

  • 数据库: 数据库是一些关联表的集合相当于文件夹。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格相当于文件。
  • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
  • 数据行:相当于文件中一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表,做約束。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

 

二、MySQL一些命令:

  查看當前MySQL都有哪些数据,根目录都有哪些文件夹(数据库):show databases:

  创建数据库:create database 数据库名:

  选中数据库:use 数据库名:

  查看当前数据库有那些表:show tables:

  创建表:create table 表名(nid int,name varchar(20),pwd varchar(64)):

  插入数据:insert into 表名(nid,name,pwd) values(1,'ccc','111');insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...);insert into 表 (列名,列名...) select (列名,列名...) from

 

  创建用户 :create user '用户名'@'IP地址' identified by '密码';
   删除用户:drop user '用户名'@'IP地址';
   修改用户:rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;
   修改密码:set password for '用户名'@'IP地址' = Password('新密码'),密碼必須加引号,其它推荐使用

   grant  权限 on 数据库.表 to  '用户'@'IP地址'      -- 授权

  删除数据库:drop database 数据库名

  清空表--不会回到原点:delete from 表名;delete from where id=1 and name'alex'

 

  清空表--速度快、自增回到原点:trancate table 表名  

  更新数据表: UPDATE runoob_tbl SET runoob_title='学习 C++' WHERE runoob_id=3;

  刪除某一行:DELETE FROM runoob_tbl WHERE runoob_id=3;

  查看表中的数据:select *from 表名:select * from 表;select * from where id > 1;select nid,name,gender as gg from where id > 1

 

  表详细数据:desc 表名

  设定主键:列名 数据类型 auto_increment(自增) primary key

  本地创建表:CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

  外键:foreign key

  添加列:alter table 表名 add 列名 类型

  删除列:alter table 表名 drop column 列名

  修改列: alter table 表名 modify column 列名 类型;  -- 类型

      alter table 表名 change 原列名 新列名 类型; -- 列名,类型

  添加主键:alter table 表名 add primary key(列名);

  删除主键:alter table 表名 drop primary key;

       alter table 表名  modify  列名 int, drop primary key;

  添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);

  删除外键:alter table 表名 drop foreign key 外键名称

  修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;

  删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

 

a、条件
    select * from 表 where id > 1 and name != 'alex' and num = 12;
 
    select * from 表 where id between 5 and 16;
 
    select * from 表 where id in (11,22,33)
    select * from 表 where id not in (11,22,33)
    select * from 表 where id in (select nid from 表)
 
b、通配符
    select * from 表 where name like 'ale%'  - ale开头的所有(多个字符串)
    select * from 表 where name like 'ale_'  - ale开头的所有(一个字符)
 
c、限制
    select * from 表 limit 5;            - 前5行
    select * from 表 limit 4,5;          - 从第4行开始的5行
    select * from 表 limit 5 offset 4    - 从第4行开始的5行
 
d、排序
    select * from 表 order by 列 asc              - 根据 “列” 从小到大排列
    select * from 表 order by 列 desc             - 根据 “列” 从大到小排列
    select * from 表 order by 列1 desc,列2 asc    - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
 
e、分组
    select num from 表 group by num
    select num,nid from 表 group by num,nid
    select num,nid from 表  where nid > 10 group by num,nid order nid desc
    select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
 
    select num from 表 group by num having max(id) > 10
 
    特别的:group by 必须在where之后,order by之前
 
f、连表
    无对应关系则不显示
    select A.num, A.name, B.name
    from A,B
    Where A.nid = B.nid
 
    无对应关系则不显示
    select A.num, A.name, B.name
    from A inner join B
    on A.nid = B.nid
 
    A表所有显示,如果B中无对应关系,则值为null
    select A.num, A.name, B.name
    from A left join B
    on A.nid = B.nid
 
    B表所有显示,如果B中无对应关系,则值为null
    select A.num, A.name, B.name
    from A right join B
    on A.nid = B.nid
 
g、组合
    组合,自动处理重合
    select nickname
    from A
    union
    select name
    from B
 
    组合,不处理重合
    select nickname
    from A
    union all
    select name
    from B

 

 三、MySQL数据类型

数值类型

MySQL支持所有标准SQL数值数据类型。包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

类型大小范围(有符号)范围(无符号)用途
TINYINT 1 byte (-128,127) (0,255) 小整数值
SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度
浮点数值,不准确小数值,数值越大越不准确
DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度
浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值、精确的对于精确数值计算使用,因内部是按照字符串存储,银行

 

 日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

 

类型 大小
( bytes)
范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4

1970-01-01 00:00:00/2038

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYYMMDD HHMMSS 混合日期和时间值,时间戳

 

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。

类型大小用途
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
TINYBLOB 0-255 bytes 不超过 255 个字符的二进制字符串
TINYTEXT 0-255 bytes 短文本字符串
BLOB 0-65 535 bytes 二进制形式的长文本数据
TEXT 0-65 535 bytes 长文本数据
MEDIUMBLOB 0-16 777 215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295 bytes 极大文本数据

 

枚举ENUM和SET集合数据类型

 

 

类型 占用字节
最大成员数量
ENUM 1 or 2, 取决于枚举成员的数量 65535
SET 1|2|3|4|8,取决于集合成员的数量 6

 

 

<span class='wp_keywordlink_affiliate'><a href="https://www.168seo.cn/tag/mysql" title="View all posts in mysql" target="_blank">mysql</a></span>> create table consumer(
    -> id int,
    -> name varchar(50),
    -> sex enum('male','female','other'),
    -> level enum('vip1','vip2','vip3','vip4'),#在指定范围内,多选一
    -> fav set('play','music','read','study') #在指定范围内,多选多
    -> );
Query OK, 0 rows affected (0.03 sec)


<span class='wp_keywordlink_affiliate'><a href="https://www.168seo.cn/tag/mysql" title="View all posts in mysql" target="_blank">mysql</a></span>> insert into consumer values
    -> (1,'赵云','male','vip2','read,study'),
    -> (2,'赵云2','other','vip4','play');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

<span class='wp_keywordlink_affiliate'><a href="https://www.168seo.cn/tag/mysql" title="View all posts in mysql" target="_blank">mysql</a></span>> select * from consumer;
+------+---------+-------+-------+------------+
| id   | name    | sex   | level | fav        |
+------+---------+-------+-------+------------+
|    1 | 赵云    | male  | vip2  | read,study |
|    2 | 赵云2   | other | vip4  | play       |
+------+---------+-------+-------+------------+
rows in set (0.00 sec)

 

  

 

posted @ 2020-06-19 10:58  chiy  阅读(94)  评论(0编辑  收藏  举报