MySQL基础

Posted sjingx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL基础相关的知识,希望对你有一定的参考价值。

一、mysql介绍

二、mysql的安装

  1. windows
  2. os x
  3. linux

三、制作MySQL的windows服务(以下mysql命令需要添加环境变量才可以执行)

  1. 初始化:

    mysqld --initialise-insecure (--user=mysql)

  2. 启动服务端:

    mysqld

  3. 客户端连接:

    mysql -u root -p (客户端登入)

  4. 发送指令

    show databases;
    create database db1;

  5. 制作MySQL的Windows服务:

    mysqld --install (添加MySQL服务)
    mysqld --remove (删除MySQL服务)

  6. 创建好MySQL服务之后可以使用

    net start MySQL(开启MySQL服务)
    net stop MySQL(关闭MySQL服务)

四、MySQL创建用户以及授权

  1. 创建用户:

    create user ‘alex‘@‘192.168.1.1‘ identified by ‘123456‘;
    create user ‘alex‘@‘192.168.1.%‘ identified by ‘123456‘;
    create user ‘alex‘@‘%‘ identified by ‘123456‘;

    创建用户alex,ip地址为192.168.1.1,密码为123456

    192.168.1.%中%表示任一数字(2~254)

  2. 授权(设置什么权限,设置给什么用户):

    grant select,insert,update on db1.* to ‘alex‘@‘%‘;
    grent all privileges on db1.t1 to ‘alex‘@‘%‘;

    db1.t1 -----> t1为db1数据库中的一个表

  3. 数据库的导入和导出

    导出现有数据库数据:
    mysqldump -u 用户名 -p 密码 数据库名称 > 导出文件路径

五、MySQL操作数据库以及数据表

  1. 操作数据库(文件夹)

    create database db2 default charset utf8;
    创建数据库db2(并设置编码格式为utf8)

    show databases;
    查看所有数据库

    use db1;
    打开数据库db1

    drop database db2;
    删除数据库db2

  2. 操作数据表

    show tables;
    查看该数据库所有表

    create table t2(
        id int auto_increment,
        name char(10)
    ) engine=innodb default charset=utf8;
    
    创建表,列名为id,name,并设置事务引擎为innodb,编码格式为utf8,int为自增
    auto_increment 表示:自增
    primary key 表示:约束(不能重复且不能为空);加速查找

    引擎:engine=innodb 支持事务
    应用场景:A转账给B,A减去100元,这时候服务器宕机,B本来要加100元却没有加100元,转账失败,这时候有innodb情况下,可以回滚

    拓展innodb:???

    delete from t1;
    truncate table t1;
    清空表

    drop table t1;
    删除表

  3. 操作数据表内容

    插入数据
    insert into t1(id,name) values(1,‘alex‘);

    查看数据
    select * from t1;

    修改数据
    update t1 set age=18;
    update t1 set age=18 where age=17;

    删除数据
    delete from t1 where id<6;

insert into tb12(name,age) values(‘alex‘,12);
insert into tb12(name,age) values(‘alex‘,12),(‘egon‘,25);
insert into tb12(name,age) select name,age from tb11; 复制某张表的特定内容

delete from tb12;
delete from tb12 where id != 2 

update tb12 set name=‘alex‘ where id>12 and name=‘xx‘
update tb12 set name=‘alex‘,age=19 where id>12 and name=‘xx‘

select * from tb12;
select id,name from tb12;
select id,name from tb12 where id>10 or name=‘xxx‘;
select id,name as cname from tb12 where id>10 or name=‘xxx‘;
select id,name,11 from tb12

其他方式查

select * from tb12 where id !=1;
select * from tb12 where id in (1,5,12);
select * from tb12 where id not in (1,5,12);
select * from tb12 where id between 5 and 12;

select * from tb12 where id like "a%"; 以a开头的所有(多个字符串)
select * from tb12 where id like "a_"; 以a开头的所有(一个字符)

限制

[limit:限制你想要从表中提取的行数]
select * from tb12 limit 0,10; 其中0代表从什么位置开始取,10代表取几个数字
select * from tb12 limit 10,10;

page = input(‘>>>>‘)
page = int(page)
(page - 1) * 10

select * from tb12 limit 0,10 第一页
select * from tb12 limit 10,10 第二页

排序

select * from tb12 order by id desc; 大到小
select * from tb12 order by id asc; 小到大

select * from tb12 order by id desc limit 10; 取后10条数据

分组

select count(id),max(id),part_id from userrinfo5 gourp by part_id ha

****如果对于聚合函数结果进行二次筛选时,必须使用having****
聚合函数---count,max,min,sum,avg

连表操作

select * from student,class where student.class_id = class.cid
select * from student left join class on student.class_id = class.cid (效果是一样的,但是推荐使用第二个)

六、数据表基本数据类型

  1. 数字类型:
类型 大小 用途
tingint 1字节 小整数值
int 4字节 大整数值
bigint 8字节 大整数值
float 4字节 单精度,浮点数
double 8字节 双精度,浮点数
decimal decimal(M,D),如果M>D,为M+2否则为D+2 小数值
  1. 时间类型:
类型 大小 格式 用途
date 3字节 YYYY-MM-DD 日期值
time 3字节 HH:MM:SS 时间值或持续时间
year 1字节 YYYY 年份值
datetime 8字节 YYYY-MM-DD HH:MM:SS 混合日期
  1. 字符类型:
类型 大小 用途
char 0-255字节 定长字符串
varchar 0-65535字节 变长字符串

varchar和char的区别
1. char的长度是不可变的, varchar的长度是可变
2. 定义一个char(10)和varchar(10),存入的数据都是‘alex‘,char所占长度依然10,出了alex之后还有6个空格,而varchar所占长度改为4
3.char的存取速度还是要比varchar快
4.char的存储方式,对英文字符(ASCII)占用1个字节,对一个汉字占用2个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节。


























以上是关于MySQL基础的主要内容,如果未能解决你的问题,请参考以下文章

linux中怎么查看mysql数据库版本

从mysql的片段中加载ListView

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段

使用 json rereiver php mysql 在片段中填充列表视图

关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段