数据库===》新旧版本对比、MySQL用户权限连接管理、MySQL相关命令、sql语句之DDL

一、MySQL5.6与MySQL5.7安装的区别

1.cmake的时候加入了bostorg

建议大家使用二进制的包安装,已经过了cmake阶段,已经把bostorg装好了

[root@db02 mysql-5.7.20]# yum install -y gcc gcc-c++ automake autoconf
[root@db02 mysql-5.7.20]# yum install make cmake bison-devel ncurses-devel libaio-devel
[root@db02 mysql-5.7.20]# wget httpss://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_59_0.tar.gz
#登录boost.org下载也可以
[root@db02 mysql-5.7.20]# tar xf boost_1_59_0.tar.gz -C /usr/local/
[root@db02 mysql-5.7.20]# cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.7.20 \
-DMYSQL_DATADIR=/application/mysql-5.7.20/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.7.20/tmp/mysql.sock \
#安装bostorg
-DDOWNLOAD_BOOST=1 \
#安装的目录
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0 

2.初始化时 使用的命令不一样了

#5.6初始化命令
/service/mysql/scripts/mysql_install_db --user= --basedir= --datadir=

#5.7初始化命令
/usr/local/mysql/bin/mysqld --initialize --user= --basedir= --datadir=
#初始--initialize会生成一个临时的随机密码,他会告诉你位置,你自己去找使用密码登录,而且修改密码也需要一个很复杂的密码,大小写数字特殊符号

#想不让他生成密码的话,还可以用另外一个参数--initialize-insecure

二、mysql用户权限管理

1.linux和mysql用户对比

linux系统 mysql数据库
用户作用 1.登陆系统 2.管理系统文件 1.登陆MySQL数据库 2.管理数据库对象
创建用户 1.useradd 2.adduser 1.create user test@’%’; 2.grant
用户密码 1.useradd cm -p 123 2.passwd cm 1.create user test@’%’ identified by ‘123’; 2.mysqladmin
删除用户 userdel 1.drop user test@’%’; 2.delete
修改用户 usermod update

2.在MySQL中,用户是如何定义的

mysql> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
|      | db01      |
| root | db01      |
|      | localhost |
| root | localhost |
+------+-----------+
6 rows in set (0.00 sec)

#上面是6个用户,在数据库中一个完整的用户是:'用户名'@'主机域'
'用户名'@'主机域'
主机域写法:
	localhost
	127.0.0.1
	10.0.0.%
	10.0.%.%
	10.%.%.%
	%
	10.0.0.5%(10.0.0.50-10.0.0.59)
	db01
	10.0.0.0/255.255.255.0
	10.0.0.0/24 #可以创建但是不生效
测试:
	grant all on *.* to lhd@'10.0.0.0/255.255.255.0' identified by '123';
	grant all on *.* to qiudao@'10.0.0.0/24' identified by '123';

#创建的用户是数字,必须用引号一起来表示字符串
mysql> create user 123@'localhost';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123@'localhost'' at line 1

mysql> create user '123'@'localhost';
Query OK, 0 rows affected (0.02 sec)

3.用户管理

1)创建用户

mysql> create user lhd@'10.0.0.%' identified by '123';

2)查看用户

mysql> select user,host from mysql.user;

3)删除用户

mysql> drop user oldboy@‘10.0.0.%’;

4)修改密码

1.mysqladmin -uroot -p123 password '1'
2.update mysql.user set password=password('123') where user='root' and host='localhost';
3.set password=password('1');   修改当前用户的密码
4.grant all on *.* to 'root'@'localhost' identified by '123';

5)忘记root用户密码

1.停止MySQL
[root@db01 data]# /etc/init.d/mysqld stop
2.跳过授权表,安全启动
[root@db01 data]# mysqld_safe --skip-grant-tables --skip-networking &
3.连接数据库
[root@db01 data]# mysql
4.update修改密码
mysql> update mysql.user set password=password('123456789') where user='root' and host='localhost';
5.刷新授权表
mysql> flush privileges;
6.重启数据库
[root@db01 data]# /etc/init.d/mysqld restart
7.使用新密码链接数据库
[root@db01 data]# mysql -uroot -p567

4.权限管理

#授权命令
grant all privileges on *.* to oldboy@'10.0.0.%' identified by '123';
grant    all       on    *.*             to  oldboy@'10.0.0.%' identified  by '123';
授权SQL  所有权限	  在	 所有库.所有表 上面	 给  用户名@主机域        密码    为    123;

1)作用对象:所有库所有表

grant all privileges on *.*
grant select,update,insert on mysql.*		    单库
grant select,update,insert on mysql.user		单表
#企业里称单列授权为 脱敏:脱离敏感信息
grant select(user,host) on mysql.user to ptuser@'%' identified by '123';   单列级别

#举例:(相亲网站)
	grant select on mysql.user to vip@'%' identified by '123';
	grant select(user) on mysql.user to diaosi@'%' identified by '123';

2)在企业中权限的设定

#开发人员说:请给我开一个用户

#1.首先进行沟通
	1.你需要对哪些库、表进行操作
	2.你从哪里连接过来
	3.用户名有没有要求
	4.密码要求
	5.你要使用多长时间
	6.发邮件

#2.一般给开发创建用户权限
grant select,update,delete,insert on *.* to oldboy@’10.0.0.%’ identified by ‘123’;
#建议delete权限也不给

#3.注意:开发想要root用户,打死也不能给,这个申请到谁那里批准,也不给,让老大给

5.实践思考

1)准备数据库

#创建wordpress数据库
create database wordpress;
#使用wordpress库
use wordpress;
#创建t1、t2表
create table t1 (id int);
create table t2 (id int);
#创建blog库
create database blog;
#使用blog库
use blog;
#创建t1表
create table tb1 (id int);

2)授权

#给wordpress@'10.0.0.5%'用户查询所有库,所有表的权限,密码是 123
1、grant select on *.* to wordpress@’10.0.0.5%’ identified by ‘123’;

#给wordpress@'10.0.0.5%'用户插入,删除,修改 针对wordpress库下的所有表 密码是123
2、grant insert,delete,update on wordpress.* to wordpress@’10.0.0.5%’ identified by ‘123’;

#给wordpress@'10.0.0.5%'用户所有权限针对wordpress库下的t1表 密码是123
3、grant all on wordpress.t1 to wordpress@’10.0.0.5%’ identified by ‘123’;

3)问题

一个客户端程序使用wordpress用户登陆到10.0.0.51的MySQL后,
	1、对t1表的管理能力?		all
	2、对t2表的管理能力?		select insert,delete,update   增删改查
	3、对tb1表的管理能力?		 select

4)权限总结

1、如果在不同级别都包含某个表的管理能力时,权限是相加关系。
2、但是我们不推荐在多级别定义重复权限。
3、最常用的权限设定方式是单库级别授权,即:wordpress.*
4、如果涉及到用户的敏感信息,需要做脱敏,单列级别授权 即:select(列名) 单库.单表

三、mysql连接管理

1.连接工具

1)mysql自带的客户端管理连接命令 mysql

mysql
#常见的特定于客户机的连接选项:
-u:				指定用户  mysql -uroot
-p:				指定密码  mysql -uroot -p567
-h:				指定主机域  mysql -uroot -p567 -h127.0.0.1
-P:				指定端口	mysql -uroot -p567 -h127.0.0.1 -P3307
-S:				指定socket文件 mysql -uroot -p567 -S /tmp/mysql.sock
-e:				指定SQL语句(库外执行SQL语句) 
< :               导入sql脚本

mysql -uroot -p567 -e "show databases;"
#--protocol:      指定连接方式 mysql --protocol=TCP  --protocol=socket

#show processlist;  #可以查看本次连接数据库是本地连接还是远程连接(具体见下图)

数据库===》新旧版本对比、MySQL用户权限连接管理、MySQL相关命令、sql语句之DDL_第1张图片

2)第三方的连接工具

1.sqlyog
2.navicat
#注意:数据库是没有外网的,想连接可以使用通道
3.应用程序连接MySQL
#注意:需要加载对应语言程序的API

2.连接方式

1) socket连接

mysql -uroot -poldboy123 -S /service/mysql/tmp/mysql.sock
mysql -uroot -poldboy123

2) TCP/IP连接

mysql -uroot -poldboy123 -h10.0.0.51 -P3306

数据库===》新旧版本对比、MySQL用户权限连接管理、MySQL相关命令、sql语句之DDL_第2张图片

四、MySQL初始化配置

1.初始化方式

#1.源码安装:编译过程中cmake去指定设置初始化参数,硬编码到程序当中去
#2.配置文件:数据库启动之前,设定配置文件参数===》/etc/my.cnf
#3.启动脚本命令行===》mysqld_safe  --skip-grant-tables  --skip-networking &

2.配置文件应用

1)配置文件读取顺序

#1./etc/my.cnf
#2./etc/mysql/my.cnf
#3.$basedir/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
#4.defaults-extra-file (类似include)
#5.~/.my.cnf

2)配置文件生效顺序

#1.~/.my.cnf
#2.defaults-extra-file (类似include)
#3.$basedir/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
#4./etc/mysql/my.cnf
#5./etc/my.cnf

3)生效顺序验证

#配置/etc/my.cnf
[root@db01 ~]# vim /etc/my.cnf
[mysqld]
server_id=1

#配置/etc/mysql/my.cnf
[root@db01 ~]# mkdir /etc/mysql
[root@db01 ~]# vim /etc/mysql/my.cnf
[mysqld]
server_id=2

#配置$basedir/my.cnf
[root@db01 ~]# vim /service/mysql/my.cnf 
[mysqld]
server_id=3

#配置~/my.cnf
[root@db01 ~]# vim ~/.my.cnf
[mysqld]
server_id=4

#重启数据库(注意这里不能使用systemctl restart mysql重启)
[root@db01 ~]# systemctl stop mysql
[root@db01 ~]# /etc/init.d/mysqld start

#查看server_id
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 4     |
+---------------+-------+
1 row in set (0.00 sec)

4)参数执行优先级实验

#cmake:
socket=/service/mysql/tmp/mysql.sock

#命令行:
--socket=/tmp/mysql.sock

#配置文件:
vim /etc/my.cnf
[mysqld]
socket=/opt/mysql.sock

#default参数:
--defaults-file=/tmp/a.txt
vim /tmp/a.txt
[mysqld]
socket=/tmp/test.sock

#启动测试
mysql_safe --defaults-file=/tmp/a.txt --socket=/tmp/mysql.sock



优先级测试结论:
1、命令行
2、defaults-file
3、配置文件
4、预编译

命令行 >> defaults-file >> ~/.my.cnf >> defaults-extra-file >> $basedir/my.cnf >> /etc/mysql/my.cnf >> /etc/my.cnf >> cmake

3.配置文件的使用

1)MySQL配置文件的作用

#1.影响服务端的启动(mysqld)
#2.影响客户端的连接

2)配置连接数据库可以不用密码登录(把用户密码写到配置文件里)

[root@db01 scripts]# vim /etc/my.cnf
#最下面添加
[client]
user=root
password=123

#不需要重启和输入密码就可以直接连数据库

3)修改配置的影响

1.客户端程序也是受到配置文件的影响  [mysql] && [client]
2.修改完客户端的配置,不需要重启
3.修改完服务端的配置,必须重启,才能生效	[mysqld] && [server]

4)配置文件具体格式

[root@db01 ~]# cat /etc/my.cnf
[mysqld]                      #服务器端标签
user=mysql                    #负责数据库管理用户     
basedir=/service/mysql        #软件的安装位置
datadir=/data/3308/data       #数据的存放位置
port=3306                     #端口号
socket=/data/3308/mysql.sock  #套接字文件
server_id=6                   #标识节点的唯一编号(主从有用)                       
[mysql]                       #客户端标签
socket=/tmp/mysql.sock        #读取socket文件的位置点

注释:配置文件通用格式:
[标签]
配置参数=XXX
标签是什么?
区分不同程序参数的。
[服务器端]:影响数据库服务端运行
[mysqld]
[mysqld_safe]
[server]

[客户端]:影响本地客户端连接,不影响远程客户端
[mysql]
[mysqldump]
[client]

五、MySQL启动关闭流程

1.启动数据库

#1.MySQL启动流程:
/etc/init.d/mysqld start------> mysql.server ------> mysqld_safe ------> mysqld
    启动命令                       调用文件             调用文件            启动服务
systemctl start mysql ------> mysqld_safe ------> mysqld
    启动命令                       调用文件        启动服务
mysqld_safe --defaults-file=/etc/my.cnf ------> mysqld_safe ------> mysqld
    启动命令                                      调用文件            启动服务

2.停止数据库

/etc/init.d/mysqld stop
systemctl stop mysqld
service mysqld stop
mysqladmin -uroot -p123 shutdown
mysqladmin --socket/data/3307/mysql.sock -uroot -p123 shutdown  #多实例指定端口号停止数据库
mysql -uroot -p123 -e "shutdown"

#不建议使用
kill -9 pid
killall mysqld
pkill mysqld

#出现问题:
1.如果在业务繁忙的情况下,数据库不会释放pid和sock文件
2.号称可以达到和Oracle一样的安全性,但是并不能100%达到
3.在业务繁忙的情况下,丢数据(补救措施,高可用)

六、mysql相关命令

1.mysql连接后命令行快捷命令

\c:中断当前输入语句
	\r:重新连接到服务器
	\d:设置语句sql结束符    mysql> \d ]
	\e:编辑命令    输出输入的内容 echo
	\p:打印当前命令并执行
\G:垂直显示结果
\q:退出mysql    等于 quit exit
	\g:表示结束    等于 ; 的作用
\h:显示此帮助    等于 help    #help还可以查看命令语法 help create database;
	\t:不写入outfile
\T:将所有内容附加到给定的输出文件中(只支持本次会话)        \T /tmp/a.log
	#\n:禁用寻呼机,打印到标准输出。
	#\P:设置寻呼机[到寻呼机]。通过寻呼机打印查询结果。
\R:更改mysql提示符    \R mysql>>> 
\.:执行一个sql文件    等于 source
\s:从服务器获取状态信息    等于 status
\u:切换数据库    等于 use  #查看当前所在数据库select database();
	\C:切换到另一个字符集    一般不使用
	\W:在每个语句后显示警告
	\w:不在每个语句后显示警告

1)help命令

mysql> help
mysql> help contents    help 用法
mysql> help select
mysql> help create
mysql> help create user
mysql> help status
mysql> help show

2.客户端mysqladmin命令

1.修改密码,设置密码:password
[root@db01 ~]# mysqladmin -uroot -p旧密码 password '新密码'

2.关闭MySQL服务:shutdown
[root@db01 ~]# mysqladmin -uroot -p密码 -S socket文件 shutdown

3.库外建库:create
[root@db01 ~]# mysqladmin -uroot -p密码 create lhd
[root@db01 ~]# mysql -uroot -p123456 -e 'create database lhd'

4.库外删除数据库:drop
[root@db01 ~]# mysqladmin -uroot -p123456 drop lhd
Do you really want to drop the 'lhd' database [y/N] y
Database "lhd" dropped

5.查看配置文件所有的默认参数:variables
[root@db01 ~]# mysqladmin -uroot -p123456 variables
[root@db01 ~]# mysqladmin -uroot -p123456 variables | grep server_id

6.检测MySQL进程是否存活:ping
[root@db01 ~]# mysqladmin -uroot -p123456 ping

7.查看数据库 慢查询,负载信息:status
[root@db01 ~]# mysqladmin -uroot -p123456 status
Uptime                   MySQL服务器已经运行的秒数
Threads                  活跃线程(客户)的数量 
Questions                从mysqld启动起来自客户问题的数量   已经发送给服务器的查询的个数
Slow queries             已经超过long_query_time秒的查询数量 
Opens                    mysqld已经打开了多少表 
Flush tables             flush ..., refresh和reload命令数量 
Open tables              现在被打开的表数量
Queries per second avg: 0.046	负载

8.重载授权表,刷新缓存主机:reload,相当于flush privileges
[root@db01 ~]# mysqladmin -uroot -p123456 reload

9.刷新binlog日志
[root@db01 ~]# mysqladmin -uroot -p123456 flush-log

七、sql语句

1.sql语句语义种类

DDL:Data Query Language 数据定义语言(CREATE、DROP、ALTER)
DCL:Data control Language 数据控制语言(GRANT,ROLLBACK,COMMIT)
DML:Data Manipulation Language 数据操作语言(INSERT,UPDATE,DELETE)
DQL:Data Query Language 数据查询语言(SELECT)

#DPL:事务处理语言(BEGIN TRANSACTION、COMMIT和ROLLBACK)

实例===》库===》表===》字段、记录、索引

2.DDL语句—数据定义语言(CREATE ,DROP,USE,SHOW,ALTER,ADD)

1)针对库的操作

#1.使用help查看语句
mysql> help create database;
CREATE {
     DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name

#2.创建oldboy数据库
mysql> create database lhd;
mysql> create schema lhd;

#3.创建已存在数据库时会报错
mysql> create database if not exists lhd;

#4.查看建库语句
mysql> show create database mysql;
mysql> show create database lhd;

#5.创建数据库并制定字符集和校验规则
mysql> create database if not exists lhd collate utf8_general_ci charset utf8;   #如果不存在就创建,存在就不创建

#6.删库:
mysql> drop database lhd;

#7.修改库:
mysql> alter database bgx1 charset utf8mb4;

2)针对表的操作

1> 使用help查看语句
mysql> help create table;
2> 建表
mysql> create table qiudao(id int);
mysql> create table if not exists qiudao(id int);  #如果不存在就创建,存在就不创建

#若建表出现提示没有指定数据库的错误====》用类似于绝对路径来解决
mysql> create table lhd(id int,name varchar(10),gender enum('man''girl'),zctime datatime);
ERROR 1046 (3D000): No database selected

mysql> mysql> create table lhd.lili(id int,name varchar(10),gender enum('man''girl'),zctime datetime);
Query OK, 0 rows affected (0.04 sec)
3> 数据类型
int: 		整数 -2^31 ~ 2^31 -1
tinyint:	最小整数 -128 ~ 127		#一般年龄使用
varchar(50):	字符类型 (变长)		#一般身份证使用该类型
char(50): 	 	字符类型 (定长)		#KVM的磁盘格式:RAW:定长  QCOW2:变长
enum:   	枚举类型			   #性别使用,指定多项选其一
datetime:   时间类型 年月日时分秒
#timestamp   以前使用

#注意:当tinyint类型被指定非负数时,值会变,但范围不改不变
4>数据类型测试
#查看qiudao表的属性
mysql> desc qiudao;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

#插入数据,插入数据为10位可以,11位不可以
mysql> insert into qiudao values(11111111111);
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> insert into qiudao values(1111111111);
Query OK, 1 row affected (0.01 sec)

#插入数据的最大值不能大于2的31次方
mysql> insert into qiudao values(2147483648);
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> insert into qiudao values(2147483647);
Query OK, 1 row affected (0.00 sec)

#插入数据的负的最大值不能小于-2的31次方
mysql> insert into qiudao values(-2147483649);
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> insert into qiudao values(-2147483648);
Query OK, 1 row affected (0.01 sec)
#建表
mysql> create table qiudao2(id int,name varchar(10),gender enum('male','fmale','qiudao'));
Query OK, 0 rows affected (0.01 sec)

#查看qiudao2表的属性
mysql> desc qiudao2;
+--------+-------------------------------+------+-----+---------+-------+
| Field  | Type                          | Null | Key | Default | Extra |
+--------+-------------------------------+------+-----+---------+-------+
| id     | int(11)                       | YES  |     | NULL    |       |
| name   | varchar(10)                   | YES  |     | NULL    |       |
| gender | enum('male','fmale','qiudao') | YES  |     | NULL    |       |
+--------+-------------------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

#添加数据,性别选项只能填他给的选项,其他的不行
mysql> insert into qiudao2 values(1,'qiudao','nan');
ERROR 1265 (01000): Data truncated for column 'gender' at row 1
mysql> insert into qiudao2 values(1,'qiudao','male');
Query OK, 1 row affected (0.00 sec)
#建一个新表
create table qiudao3(
id int,
name varchar(10),
age tinyint,
gender enum('f','m'),
cometime datetime);

#插入一个数据,now()函数表示当前时间
mysql> insert into qiudao3 values(1,'qiudao',88,'f',now());
5> 建表试题
表名:student
sid
sname
sage
sgender
scometime

create table student(
id int,
name varchar(10),
age tinyint,
gender enum('f','m'),
cometime datetime);
6> 建表数据属性
not null: 			非空
primary key: 		主键(唯一且非空的)  #一套数据可以反复插入,没有主键的表没有意义
auto_increment: 	自增(此列必须是:primary key或者unique key)
unique key: 		单独的唯一的
default: 			默认值
unsigned: 			无符号,非负数
comment: 			注释

#唯一键与主键的区别,主键只能有一个不能为空,唯一键可以是多个可以为空,设置多个唯一键再加上非空属性可以当做多个主键,主键查询的速度快
primary key = unique key + not null
7> 加上属性建表
#建表加上数据属性
mysql> create table lhd.student(
    -> id int not null primary key auto_increment comment'学号',
    -> name varchar(10) not null comment'姓名',
    -> age tinyint unsigned not null comment'年龄',
    -> gender enum('man','girl') not null default 'man' comment'性别',
    -> cometime datetime default now() comment'入学时间',
    -> birthday datetime comment'生日',
    -> class varchar(10) not null comment'学生班级');

#查看建表语句
mysql> show create table student;

#插入表数据
mysql> insert into lhd.student values('1','fxs','18','girl',now(),now(),'linux11'); 
Query OK, 1 row affected (0.00 sec)

#查看插入的表数据
mysql> select * from lhd.student;
+----+------+-----+--------+---------------------+---------------------+---------+
| id | name | age | gender | cometime            | birthday            | class   |
+----+------+-----+--------+---------------------+---------------------+---------+
|  1 | fxs  |  18 | girl   | 2021-02-25 10:46:23 | 2021-02-25 10:46:23 | linux11 |
+----+------+-----+--------+---------------------+---------------------+---------+
1 row in set (0.00 sec)

8> 删除表
mysql> drop table student;
9> 修改表
#先创建一个表
mysql> create table students(zzy varchar(10));
Query OK, 0 rows affected (0.01 sec)

#修改表名
mysql> alter table students rename stu;
#添加列和列定义
mysql> alter table stu add zy varchar(10);
mysql> alter table stu add age int;
#添加多个列
mysql> alter table stu add qiudao varchar(20),add gcc int;
mysql> alter table stu add test varchar(20),add qq int;
#指定位置进行添加列(表首)
mysql> alter table stu add dsb varchar(20) first;
mysql> alter table stu add classid varchar(20) first;
#指定位置进行添加列(指定列)
mysql> alter table stu add ggj int after zy;
mysql> alter table stu add phone int after age;
#删除指定的列及定义
mysql> alter table stu drop zy;
mysql> alter table stu drop qq;
#修改列及定义(列属性)
mysql> alter table stu modify zzy varchar(10);
#修改列及定义(列名及属性)
mysql> alter table stu change zzy lhd char(20);
#导入之前备份的数据到数据库内
[root@web03 ~]# mysql -h 127.0.0.1 -P 3307 -u root -p1 < /usr/local/packages/world.sql  #在数据库外导入
mysql> source /usr/local/packages/world.sql  #在数据库内利用source命令导入

你可能感兴趣的:(Linux数据库,数据库)