• 数据库


    Mysql数据库的基本配置

    登陆

    mysql -uroot -p

    提示输入密码,直接点击回车 select user(); 就显示用户信息

    注意net start是在管理员运行下才会有效的。

    修改密码

    先退出mysql,管理员身份运行cmd,尽管在输入命令的过程中出现了警告,但是登陆验证会发现已经修改成功。

    密码破解

    当你忘记密码时候,千万不要卸载重新安装,只需跳过授权库。

    不是在ODBC下修改,而是要在用户root 下修改

    统一字符编码

    s 查看编码

    在mysql的解压目录下新建my.ini文件,在文件中如下设置:

    [mysqld]

    character-set-server=utf8

    collation-server=utf8_general_ci

    [client]

    default-character-set=utf8

    [mysql]

    default-character-set=utf8

    重启服务,查看编码,就会得到想要的编码格式。

    操作文件夹---库操作

    系统数据库

    information_schema: 虚拟库,不占用磁盘空间,存储的是数据库    启动后的一些参数,如    用户表信息、列信息、权限信息、字符信    息等
    performance_schema: MySQL 5.5开始新增一个数据库:主要用于    收集数据库服务器性能参数,记录处理查询请求时发生的各种事    件、锁等现象
    mysql: 授权库,主要存储系统用户的权限信息
    test:     MySQL数据库系统自动创建的测试数据库

    创建数据库

    CREATE DATABASE 数据库名 charset utf8;

    数据库命名规则和python变量命名规则一致。

    数据库操作

    查看数据库

    show databases;

    show create database db1;

    select database();查看当前数据库

    选择数据库

    USE 数据库名

    删除数据库

    DROP DATABASE 数据库名;

    修改数据库

    alter database db1 charset utf8;

     

    操作文件---表操作

    存储引擎

    数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。

    存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)

    查看mysql支持的存储引擎

    MariaDB [(none)]> show enginesG #查看所有支持的存储引擎

     

    MariaDB [(none)]> show variables like 'storage_engine%';

    #    查看正在使用的存储引擎

     

     

    首先选择好数据库,然后进行表操作。

    use 数据库名; ---实现切换数据库

    select database();查看当前所在的数据库

    创建表

    create table 表名(

    字段名1 类型[(宽度) 约束条件],

    字段名2 类型[(宽度) 约束条件],

    字段名3 类型[(宽度) 约束条件]

    );

     

    注意:

    1. 在同一张表中,字段名是不能相同

    2. 宽度和约束条件可选

    3. 字段名和类型是必须的

    创建完成后,可以用show tables;查看所有的表名     可以用desc 表名;查看表结构

    可以用 select * from 表名;查看表内容

    插入数据

    1. insert into 表名 values (依次写上对应字段的数据)[,(依次写上对应字段的数据)...];
    2. insert into 表名(字段名1[,字段名2]) values (依照前边括号格式写) [,(依照前边括号格式)];

      以上两种方式都可以插入单条或多条数据,但是以第一种方式插入要按照字段顺序插入数据,而已第二种方式插入数据要按照表名后面的格式,不一定包含全部字段,不包含的字段会被设置为空。

      修改

      修改表结构

      1. 修改表名

      ALTER TABLE 表名

      RENAME 新表名;

       

      2. 增加字段

      ALTER TABLE 表名

      ADD 字段名 数据类型 [完整性约束条件…],

      ADD 字段名 数据类型 [完整性约束条件…];

      ALTER TABLE 表名

      ADD 字段名 数据类型 [完整性约束条件…] FIRST;

      ALTER TABLE 表名

      ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

       

      3. 删除字段

      ALTER TABLE 表名

      DROP 字段名;

       

      4. 修改字段

      ALTER TABLE 表名

      MODIFY 字段名 数据类型 [完整性约束条件…];

      ALTER TABLE 表名

      CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];

      ALTER TABLE 表名

      CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

      修改表内容---修改数据

      复制表

      复制表结构+记录 (key不会复制: 主键、外键和索引)

      mysql> create table new_service select * from service;

       

      只复制表结构

      mysql> select * from service where 1=2; //条件为假,查不到任何记录

      Empty set (0.00 sec)

      mysql> create table new1_service select * from service where 1=2;

      Query OK, 0 rows affected (0.00 sec)

      Records: 0 Duplicates: 0 Warnings: 0

       

      mysql> create table t4 like employees;

      删除表

      drop table 表名;

       

      not null default

      sex enum('male','female') not null default 'male'

      这样就设置了sex属性是'male''female'其中之一,如果在插入数据的时候没有指定sex,那么默认为'male'。

      unique key 唯一约束

      顾名思义,唯一约束,为了保证唯一性,那么就不能重复。

      单列唯一

      方式一:

      create table dept(

      id int,

      name char(10) unique

      );

      方式二:

      create table dept(

      id int,

      name char(10)

      unique(name)

      );

      联合唯一

      create table service(

      id int,

      ip char(15),

      port int,

      unique(ip,port)

      );

      ip不是唯一的,端口也不是唯一的,但是ip和端口合起来保证唯一的一个主机上的软件是唯一的。

      Primary key 主键约束

      主键约束:不为空且唯一

      单列主键

      create table dept(

      id int primary key,

      name char(10)

      );

       

      复合主键

      create table service(

      ip char(15),

      port int,

      primary key(ip,port)

      );

      自增约束

      一般表都会有一个编号id,要把id设置成自增就在创建表的时候这样设置:

      id int primary key auto_increment

      需要注意的是,在表创建成功之后可以插入数据的时候不带id,这样id会自动排序,而且不能重复,可是如果id设置为一个表中数据没有达到的id号,这是没有错误的,但是以后的插入就会在此基础上继续往上增。当要删除表内容的时候,如果用delete from 表名;那么只能删除内容,id号依然保存着,下次插入的时候还是在此基础上增长。所以用truncate 表名;才会达到我们想要的效果。

      Foreign key---建立表之间的关系

      先建立被关联的表并且保证被关联字段的唯一性。

       

      create table dept(

      id int primary key,

      name char(10),

      comment char(50)

      );

      create table emp(

      id int primary key,

      name char(10),

      sex enum('male','female'),

      dept_id int,

      foreign key(dept_id) reference dept(id) on delete cascade on update cascade

      );

       

      foreign key(dept_id) reference dept(id) 设置外键约束,本表中的dept_id 是参考的dept表中的id创建的。

      on delete cascade on update cascade 删除更新同步

      但是不建议在项目中设置外键,只需要在逻辑上实现表之间的关联,而在代码中实现一些操作。

       

  • 相关阅读:
    NSDate 与NSString的互相转换
    NSArray 基础
    IOS 使用自定义字体
    页面跳转添加动画
    Builder 模式
    树的子结构
    Singleton 模式
    合并两个排序的链表(递归算法)
    合并两个排序的链表(非递归)
    反转链表
  • 原文地址:https://www.cnblogs.com/yuliangkaiyue/p/9759184.html
Copyright © 2020-2023  润新知