Mysql 基础操作

安装mysql

ubuntu安装mysql命令

1 sudo apt-get install mysql-server
2 sudo apt-get install mysql-client
3 sudo apt-get install libmysqlclient-dev

第一条命令中间会让用户设置密码,一定不能回车跳过!!!!!

windows直接官网下载免安装版本

安装教程

忘记密码时的教程(适用于5.7)(windows)

1.先关闭mysql

 

net stop mysql

 

2.运行

mysqld_safe --skip-grant-tables

注意是mysqld,不是mysql

此时窗口无反应,不要关闭窗口,打开一个新窗口

3.进入mysql

mysql -p

输入密码时直接回车

4.更改密码

 

mysql> update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';

 

然后

mysql> flush privileges;
mysql> quit;

用新密码进入之后若提示错误,可重新设置密码

mysql> set password=password("123456");
mysql> flush privileges;

数据库操作

启动

启动服务器:

net start mysql 
或
C:\mysql-5.7.16-winx64\mysql-5.7.16-winx64\mysql
mysql.server start 
/etc/init.d/mysql start

客户端连接:

mysql -u root -p

显示与创建

 

show databases;             # 查看当前Mysql都有那些数据,根目录都有那些文件夹
create database 数据库名;   # 创建文件夹
use 数据库名;               # 使用选中数据库,进入目录
show tables;                # 查看当前数据库下都有那些表,
create table 表名(nid int,name varchar(20), pwd varchar(64)); # 创建数据库表
select * from 表名;         # 查看表中的所有数据
desc 表名;               # 查看表结构
insert into 表名(nid,name,pwd) values(1,'alex','123');  # 插入数据
-- select * from 表名;

用户管理

创建用户
    create user '用户名'@'IP地址' identified by '密码';
删除用户
    drop user '用户名'@'IP地址';
修改用户
    rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;
修改密码
    set password for '用户名'@'IP地址' = Password('新密码');

show grants for '用户'@'IP地址'                  -- 查看权限
grant  权限 on 数据库.表 to   '用户'@'IP地址'      -- 授权   库.*所有表
revoke 权限 on 数据库.表 from '用户'@'IP地址'      -- 取消权限
select       # 查 
all privileges  除grant外的所有权限

连接指定ip

mysql -u root -h 192.168.1.1 -p

SQL语句

数据库级别

 

SHOW DATABASES;
CREATE DATABASE 数据库名称;
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;   # 设置utf8编码
USE 数据库名称;
drop database 数据库名称;

 

数据表级别

1.创建表

show tables;
desc tb1;
create table tb1(nid int, name varchar(10)); # 创建表
create table 表名(
    列名 类型 是否可以为空(默认可以为空),
)ENGINE=InnoDB DEFAULT CHARSET=utf8
是否可空,null表示空,非字符串
            not null    - 不可空
            null        - 可空
是否可以为空
默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
            create table tb1(
                nid int not null defalut 2,
                num int not null
            )
默认值

 

 自增(重要)

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

                     shwo global  variables like 'auto_inc%';
                     set global auto_increment_increment=2;
                     set global auto_increment_offset=10;
自增
主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。不可为空
            create table tb1(
                nid int not null auto_increment primary key,
                num int null
            )
            或
            create table tb1(
                nid int not null,
                num int not null,
                primary key(nid,num)
            )
主键
外键,一个特殊的索引,只能是指定内容
            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)
            )
外键

外键详细

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;

 

基本数据类型

字符串

char() 固定长度,占用大,但是处理速度快

varchar() 不固定长度,但是速度慢

enum 枚举 相当于众多内容中单选

set 集合 可以多选

数据行(表内容)操作

1.增

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

 2.删

delete fromdelete fromwhere id=1 and name='alex'

3.改

updateset name = 'alex' where id>1

4.查

select * from 表   # 效率低
select * fromwhere id > 1
select nid,name,gender as gg fromwhere id > 1

5.其他

 

 1 a、条件
 2     select * fromwhere id > 1 and name != 'alex' and num = 12;
 3  
 4     select * fromwhere id between 5 and 16;  -- 5和16之间的
 5  
 6     select * fromwhere id in (11,22,33)
 7     select * fromwhere id not in (11,22,33)
 8     select * fromwhere id in (select nid from 表)
 9 
10 
11 b、通配符
12     select * fromwhere name like 'ale%'  - ale开头的所有(多个字符串)
13     select * fromwhere name like 'ale_'  - ale开头的所有(一个字符)
14 
15 c、分页
16     select * from 表 limit 5;            - 前5行
17     select * from 表 limit 4,5;          - 从第4行开始的5行  即是从第5行开始
18     select * from 表 limit 5 offset 4    - 从第4行开始的5行
19 
20 d、排序
21     select * fromorder byasc              - 根据 “列” 从小到大排列
22     select * fromorder bydesc             - 根据 “列” 从大到小排列
23     select * fromorder by 列1 desc,列2 asc    - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
24 
25 e、分组
26     select num fromgroup by num
27     select num,nid fromgroup by num,nid
28     select num,nid fromwhere nid > 10 group by num,nid order nid desc
29     select num,nid,count(*),sum(score),max(score),min(score) fromgroup by num,nid
30  
31     select num fromgroup by num having max(id) > 10
32  
33     特别的:group by 必须在where之后,order by之前
34 
35 
36 
37 f、连表
38     无对应关系则不显示
39     select A.num, A.name, B.name
40     from A,B
41     Where A.nid = B.nid
42  
43     无对应关系则不显示
44     select A.num, A.name, B.name
45     from A inner join B
46     on A.nid = B.nid
47  
48     A表所有显示,如果B中无对应关系,则值为null
49     select A.num, A.name, B.name
50     from A left join B
51     on A.nid = B.nid
52  
53     B表所有显示,如果B中无对应关系,则值为null
54     select A.num, A.name, B.name
55     from A right join B
56     on A.nid = B.nid
57 
58 g、组合
59     组合,自动处理重合
60     select nickname
61     from A
62     union
63     select name
64     from B
65  
66     组合,不处理重合
67     select nickname
68     from A
69     union all
70     select name
71     from B
72 
73 count() 求数量
74 avg() 求平均数
75 sum() 求和
76 distinact 去重

 

IF(expr1,expr2,expr3)

如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

 

转载于:https://www.cnblogs.com/bw13/p/5981605.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值