初识数据库

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

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

  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 表示:约束(不能重复且不能为空);加速查找

原文地址:https://www.cnblogs.com/xiugeng/p/9009013.html