参考:http://www.cnblogs.com/wupeiqi/p/5713315.html

单机程序(自己DB)
    
    单机程序(公用DB)
 
    MySQL:是用于管理文件的一个软件
        - 服务端软件
            - socket服务端
            - 本地文件操作
            - 解析指令【SQL语句】
        - 客户端软件(各种各样)
            - socket客户端
            - 发送指令
            - 解析指令【SQL语句】
        
        PS:
            - DBMS数据库管理系统
            - SQL语句
            
    技能:
        - 安装 服务端和客户端
        - 连接
        - 学习SQL语句规则;指示服务端做任意操作
        
 
    其他类似软件:
        关系型数据库:sqllite,db2,oracle,access,sql server MySQL
        非关系型数据库:MongoDB,redis
    
MySQL在linux下安装

在安装过程中还需要设置密码。

mysql -u root -p(连接)

show databases;(数据库)

show tables;(表)

create database 数据库名;

创建用户及授权

创建的用户登录

 操作文件夹、操作文件、操作文件内容

学习SQL语句规则

操作文件夹

create database db2;
create database db2 default charset utf8; (兼容中文)
show databases;
drop database db2;

操作文件
show tables;
create table t1(id int,name char(10)) default charset=utf8;
create table t1(id int,name char(10)) engine=innodb default charset=utf8;        #engine = innodb,传输时中断,数据不会出错。出错回滚回原状态。
create table t3(id int auto_increment primary key,name char(10))engine=innodb default charset=utf8;

create table t1(
        列名 类型 null,     #可以为空
        列名 类型 not null,    #不允许为空
        列名 类型 not null auto_increment primary key,
            id int,
            name char(10)

)engine=innodb default charset=utf8;

操作文件中内容

在表中插入数据:insert into t1(id,name) values(1,'alex');

可以为空null

auto_increment,id自增

一个表中只能有一个自增列,自增的,必须是主键,auto_increment primary key,primary key对该列进行约束,不能重复,不能为空,可以快速查找。

默认值

默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值

            create table tb1(
nid int not null defalut 2, #默认值
num int not null
)

清空表

delete from t2;  #清除表中的内容,再添加时会从上一次自增id处开始。

truncate table t1; #清除表中的内容,再添加时会从1处开始,而且速度块。

delete from t1 where id<6;

改:update t1 set age = 18 where age =17;         #age 17全改为18

删除表

drop table t1;

表内容操作

1、增

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

2、删

1
2
delete from
delete from where id=1 and name'alex'

3、改

1
update set name 'alex' where id>1

4、查

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

修改表

 
添加列: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;
 
改变添加位置: alter table 表名 auto_increment = 3;

数据类型         
                数字:
                    tinyint
                    int
                    bigint
                    
                    FLOAT
                        0.00000100000123000123001230123
                    DOUBLE
                        0.00000000000000000000100000123000123001230123
                        0.00000100000123000000000000000
                    decimal(小数时推荐)  num decimal(10,5)  (总位数,精确数)
                        0.1
                    
                字符串:
                    最多255个字符
                    char(10)      速度快()
                        root    未沾满则填充满        
                    varchar(10)   节省空间
                        root  占四个位置,节省空间,定长
                                                                                           PS: 创建数据表定长列往前放
                    
                    text (长度比char大)                
                    上传文件:  
                        文件存硬盘(过大文件不适合放数据库)
                        db存路径
                时间类型
                    DATETIME
            
                enum枚举   插入时只能选择枚举中一个
                set集合    只能插入集合set('a', 'b', 'c', 'd')中的任意组合'a, b'

外键:

department与id对应。

外键:
 节省空间
        create table userinfo(
            uid int auto_increment primary key,        自增
            name varchar(32),
            department_id int,
            xx_id int,
            constraint fk_user_depar foreign key (department_id) references department(id)          #约束department 与 id对应
        )engine=innodb default charset=utf8;
        
        create table department(
            id bigint auto_increment primary key,
            title char(15)
        )engine=innodb default charset=utf8;

 自增列起始值与步长

alter table 表名 auto_increment = 20;

基于会话级别:
        show session variables like 'auto_inc%';    查看全局变量
        set session auto_increment_increment=2;     设置会话步长,该设置的步长只在当前窗口下有效

基于全局级别:
        show global variables like 'auto_inc%';        查看全局变量
        set global auto_increment_increment=2;         设置会话步长

唯一索引         能确定某个数据列将只包含彼此各不相同的值(如身份证号)
        create table t1(
            id int ....,
            num int,
            xx int,
            unique 唯一索引名称 (列名num,列名xx),                                  #联合唯一索引
            constraint ....
        )
        #

id num xx
        1   1   1  联合索引唯一   这一行
        2   1   2                          与这一行不同
        PS:  
            唯一:
                约束不能重复(可以为空)
                PS: 主键不能重复(不能为空)
            加速查找

打开和停止服务

查看新建的数据库nzp

练习:http://www.cnblogs.com/wupeiqi/articles/5729934.html

答案:https://www.cnblogs.com/wupeiqi/articles/5748496.html

ERROR 1215 (HY000): Cannot add foreign key constraint 解决方法

因为你要添加外键时,你的外键类型是int

而引用的主键类型也是 int,如果你的主键设置auto_increment(那么你的字段类型实际上是unsigned_int)

主键,外键类型不一致,所以无法添加外键。

所以此时将我们的外键字段类型改为无符号整数。那么就可以成功添加外键了。

MySQL(安装,服务,创建用户及授权)的更多相关文章

  1. 制作MySQL的Windows服务+创建用户及授权

         在上一篇随笔中详述了MySQL的Windows 64位版本的安装,以及初始化操作.启动服务端.客户端连接.一些基本的文件操作等.然而在进行这些操作的时候,需要我们去输入一长串的路径和命令才能 ...

  2. 命令行下创建MySQL数据库与创建用户以及授权

    先以root用户登录mysql: C:\Users\XXX>mysql -u root -p 输入密码后登录,接下来操作如下: 1.创建数据库 语法:create schema [数据库名称] ...

  3. MySQL数据库(1)- 数据库概述、MySQL的安装与配置、初始SQL语句、MySQL创建用户和授权

    一.数据库概述 1.什么是数据(Data) 描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机. 在计 ...

  4. mysql 创建用户及授权(2)

    一. MySQL初始密码 新安装的MySQL默认是没有密码的,设置初始密码可以用以下命 mysqladmin -u root password 'new-password' mysqladmin -u ...

  5. CentOS如何安装MySQL8.0、创建用户并授权的详细步骤

    # 安装相关软件 yum install -y gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel make cmake # 获取MySQL ...

  6. Mysql基础(一):Mysql初识、基本指令、数据库密码相关、创建用户及授权

    来源:https://www.cnblogs.com/liubing8/p/11432534.html 目录 数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 1. 数据库概述 ...

  7. 数据库01 /Mysql初识、基本指令、数据库密码相关、创建用户及授权

    数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 目录 数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 1. 数据库概述 2. 数据库管理系统/DBMS ...

  8. MySQL创建用户与授权(CentOS6.5)

    1.相关SQL语句 #创建用户与授权方法 ##本地访问 create user 'zend'@'localhost' IDENTIFIED BY '123456'; grant ALL privile ...

  9. python 全栈开发,Day63(子查询,MySQl创建用户和授权,可视化工具Navicat的使用,pymysql模块的使用)

    昨日内容回顾 外键的变种三种关系: 多对一: 左表的多 对右表一 成立 左边的一 对右表多 不成立 foreign key(从表的id) refreences 主表的(id) 多对多 建立第三张表(f ...

随机推荐

  1. Linux安装和配置Vim7.4

    一.简介 Vim是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性,Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体.1999 年Emacs被选为L ...

  2. 原生JS 实现元素排序

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Spring Boot集成Quartz注入Spring管理的类

    摘要: 在Spring Boot中使用Quartz时,在JOB中一般需要引用Spring管理的Bean,通过定义Job Factory实现自动注入. Spring有自己的Schedule定时任务,在S ...

  4. JavaScript 静态方法和实例方法

    总结: 直接定义在构造函数上的方法和属性是静态的,  定义在构造函数的原型和实例上的方法和属性是非静态的 静态方法: function ClassA(){ //定义构造函数 }; ClassA.fun ...

  5. 2018.10.15 bzoj3564: [SHOI2014]信号增幅仪(坐标处理+最小圆覆盖)

    传送门 省选考最小圆覆盖? 亦可赛艇(你们什么都没看见) 在大佬的引领下成功做了出来. 就是旋转坐标使椭圆的横轴跟xxx轴平行. 然后压缩横坐标使得其变成一个圆. 然后跑最小覆盖圆就可以了. 注意题目 ...

  6. 2018.10.05 NOIP模拟 阶乘(简单数论)

    传送门 签到题. 直接把所有数先质因数分解. 同时统计每一个在阶乘中会出现的质数出现的最少次数. 然后对于每一个这样的质数,我们求出满足其出现质数的m的最小值,然后求出所有m的最大值. 求m的时候可以 ...

  7. docker 部署nginx 使用keepalived 部署高可用

    一.体系架构 在Keepalived + Nginx高可用负载均衡架构中,keepalived负责实现High-availability (HA) 功能控制前端机VIP(虚拟网络地址),当有设备发生故 ...

  8. hdu-1129(模拟题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1129 注意:c_code[i]=(p_code[i*k%n]-i)%28; #include<i ...

  9. python读写操作

    import sys 1 def test(): a=int(input()) x=[int(i) for i in input().split(' ')] y=[int(j) for j in sy ...

  10. ansible api 调用出现ssh交互式输入

    发现在删掉 ~/.ssh/know_hosts 之后运行 ansible api 会出现以下提示 The authenticity of host '10.1.*.* (10.1.*.*)' can' ...