首页 > 代码库 > mysql学习1

mysql学习1

1.什么是数据库?

数据的仓库,如在ATM的示例中创建了一个db目录,称其为数据库

 

2.安装 

下载
http://dev.mysql.com/downloads/mysql/

安装
windows:
(1)解压:如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录;
(2)初始化:MySQL解压后的bin目录下有一大堆可执行文件,执行如下命令初始化数据
D:\mysql\mysql5.7.16\mysql-5.7.16-winx64\bin\mysql --initialize-insecure
(3)启动MySQL服务:
#进入可执行文件目录
cd D:\mysql\mysql5.7.16\mysql-5.7.16-winx64\bin
#启动MySQL服务
mysql
(4)启动MySQL客户端并连接MySQL服务
由于初始化数据时未给root账户设置密码
#进入可执行文件目录

cd D:\mysql\mysql5.7.16\mysql-5.7.16-winx64\bin
            #连接MySQL服务器
mysql -u root -p
#提示输入密码,直接回车即可

见如下图表示安装成功:

技术分享

2.1添加环境变量

 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】

以后再启动服务并连接时,仅需:

#启动MySQL服务,在终端输入
mysqld
#连接MySQL服务,在终端输入
mysql -u root -p

 

3.数据库操作

(1)显示数据库

show databases; 

(2)创建数据库 

create database db2;
create database db2 default charset utf8;

#查看数据库

show databases;

#使用数据库

use 数据库名称

#删除数据库名称为db2的数据库
drop database db2;

(3)用户管理

#创建用户
create user "alex"@"192.168.1.1" ["用户名”@“IP地址"] identified by "123123"[“密码”];

#删除用户
drop user  "alex"@"192.168.1.1"["用户名”@“IP地址"];

#修改用户
rename user "alex"@"192.168.1.1["用户名”@“IP地址"];to "alex1"@"192.168.1.2["新用户名”@“新IP地址"]

#修改密码
set password for "alex"@"192.168.1.1["用户名”@“IP地址"] = Password("新密码")

(4)授权管理

#查看权限
show grants for "用户"@“IP地址”

#授权
grant 权限 on 数据库.表 to "用户"@“IP地址”

#取消权限
revoke 权限 on 数据库.表 from "用户"@“IP地址”

 

4.基本数据表

( 1 )创建表

create table 表名(
    列名  类型  是否可以为空,
    列名  类型  是否可以为空
)engine=innodb default charset=utf8

( 2 )删除表

drop table 表名

(3)清空表

delete from 表名
truncate table 表名

(4)修改表

添加列: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;

 

5.基本数据类型

MySQL的数据类型大致分为:数值,时间和字符串

(1)整数类型

tinyint, smallint, mediumint, int/intrger, bigint

(2)浮点数类型

float, double

(3)日期时间

date, datetime, timestamp, time, year

技术分享

(4)字符串类型

char    速度快

varchar   节省空间

 

 6.表内容操作

(1)增

insert into 表 (列名,列名...) values (值,值,值...)
insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)
insert into 表 (列名,列名...) select (列名,列名...) from 表 

(2)删

delete from 表
delete from 表 where id=1 and name=‘alex‘

(3)改

update 表 set name = ‘alex‘ where id>1 

(4)查

select * from 表
select * from 表 where id > 1
select nid,name,gender as gg from 表 where id > 1

(5)其他

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学习1