mysql

数据库管理软件

Mysql  关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成

表头(header): 每一列的名称;

  • 列(row): 具有相同数据类型的数据的集合;
  • 行(col): 每一行用来描述某个人/物的具体信息;
  • 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
  • 键(key): 表中用来识别某个特定的人物的方法, 键的值在当前列中具有唯一性。

MySQL 服务端操作

在 Windows 命令提示符下运行:

启动: net start MySQL

停止: net stop MySQL

卸载: sc delete MySQL

MySQL 客户端操作

Windows cmd 下 键入

启动:  mysql  -h主机名 -u用户名 -p密码 

退出: exit/quit

创建本机登录         create user 'zc'@'localhost' identified by '123456'; 

创建指定ip登录      create user 'zc'@'192.168.11.32' identified by '123456';

创建相同网段登录  create user 'zc'@'192.168.11.%' identified by '123456'; 

查看当前用户 select user();

查看所有用户 select host,user from mysql.user;

删除本机账户 drop user 'zc'@'localhost';

删除指定IP     drop user 'zc'@'192.168.11.32';

用户授权
授权 zc  对mysql中的user表有所有的权限
grant all on mysql.user to 'zc'@'localhost';
授权 zc  对mysql中的user表用查的权限
grant select on mysql.user to 'zc'@'localhost';
授权 zc  对mysql中的user表有增和查的权限
grant select,insert on mysql.user to 'zc'@'localhost';
授权 zc  对mysql中的user表有增改查的权限
grant select,insert,update on mysql.user to 'zc'@'loccalhost';
授权 zc  对mysql中的user表有增删改查的权限
grant select,insert,update,delete on mysql.user to 'zc'@'localhost';
授权 zc  对所有的库和表都有查和增的权限
grant select,insert on *.* to 'zc'@'localhost';

刷新权限
flush privileges;

查看权限
show grants for 'zc'@'192.168.11.%';

创建库         create database zc charset utf-8;  show databases;
库不存在再创建  create database if not exists zc;
使用admin建库  mysqladmin -uroot -p密码 create zc  
删库          drop database zc;  mysqladmin -u root -p密码 drop zc
create table if not exists `zc`(
`id` int unsigned auto_increment, 
`title` varchar(100) not null,
`author` varchar(40) not null,
`date` date,
primary key ( `id` )
)engine=InnoDB default charset=utf8;

auto_increment  #定义自增属性,一般用于主键,数字会自动加1
not null  #设置字段不能为空,操作是输入改字段为空就会报错
primary key  #定义列为主键,可以使用多列来定义主键,列间以逗号分隔
engine  #设置存储引擎
charset  #设置编码

查看表结构  desc 表名;
修改某个字段属性 
alter table 表名 modify name char(4); #将char(1)更改为char(4);
修改字段名称
alter table 表名 change name(原名) stu_name(新名) char(4);
use 库名; --创建表-- show tables; --数据增删改查insert into/delete from/update/select * from 表名 where 条件 --改表中字段类型modify/改字段名称change原名 新名  --删表 drop table 表名;
增  insert into 表名(A B C) values (a,b,c);
查  select * from 表名 where 条件;
改  update 表名 set stu_name = '山西';
删  delete from 表名 where id=1;  

清空表
delete from 表名;  #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
truncate table test; #删除速度比上一条快,且直接从零开始
删除表
drop table 表名;

显示数据表的详细索引信息,包括PRIMARY KEY(主键)
show index from 表名;
按列打印 zc 数据库中以 zc 开头的表的信息(查看某个表就把 runoob% 变成表名)
show table status from zc like 'zc%'G;

显示数据库  show databases;

创建数据库: create database 名称 default charset utf8 COLLATE utf8_general_ci;

CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

使用库: use 库名;

创建表: create table 表名(字段 类型) ENGINE=InnoDB DEFAULT CHARSET=utf8;

create table tb(
id int not null defalut 2,
num int not null
);
       自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
            create table tb1(
                id int not null auto_increment primary key,
                num int null
            )
            或
            create table tb1(
                id int not null auto_increment,
                num int null,
                index(id)
            )
            注意:1、对于自增列,必须是索引(含主键)。
                 2、对于自增可以设置步长和起始值
                     show session variables like 'auto_inc%';
                     set session auto_increment_increment=2;
                     set session auto_increment_offset=10;

                     show global  variables like 'auto_inc%';
                     set global auto_increment_increment=2;
                     set global auto_increment_offset=10;

 

 外键,一个特殊的索引,只能是指定内容
            creat table color(
                nid int not null primary key,
                name char(16) not null
            )

            create table fruit(
                nid int not null primary key,
                smt char(32) null ,
                color_id int not null,
                constraint fk_cc foreign key (color_id) references color(nid)
            )

一个表中只能有一个自增的列,而且自增列必须是一个主键 

表内容操作

增
insert into 表 (列名,列名...) values (值,值,值...)
insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)
insert into 表 (列名,列名...) select (列名,列名...) from 表
删
delete from 表
delete fromwhere id=1 and name='alex'
改    
update 表 set name = 'alex' where id>1select * fromselect * fromwhere id > 1
select id,name,gender as g fromwhere id > 1
a、条件
    select * fromwhere id > 1 and name != 'alex' and num = 12;
    select * fromwhere id between 5 and 16;
    select * fromwhere id in (11,22,33)
    select * fromwhere id not in (11,22,33)
    select * fromwhere id in (select nid from 表)
 
 
b、通配符
    select * fromwhere name like 'ale%'  - ale开头的所有(多个字符串)
    select * fromwhere name like 'ale_'  - ale开头的所有(一个字符)
 
  
c、限制
    select * from 表 limit 5;            - 前5行  (包括第5行)
    select * from 表 limit 4,5;          - 从第4行开始的5行(第4行后的5行,不包括第4行)
    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 fromwhere 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中的数据类型

  • 数字类型:
    • 整数: tinyint、smallint、mediumint、int、bigint
    • 浮点数: float、double、real、decimal
  • 日期和时间: date、time、datetime、timestamp、year
  • 字符串类型:
    • 字符串: char、varchar
    • 文本: tinytext、text、mediumtext、longtext
    • 二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob

1、整型

tinyint(m) 1个字节  范围(-128~127)
smallint(m) 2个字节  范围(-32768~32767)
mediumint(m) 3个字节  范围(-8388608~8388607)
int(m) 4个字节  范围(-2147483648~2147483647)
bigint(m) 8个字节  范围(+-9.22*10的18次方)

取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。 int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个m有什么用。

2、浮点型(float和double)

MySQL数据类型 含义
float(m,d) 单精度浮点型    8位精度(4字节)        m总个数,d小数位
double(m,d) 双精度浮点型    16位精度(8字节)       m总个数,d小数位

设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。

3、定点数

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。

4、字符串(char,varchar)

char和varchar:

1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。

2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。

3.char类型的字符串检索速度要比varchar类型的快。

5.日期时间类型

MySQL数据类型 含义
date 日期 '2008-12-2'
time 时间 '12:25:36'
datetime 日期时间 '2008-12-2 22:06:44'
timestamp 自动存储记录修改时间

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

数据类型的属性

MySQL关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键
AUTO_INCREMENT 自动递增,适用于整数类型
UNSIGNED 无符号
CHARACTER SET name 指定一个字符集

原文地址:https://www.cnblogs.com/zhangchen-sx/p/10262430.html