zoukankan      html  css  js  c++  java
  • 初识数据库

    一、数据库管理软件的由来

      之前的数据永久保存都是保存在文件中,而一个文件只能保存在一台机器上,且程序的所有组件都运行在同一台机器上,这种方式存在以下问题:

      1、程序所有的组件不可能运行在同一台机器上

      因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的, 受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。 于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。

      2、数据安全问题

      根据1的描述,我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。 但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。 于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现), 即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。

      3、并发

      根据2的描述,我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:

      1.远程连接(支持并发) 2.打开文件 3.读写(加锁) 4.关闭文件

    总结:

      我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写

    二、数据库概述

    1、什么是数据?

      描述事物的符号记录称为数据。描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机。

      在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录

    2、什么是数据库(DataBase)?

      数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放

      过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用

      数据库是长期存放在计算机内、有组织、可共享的数据即可。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。

    3、什么是数据库管理系统(Database Management System)?

      数据库管理系统——一个系统软件,作用:1、解决科学地组织和存储数据;2、用来高效获取和维护数据

      如MySQL、Oracle、SQLite、Access、MS SQL Server

      mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。
      oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
      sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。

    4、数据库服务器、数据管理系统、数据库、表和记录的关系

      数据库服务器:运行数据库管理软件的计算机

      数据库管理系统:一个软件

      表:即文件,用来存放多行内容/多条记录

      数据库:文件夹,用来组织文件/表

      记录:事物一系列典型的特征

      数据:描述事物特征的符号

    三、MySQL介绍

      MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

    1、MySQL是什么?

      myql就是一个基于socket编写的C/S架构的软件。

      客户端软件

        mysql自带:mysql命令,mysqldump命令等

        python模块:如pymysql

    2、数据库管理软件分类

      一类是关系型数据库:如sqllite,db2,oracle,access,sql server,MySQL,主要特征是:需要有表结构,sql语句通用。

      一类是非关系型数据库:mongodb,redis,memcache,主要特征:是key-value存储的,没有表结构

    四、下载安装

      Windows版本

    #1、下载:MySQL Community Server 5.7.16
    http://dev.mysql.com/downloads/mysql/
    
    #2、解压
    如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:mysql-5.7.16-winx64
    
    #3、添加环境变量
    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
     
    #4、初始化
    mysqld --initialize-insecure
    
    #5、启动MySQL服务
    mysqld # 启动MySQL服务
    
    #6、启动MySQL客户端并连接MySQL服务
    mysql -u root -p # 连接MySQL服务器
    安装
    上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:
    
    
    
    注意:--install前,必须用mysql启动命令的绝对路径
    # 制作MySQL的Windows服务,在终端执行此命令:
    "c:mysql-5.7.16-winx64inmysqld" --install
     
    # 移除MySQL的Windows服务,在终端执行此命令:
    "c:mysql-5.7.16-winx64inmysqld" --remove
    
    
    
    注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
    # 启动MySQL服务
    net start mysql
     
    # 关闭MySQL服务
    net stop mysql
    将MySQL服务制作成window服务

      Linux版本

    #二进制rpm包安装
    yum -y install mysql-server mysql
    
    # centOS7下安装方法如下:(作者避免mysql被闭源)
    yum -y install mariadb-server mariadb

      源码安装:

    1.解压tar包
    cd /software
    tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
    mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql-5.6.21
    
    2.添加用户与组
    groupadd mysql
    useradd -r -g mysql mysql
    chown -R mysql:mysql mysql-5.6.21
    
    3.安装数据库
    su mysql
    cd mysql-5.6.21/scripts
    ./mysql_install_db --user=mysql --basedir=/software/mysql-5.6.21 --datadir=/software/mysql-5.6.21/data
    
    4.配置文件
    cd /software/mysql-5.6.21/support-files
    cp my-default.cnf /etc/my.cnf
    cp mysql.server /etc/init.d/mysql
    vim /etc/init.d/mysql   #若mysql的安装目录是/usr/local/mysql,则可省略此步
    修改文件中的两个变更值
    basedir=/software/mysql-5.6.21
    datadir=/software/mysql-5.6.21/data
    
    5.配置环境变量
    vim /etc/profile
    export MYSQL_HOME="/software/mysql-5.6.21"
    export PATH="$PATH:$MYSQL_HOME/bin"
    source /etc/profile
    
    6.添加自启动服务
    chkconfig --add mysql
    chkconfig mysql on
    
    7.启动mysql
    service mysql start
    
    8.登录mysql及改密码与配置远程访问
    mysqladmin -u root password 'your_password'     #修改root用户密码
    mysql -u root -p     #登录mysql,需要输入密码
    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;     #允许root用户远程访问
    mysql>FLUSH PRIVILEGES;     #刷新权限
    mysql_linux源码安装
    1. 解压
    tar zxvf  mariadb-5.5.31-linux-x86_64.tar.gz   
    mv mariadb-5.5.31-linux-x86_64 /usr/local/mysql //必需这样,很多脚本或可执行程序都会直接访问这个目录
    
    2. 权限
    groupadd mysql             //增加 mysql 属组 
    useradd -g mysql mysql     //增加 mysql 用户 并归于mysql 属组 
    chown mysql:mysql -Rf  /usr/local/mysql    // 设置 mysql 目录的用户及用户组归属。 
    chmod +x -Rf /usr/local/mysql    //赐予可执行权限 
    
    3. 拷贝配置文件
    cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf     //复制默认mysql配置 文件到/etc目录 
    
    4. 初始化
    /usr/local/mysql/scripts/mysql_install_db --user=mysql          //初始化数据库 
    cp  /usr/local/mysql/support-files/mysql.server    /etc/init.d/mysql    //复制mysql服务程序 到系统目录 
    chkconfig  mysql on     //添加mysql 至系统服务并设置为开机启动 
    service  mysql  start  //启动mysql
    
    5. 环境变量配置
    vim /etc/profile   //编辑profile,将mysql的可执行路径加入系统PATH
    export PATH=/usr/local/mysql/bin:$PATH 
    source /etc/profile  //使PATH生效。
    
    6. 账号密码
    mysqladmin -u root password 'yourpassword' //设定root账号及密码
    mysql -u root -p  //使用root用户登录mysql
    use mysql  //切换至mysql数据库。
    select user,host,password from user; //查看系统权限
    drop user ''@'localhost'; //删除不安全的账户
    drop user root@'::1';
    drop user root@127.0.0.1;
    select user,host,password from user; //再次查看系统权限,确保不安全的账户均被删除。
    flush privileges;  //刷新权限
    
    7. 一些必要的初始配置
    1)修改字符集为UTF8
    vi /etc/my.cnf
    在[client]下面添加 default-character-set = utf8
    在[mysqld]下面添加 character_set_server = utf8
    2)增加错误日志
    vi /etc/my.cnf
    在[mysqld]下面添加:
    log-error = /usr/local/mysql/log/error.log
    general-log-file = /usr/local/mysql/log/mysql.log
    3) 设置为不区分大小写,linux下默认会区分大小写。
    vi /etc/my.cnf
    在[mysqld]下面添加:
    lower_case_table_name=1
    
    修改完重启:#service  mysql  restart
    源码安装mariadb

      MAC版本

      下载https://dev.mysql.com/downloads/mysql/5.7.html#downloads安装包。双击安装、下一步后安装完成。

      在/etc/profile文件内添加环境变量:PATH= /usr/local/mysql/bin:$PATH   然后在最后一行添加export PATH,保证全局生效。

      $PATH代表取系统自带的环境变量的值。

      退出文件编辑后,执行source /etc/profile   立即生效配置文件修改。

      启动mysql服务:在系统偏好设置下找到mysql,点击启动mysql服务。

        

    五、密码设置和密码破解

    MAC版本

      启动MySQL后,必须先执行安全配置向导mysql_secure_installation。

        

      根据安装时系统提示的密码,设置新密码。

    需要输入判断的语句:

      Enter current password for root (enter for none):<–初次运行直接回车

      Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车

      Remove anonymous users? [Y/n] <– 是否删除匿名用户,生产环境建议删除,所以直接回车

      Disallow root login remotely? [Y/n] <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止

      Remove test database and access to it? [Y/n] <– 是否删除test数据库,直接回车 

      Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车

      通用密码修改

    初始状态下,管理员root,密码为空,默认只允许从本机登录localhost
    设置密码
    [root@egon ~]# mysqladmin -uroot password "123"        设置初始密码 由于原密码为空,因此-p可以不用
    [root@egon ~]# mysqladmin -uroot -p"123" password "456"        修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码
    
    命令格式:
    [root@egon ~]# mysql -h172.31.0.2 -uroot -p456
    [root@egon ~]# mysql -uroot -p
    [root@egon ~]# mysql                    以root用户登录本机,密码为空

      密码破解

      首先,保证mysql服务在停止状态。执行sudo mysqld_safe --skip-grant-tables命令

    MacBook-Pro:local hqs$ sudo mysqld_safe --skip-grant-tables
    Password:
    Logging to '/usr/local/mysql/data/MacBook-Pro.local.err'.
    2018-05-08T12:48:38.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

      然后,打开一个新的终端,执行mysql -uroot登录数据库

      接着,修改数据库密码,这个地方需要注意5.7版本mysql数据库下已经没有password这个字段了,password字段改成了authentication_string

    mysql> update mysql.user set password=password("1234") where user="root" and host="localhost";    # 这个是5.6版本通用写法
    ERROR 1054 (42S22): Unknown column 'password' in 'field list'
    mysql> update mysql.user set authentication_string=password('1234') where user='root' and host="localhost";    # 5.7版本后数据库下已经没有password这个字段了
    Query OK, 1 row affected, 1 warning (0.01 sec)
    Rows matched: 1  Changed: 1  Warnings: 1
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)

      随后,杀死mysql进程来关闭mysql数据库。

    huangqiushideMacBook-Pro:~ hqs$ ps aux| grep mysql
    hqs               8982   0.0  0.0  4286184    908 s001  S+    9:03下午   0:00.01 grep mysql
    _mysql            8810   0.0  0.2  4686868  19516 s000  S+    8:48下午   0:00.59 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --skip-grant-tables --log-error=huangqiushideMacBook-Pro.local.err --pid-file=huangqiushideMacBook-Pro.local.pid
    root              8740   0.0  0.0  4295984    744 s000  S+    8:48下午   0:00.02 /bin/sh /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
    root              8738   0.0  0.1  4330940   5536 s000  S+    8:48下午   0:00.05 sudo mysqld_safe --skip-grant-tables
    huangqiushideMacBook-Pro:~ hqs$ kill -9 8810
    -bash: kill: (8810) - Operation not permitted
    huangqiushideMacBook-Pro:~ hqs$ kill -9 8740
    -bash: kill: (8740) - Operation not permitted
    huangqiushideMacBook-Pro:~ hqs$ sudo kill -9 8740
    Password:
    huangqiushideMacBook-Pro:~ hqs$ sudo kill -9 8810
    huangqiushideMacBook-Pro:~ hqs$ sudo kill -9 8738
    kill: 8738: No such process
    huangqiushideMacBook-Pro:~ hqs$ ps aux| grep mysql
    hqs               9006   0.0  0.0  4267752    864 s001  S+    9:04下午   0:00.00 grep mysql
    kill掉所有mysql相关进程

      最后,在系统偏好设置—MySQL,正常启动MySQL服务

    huangqiushideMacBook-Pro:~ hqs$ mysql -uroot -p1234
    mysql: [Warning] Using a password on the command line interface can be insecure.
    mysql: Unknown OS character set ''.
    mysql: Switching to the default character set 'latin1'.
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 10
    Server version: 5.7.22 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql> 
    用新密码登录MySQL成功

    六、统一字符编码

      1、MAC需要先切换到管理员用户,再创建配置文件/etc/my.cnf。写入一下内容(下面那一组):

    #mysql5.5以下版本
    [mysqld]
    default-character-set=utf8 
    [client]
    default-character-set=utf8 
    [mysql]
    default-character-set=utf8
    
    #mysql5.5以上:修改方式有所改动
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8

      2、修改完成后,在系统偏好设置中启动mysql服务,启动完成后mysql -uroot 登陆数据库,执行"s"进行编码验证

    mysql> s
    --------------
    mysql  Ver 14.14 Distrib 5.7.22, for macos10.13 (x86_64) using  EditLine wrapper
    
    Connection id:          20
    Current database:
    Current user:           root@localhost
    SSL:                    Not in use
    Current pager:          stdout
    Using outfile:          ''
    Using delimiter:        ;
    Server version:         5.7.22 MySQL Community Server (GPL)
    Protocol version:       10
    Connection:             Localhost via UNIX socket
    Server characterset:    utf8
    Db     characterset:    utf8
    Client characterset:    utf8
    Conn.  characterset:    utf8
    UNIX socket:            /tmp/mysql.sock
    Uptime:                 1 min 1 sec
    
    Threads: 1  Questions: 6  Slow queries: 0  Opens: 105  Flush tables: 1  Open tables: 98  Queries per second avg: 0.098
    --------------
    
    mysql> 
    编码验证

    七、初识SQL语句

      有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写。

      mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要下载mysql的客户端,或者其他模块来连接到mysqld,然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。该语法即sql(Structured Query Language 即结构化查询语言)。

    SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
    #1、DDL语句    数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
    #2、DML语句    数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
    #3、DCL语句    数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

    1、操作库(文件夹)

      增:create database db1 charset utf8;    # charset指定数据库字符编码

      查:show databases;       # 查看所有数据库(往往会有一些默认库)

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

                show create database db1;    # 查看数据库,在文件系统/usr/local/mysql/data目录下可找到刚刚创的数据库

    mysql> create database db1 charset utf8;
    Query OK, 1 row affected (0.03 sec)
    
    mysql> show create database db1;  
    +----------+--------------------------------------------------------------+
    | Database | Create Database                                              |
    +----------+--------------------------------------------------------------+
    | db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
    +----------+--------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db1                |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.01 sec)
    show操作示例

      改:alter database db1 charset gbk;     # 改数据库字符编码

    mysql> alter database db1 charset gbk;
    Query OK, 1 row affected (0.01 sec)
    
    mysql> show create database db1;
    +----------+-------------------------------------------------------------+
    | Database | Create Database                                             |
    +----------+-------------------------------------------------------------+
    | db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET gbk */ |
    +----------+-------------------------------------------------------------+
    1 row in set (0.00 sec)
    alter操作及字符编码查看

      删:drop database db1;   # 删除数据库,文件系统/usr/local/mysql/data目录下db1目录被删除

    mysql> drop database db1;
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.00 sec)
    drop操作及确认

    2、操作表(文件)

      切换文件夹:use db1

    mysql> create database db1 charset utf8;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use db1
    Database changed
    use操作切换到数据库下
    mysql> use db1
    Database changed
    mysql> select database();
    +------------+
    | database() |
    +------------+
    | db1        |
    +------------+
    1 row in set (0.00 sec)
    select database();查看当前数据库

      :create table t1(id int, name char) ;   # 表需要设置字段和字段的字符类型

        执行完增操作后,可以在/usr/local/mysql/data/db1下看到多出来的 t1.frm  t1.ibd这两个文件。t1.frm存放表结构,t1.ibd存放表数据。

      :show create table t1;   # 查看表

    mysql> create table t1(id int, name char);
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> mysql> show create table t1;
    +-------+---------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table                                                                                                        |
    +-------+---------------------------------------------------------------------------------------------------------------------+
    | t1    | CREATE TABLE `t1` (
      `id` int(11) DEFAULT NULL,
      `name` char(1) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +-------+---------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    create建表及show查看表数据

        show tables;    # 查看当前库下所有的表

    mysql> show tables;
    +---------------+
    | Tables_in_db1 |
    +---------------+
    | t1            |
    +---------------+
    1 row in set (0.00 sec)
    show tables;查看当前库所有表

        desc t1;    # 查看表数据

    mysql> desc t1;
    +-------+---------+------+-----+---------+-------+
    | Field | Type    | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | id    | int(11) | YES  |     | NULL    |       |
    | name  | char(6) | YES  |     | NULL    |       |
    +-------+---------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    查看表数据

      :改表的字段

        alter table t1 modify name char(6);  # 默认char宽度为1,现在修改为6

    mysql> alter table t1 modify name char(6);
    Query OK, 0 rows affected (0.04 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> show create table t1;
    +-------+------------------------------------------------------------------------------+
    | Table | Create Table                                                                                                        |
    +-------+------------------------------------------------------------------------------+
    | t1    | CREATE TABLE `t1` (
      `id` int(11) DEFAULT NULL,
      `name` char(6) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +-------+-------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    alter...modify修改字段类型字符宽度

        alter table t1 change name NAME char(7);   # 字段名改为大写,并修改字段类型

    mysql> alter table t1 change name NAME char(7);
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc t1;
    +-------+---------+------+-----+---------+-------+
    | Field | Type    | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | id    | int(11) | YES  |     | NULL    |       |
    | NAME  | char(7) | YES  |     | NULL    |       |
    +-------+---------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    alter...change修改字段名和字段类型

      :删除表

        drop table t1;

    mysql> drop table t1;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> desc t1;
    ERROR 1146 (42S02): Table 'db1.t1' doesn't exist
    mysql> show tables;
    Empty set (0.00 sec)
    删除数据表并验证

    3、操作文件内容/记录

      :插入

        insert  t1(id, name) values(1, 'egon1'), (2, 'egon2'), (3, 'egon3');

      :select  id,name from t1;   # 这是切到库下的情况

        select * from db1.t1;   # db1.t1指定db1库下的t1表

    mysql> create table t1(id int, name char(6));
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> insert  t1(id, name) values(1, 'egon1'), (2, 'egon2'), (3, 'egon3');
    Query OK, 3 rows affected (0.01 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> select * from db1.t1;
    +------+-------+
    | id   | name  |
    +------+-------+
    |    1 | egon1 |
    |    2 | egon2 |
    |    3 | egon3 |
    +------+-------+
    3 rows in set (0.00 sec)
    插入数据并查看表文件内容

      :改表内的记录

        update db1.t1 set name="SB";

    mysql> update db1.t1 set name="SB";
    Query OK, 3 rows affected (0.01 sec)
    Rows matched: 3  Changed: 3  Warnings: 0
    
    mysql> select * from db1.t1;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | SB   |
    |    2 | SB   |
    |    3 | SB   |
    +------+------+
    3 rows in set (0.00 sec)
    update...set修改所有name记录

        update db1.t1 set name='ALEX' where id=2;

    mysql> update db1.t1 set name='ALEX' where id=2;
    Query OK, 1 row affected (0.01 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select * from db1.t1;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | SB   |
    |    2 | ALEX |
    |    3 | SB   |
    +------+------+
    3 rows in set (0.01 sec)
    update...set..where修改指定记录

      :删除表内记录

        delete from t1 where id=2;   # 删除指定记录

        delete from t1;  # 删除报表内所有记录

    mysql> delete from t1 where id=2;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from db1.t1;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | SB   |
    |    3 | SB   |
    +------+------+
    2 rows in set (0.00 sec)
    
    mysql> delete from t1;
    Query OK, 2 rows affected (0.00 sec)
    
    mysql> select * from db1.t1;
    Empty set (0.00 sec)
    delete删除记录操作

      清空表的方法总结:

        delete from t1;   # 如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始

        truncate table t1;  # 数据量大,删除速度比上一条快,且直接从零开始

        auto_increment表示:自增

        primary key 表示:约束(不能重复且不能为空);加速查找

  • 相关阅读:
    关于 OpenSmtp 邮件标题过长后出现乱码问题的解决
    用于解析 sohu 新闻页面的 XSLT 文件
    CEGUI 0.7x实现下划线描边图文混排等效果
    Hash算法说明
    D3DXMatrixShadow 函数
    DLL动态链接库和LIB静态链接库之程序员经验分析
    printf格式控制符的完整格式(转载)
    深入说明HDR技术
    Irrlicht不定期分析
    8.3实例程序:平面阴影
  • 原文地址:https://www.cnblogs.com/xiugeng/p/9009013.html
Copyright © 2011-2022 走看看