初识数据库

1 存储数据的演变

阶段 问题
将数据随意存到一个文件中,数据格式千差万别,完全取决于我们自己 文件位置不固定、数据格式不固定
软件开发目录规范,限制了存储数据的具体位置,如DB文件夹用来专门存放数据 本地存放的数据不能实现联网
单一数据库服务端 风险高
数据库集群,把同一份数据备份到N多台数据库服务端,实现高可用  

 

2 数据库管理软件的由来

基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上。

如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有问题。

很不幸,这些假设都是你自己意淫出来的,上述假设存在以下几个问题:

2.1 程序所有的组件就不可能运行在一台机器上

#因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。

#于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。

2.2 数据安全问题 

#根据1的描述,我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。

#于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。

2.3 并发

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

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

2.4 总结

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

 

3 数据库概述

3.1 什么是数据(Data) 

描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机,对于计算机来说,数据就是二进制、16进制的机器语言。哪些数据是适合存储到数据库的呢?重要性比较高的,关系较复杂的数据。

在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,就相当于文件里的一行内容,如:

1 张三,male,18,1999,山东,计算机系,2017

单纯的一条记录并没有任何意义,如果我们按逗号作为分隔,依次定义各个字段的意思,相当于定义表的标题

1 name,sex,age,birth,born_addr,major,entrance_time #字段
2 张三,male,18,1999,山东,计算机系,2017 #记录

这样我们就可以了解张三,性别为男,年龄18岁,出生于1999年,出生地为山东,2017年考入计算机系 


3.2 什么是数据库(DataBase,简称DB)

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

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

数据库是长期存放在计算机内、有组织、可共享的数据即可。

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


3.3 什么是数据库管理系统(DataBase Management System 简称DBMS)

在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键,数据库本质其实就是一款基于网络通信的应用程序

这就用到了一个系统软件---数据库管理系统

#RDBMS: 关系型数据库管理系统 
#类似硬盘,真正用来存放数据
1、数据之间彼此有关系或者约束
2、存储数据的表现形式通常是以表格存储	
3、每个字段还会有存储类型的限制
4、比较适合于,安全级别要求高的数据以及关系较复杂的数据
5、MySQL、oracle、db2、access、sql server、sqlite、PostgreSQL

#NoSQL:非关系型数据库管理系统
#类似缓存,减轻真正数据库的压力
1、存储数据通常都是以k、v键值对的形式 redis、memcache
2、文档(document):Mongodb
3、适合于高性能存取数据,一般是配合RDBMS进行使用的
4、针对大数据处理分析,分布式架构更加擅长

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


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

记录:1 刘海龙  324245234 22(多个字段的信息组成一条记录,即文件中的一行内容)

表:student, scholl, class_list(即文件)

数据库:oldboy_stu(即文件夹)

数据库管理系统:如mysql(是一个软件)

数据库服务器:一台计算机(对内存要求比较高)

总结:

#数据库服务器-:运行数据库管理软件

#数据库管理软件:管理-数据库

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

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

 

4 mysql介绍

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

4.1 mysql是什么

#mysql就是一个基于socket编写的C/S架构的软件  
#任何基于网络通信的应用程序底层用的都是socket

#服务端
    -基于socket通信
    -收发消息
    -SQL语句
    
#客户端
	-基于socket通信
	-收发消息
	-SQL语句
    
#客户端软件
  mysql自带:如mysql命令,mysqldump命令等
    桌面客户端:Navicate
    python模块:如pymysql

4.2 MySQL行业主流版本

5.5 :企业基本不用了
5.6 :****:四星 5.6.36  5.6.38 5.6.40 ...5.6.46
5.7 :*****:五星 5.7.20 5.7.22 ....5.7.28 5.7.30(5.7版本最新)
8.0(最新) :**:两星 8.0.11 开始,之前都是测试版 ...8.0.20

4.3 企业版本选择(MySQL分支版本)

# 分支
Oracle:
      MySQL官方版
红帽:
      MariaDB:红帽维护的分支
Percona:
      PerconaDB:Percona公司维护的分支
        
# 版本
企业版:收费
社区版:开源免费

4.4 下载

社区版本下载地址:https://dev.mysql.com/downloads/mysql/


4.5 安装方式

1 源码安装:编译安装,非常慢,需要研究源码
2 rpm,yum 安装:配置官方yum源,直接yum install 
3 通用二进制版:解压即用,绿色版(企业用)

4.5.1 Linux版本

源码安装mysql

查看代码
 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;     #刷新权限

源码安装mariadb

查看代码
 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

yum安装mysql

查看代码
 1)前往用户根目录
>: cd ~

2)下载mysql57
>: wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

也可以本地上传,这条命令要在本地终端上执行
>: scp -r C:\Users\dell\Desktop\pkg\mysql57-community-release-el7-10.noarch.rpm root@39.99.192.127:~

3)安装mysql57
>: yum -y install mysql57-community-release-el7-10.noarch.rpm
>: yum -y install mysql-community-server

4)启动mysql57并查看启动状态
>: systemctl start mysqld.service
>: systemctl status mysqld.service

5)查看默认密码并登录
>: grep "password" /var/log/mysqld.log
>: mysql -uroot -p

6)修改密码
>: ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
>: ALTER USER 'root'@'localhost' IDENTIFIED BY 'Owen1234?';

通用二进制安装

查看代码
 # 1 环境准备
一台centos 7.6虚拟机,能上网

# 2 清理一下环境 
rpm -qa |grep mariadb  
yum remove mariadb-libs

# 3 创建用户和组
useradd mysql
useradd mysql -s /sbin/nologin # 不能登录,没有家目录
id mysql

# 4 创建相关目录(软件目录,数据目录)
# 软件目录
mkdir -p /app/database/
# 数据目录
mkdir -p /data/3306
# 日志目录
mkdir -p /binlog/3306
# mkdir -p /app/database/ /data/3306/ /binlog/3306
# 生产建议:软件和数据和日志不要放在同一个地方,一般数据放在另一块磁盘上

# 5 设置权限
chown -R mysql.mysql /app/ /data/ /binlog

# 6 上传并解压软件到 /app/databases/
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
tar xzf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

# 7 建立软连接
ln -s mysql-5.7.30-linux-glibc2.12-x86_64 mysql

# 8 设置环境变量
-bin # mysql执行的命令
-support-files # 存放脚本
# 把bin目录设置到环境变量中
vim /etc/profile
#添加一行
export PATH=/app/database/mysql/bin:$PATH
# 生效配置
source /etc/profile
# 验证
mysql -V

# 9 初始化系统库表(系统数据,数据库要启动,必须依赖一些表,系统表)
mysqld --initialize-insecure --user=mysql --basedir=/app/database/mysql --datadir=/data/3306/
#会报错:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
报错原因: Linux系统中缺少libaio-devel 软件包
#解决:
yum install -y libaio-devel

# 如果再执行一下上面的初始化命令,会报data目录不为空,需要删除数据目录再执行
#########补充:
# 1 初始化数据自带密码
# 5.7开始,MySQL加入了全新的 密码的安全机制:
1.初始化完成后,会生成临时密码(显示到屏幕上,并且会往日志中记一份)
2.密码复杂度:长度:超过12位? 复杂度:字符混乱组合
3.密码过期时间180天

# 初始化数据,初始化管理员的临时密码
mysqld --initialize  --user=mysql --basedir=/app/database/mysql --datadir=/data/3306/
# 会打印出密码,记住,然后需要修改root密码后才能正常使用数据库
# S44GNgK!h.qg
#2 5.6初始化的区别
./mysql/scripts/mysql_install_db  --user=mysql --basedir=/app/database/mysql --datadir=/data/3306/

# 10 编写默认配置文件
vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/app/database/mysql
datadir=/data/3306/
server_id=6
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock

# 11 配置启动脚本
cd /app/database/mysql/support-files
./mysql.server start
# copymysql的启动脚本至系统管理目录中
cp mysql.server /etc/init.d/mysqld
# centos6中,使用service 启动
service mysqld start
service mysqld stop
service mysqld restart
# centos7中:使用systemctl启动
chkconfig --add mysqld # 把mysqld的脚本添加到systemctl的管理中
systemctl start mysqld
###至此,启动方式可以是
service mysqld start
systemctl start mysqld
/etc/init.d/mysqld start
/app/database/mysql/support-files/mysql.server start


# 12 在登陆前修改密码(使用mysqld --initialize 初始化的数据)
mysqladmin -uroot -p password lqz1234.
输入原始密码

 4.5.2 Window版本

#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 -h 127.0.0.1 -p 3306 -uroot -p
mysql -uroot -p 

#7、设置密码与重置密码
#设置密码
mysql admin -uroot -p "原密码" password "新密码"   #首次登录原密码为空,因此-p可以不写

#重置密码方式一
#cmd启动mysql,让mysql跳过用户密码验证
net start mysql --skip-grant-tables
#以无密码的方式连接 
mysql -uroot -p 直接回车
#修改当前用户的密码
update mysql.user set authentication_string = password(123456) where user='root' and host='localhost';
#刷入硬盘
flush privileges;

#重置密码方式二
#1. 关闭mysql,可以用tskill mysqld将其杀死
#2. 在解压目录下,新建mysql配置文件my.ini
#3. my.ini内容,指定
[mysqld]
skip-grant-tables
#4.启动mysqld
#5.在cmd里直接输入mysql登录,然后操作
update mysql.user set authentication_string=password('') where user='root and host='localhost';

flush privileges;

#6.注释my.ini中的skip-grant-tables,然后启动myqsld,然后就可以以新密码登录了

将MySQL服务制作成windows服务

上一步解决了一些问题,但不够彻底,因为在执行【mysqld】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:

注意:--install前,必须用mysql启动命令的绝对路径
# 制作MySQL的Windows服务,管理员身份在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --install
# 加入了环境变量 mysqld --install

# 移除MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --remove
# 加入了环境变量 mysqld --remove

注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
# 启动MySQL服务
net start mysql
# 关闭MySQL服务
net stop mysql

 

5 mysql软件基本管理

5.1 启动查看

linux平台下查看

[root@egon ~]# systemctl start mariadb #启动
[root@egon ~]# systemctl enable mariadb #设置开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@egon ~]# ps aux |grep mysqld |grep -v grep #查看进程,mysqld_safe为启动mysql的脚本文件,内部调用mysqld命令
mysql     3329  0.0  0.0 113252  1592 ?        Ss   16:19   0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql     3488  0.0  2.3 839276 90380 ?        Sl   16:19   0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
[root@egon ~]# netstat -an |grep 3306 #查看端口
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN  
[root@egon ~]# ll -d /var/lib/mysql #权限不对,启动不成功,注意user和group
drwxr-xr-x 5 mysql mysql 4096 Jul 20 16:28 /var/lib/mysql

You must reset your password using ALTER USER statement before executing this statement.

安装完mysql 之后,登陆以后,不管运行任何命令,总是提示这个
mac mysql error You must reset your password using ALTER USER statement before executing this statement.
解决方法:
step 1: SET PASSWORD = PASSWORD('your new password');
step 2: ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
step 3: flush privileges;

5.2 登录,设置密码

初始状态下,管理员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用户登录本机,密码为空

5.3 忘记密码

方法一:删除授权库mysql,重新初始化

[root@egon ~]rm -rf /var/lib/mysql/mysql #所有授权信息全部丢失!!!
[root@egon ~]systemctl restart mariadb
[root@egon ~]mysql

方法二:启动时,跳过授权库

[root@egon ~]vim /etc/my.cnf    #mysql主配置文件
[mysqld]
skip-grant-table
[root@egon ~]systemctl restart mariadb
[root@egon ~]#mysql
MariaDB [(none)]> update mysql.user set password=password("123") where user="root" and host="localhost";
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> \q
[root@egon ~]# #打开/etc/my.cnf去掉skip-grant-table,然后重启
[root@egon ~]systemctl restart mariadb
[root@egon ~]mysql -u root -p123 #以新密码登录

5.4 在windows下,为mysql服务指定配置文件

强调:配置文件中的注释可以有中文,但是配置项中不能出现中文

my.ini

#在mysql的解压目录下,新建my.ini,然后配置
#1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效
[mysqld]
;skip-grant-tables
port=3306
character_set_server=utf8
default-storage-engine=innodb
innodb_file_per_table=1
#解压的目录
basedir=E:\mysql-5.7.19-winx64
#data目录
datadir=E:\my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据

#2. 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
[client]
port=3306
default-character-set=utf8
user=root
password=123

#3. 只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
[mysql]
;port=3306
;default-character-set=utf8
user=egon
password=4573

#!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准

5.5 统一字符编码

#1. 修改配置文件
[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. 重启服务
#3. 查看修改结果:
\s
show variables like '%char%'

 

6 初识sql语句

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. MySQL中的sql语句是以分号作为结束的标志

#2. 基本命令
    show databases;             查看所有的库名
    mysql -uroot -p             连接服务端的命令可以简写
    \c                          撤销已经输入的命令
    \s                          查看当前配置
    quit/exit                   客户端退出
    tasklist                    cmd命令,查看所有进程
    tasklist |findstr 进程名    cmd命令,查看具体进程
    taskkill /F /PID            cmd命令,杀死PID号为多少的进程
    services.msc                cmd命令,查看当前计算机的运行进程
    flush privileges;           立即将数据刷到硬盘
    
#3. 操作文件夹(库的增删改查)
        增:create database db1; 
            create database db1 charset='gbk';  创建库时可以额外指定字符编码
        查:show databases;                     查看所有库名
            show create database db1;           查看单个库
        改:alter database db1 charset='utf8';  更改库的字符编码
        删除: drop database db1;                删除单个数据库


#4. 操作文件(表的增删改查)
# 在操作表(文件)的时候 需要指定所在的库(文件夹)
    查看当前所在的库名字:select database();
    先切换到db1库下:use db1
    如果在db1下,想操作db2库下的表,前面加绝对路径: create table db2.t1(id int);
        增:create table t1(id int,name char(16));  #创建一张表,包含id和name两个字段,字段有类型限制
        查:show tables;           #查看当前库下所有的表
            show create table t1;  #查看单个表
            desc t1;               #查看单个表的详情
        改:alter table t1 modify name char(3);         #修改表中限制字符串的长度
            alter table t1 change name name1 char(2);   #修改表中name字段,改名为name1
        删:drop table t1;


#5. 操作文件中的内容/记录(数据的增删改查)
#一定要先有库 有表 最后才能操作记录
        增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
        查:select * from t1;                    #将t1表里所有数据查出来,数据量特别大时不建议使用
            select id,name from t1;              #选择性的只查看t1表中id与name字段数据
        改:update t1 set name='sb' where id=2;  #将id等于2的数据的name字段对应的数据改为sb
        删:delete from t1 where id>1;           #将t1表里id>1的数据全部删除
            

        清空表:
            delete from t1;       #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
            truncate table t1;    #数据量大,删除速度比上一条快,且直接从零开始。

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

 

posted @ 2022-12-13 00:18  不会钓鱼的猫  阅读(109)  评论(0编辑  收藏  举报