初识数据库

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

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

  一、程序全部的组件不可能运行在同一台机器上python

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

  二、数据安全问题linux

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

  三、并发redis

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

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

总结:数据库

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

2、数据库概述

一、什么是数据?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3、MySQL介绍

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

一、MySQL是什么?

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

  客户端软件

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

    python模块:如pymysql

二、数据库管理软件分类

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

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

4、下载安装

  Windows版本

#一、下载:MySQL Community Server 5.7.16
http://dev.mysql.com/downloads/mysql/

#二、解压
若是想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-5.7.16-winx64

#三、添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
 
#四、初始化
mysqld --initialize-insecure

#五、启动MySQL服务
mysqld # 启动MySQL服务

#六、启动MySQL客户端并链接MySQL服务
mysql -u root -p # 链接MySQL服务器
安装
上一步解决了一些问题,但不够完全,由于在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么作一下设置便可解决此问题:



注意:--install前,必须用mysql启动命令的绝对路径
# 制做MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --install
 
# 移除MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --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服务。

    

5、密码设置和密码破解

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成功

6、统一字符编码

  一、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

  二、修改完成后,在系统偏好设置中启动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> 
编码验证

7、初识SQL语句

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

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

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

一、操做库(文件夹)

  增: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操做及确认

二、操做表(文件)

  切换文件夹: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)
删除数据表并验证

三、操做文件内容/记录

  :插入

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

相关文章
相关标签/搜索