2、常用操作

配置远程连接:win10下连接ubuntu中的mysql

在ubuntu中的相关操作:

1、修改mysql配置文件中的绑定地址修改为四个零

/etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 0.0.0.0

2、进入mysql

grant all on *.* to admin@'%' identified by '123456' with grant option;    #admin用户名,123456ubuntu中mysql密码 
flush privileges;

grant all privileges on *.* to 'admin'@'%' identified by '123456' with grant option;
flush privileges;

use mysql

select user,host from user;

另外,也可确认下端口,默认是3306  show global variables like 'port';

3、重启mysql

service mysql restart

4、此时在win下使用Navicat就能连接

查看ubuntu的ip:ip addr show

5、远程连接

mysql -hip地址 -u用户 -p

登录后:

数据库:(文件夹操作)

看版本:select version();#5.7.20

显示所有数据库:show  databases;

切换/选择数据库:use dbname

查看当前使用的db:select database();

创建db:create dababase dbname charset=utf8;

删除db:drop database dbname;

表:(文件操作)

创建表可以指定引擎engine=innodb

注:innodb支持事务,原子操作;myisam支持全局索引

显示当前数据库中所有的表:show tables;

删除表:drop table 表名;

清空表:delete from 表名;再次插入,自增列从删除前开始。如果要改变下一次自增值则,alter table 表名  auto_increment=值;

清空表:truncate  table  表名;速度快,再次插入,自增列从1开始

例:创建表

mysql> create table students( id int auto_increment primary key not null, name varchar(10) not null, gender bit default 1, birthday datetime);
字段名 类型 约束
id行较多,当作固定写法记住即可

查看表的结构:desc students;

修改表:alter table 表名 add/change/drop 列名 类型;

建表没有主键:alter table class change id id int  primary key;

例:alter  table students add isDelete  bit  default  0;

mysql> alter table students change name sname char(20) not null;
Query OK, 5 rows affected (1.51 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select * from students;
+----+--------+--------+---------------------+----------+
| id | sname  | gender | birthday            | isDelete |
+----+--------+--------+---------------------+----------+
|  1 | 鲤鱼   |       | 1991-01-01 00:00:00 |          |
|  3 | ee     |        | 2017-01-01 00:00:00 |         |
|  4 | mike   |        | NULL                |          |
|  5 | ldh    |       | 2016-05-09 00:00:00 |         |
|  6 | res    |        | 2016-08-09 00:00:00 |          |
+----+--------+--------+---------------------+----------+

改表名:rename  table  原表名   to 新表名;

查看表的创建语句:show create   table  表名;

数据行操作:

增加:语法:insert  into  表名  其它;

第一种、全列插入

mysql> insert into students values(0,'ee',1,'1919-1-1',0);    #按照列的顺序写,值数量和字段数量一致,id列由数据库自动生成,这里起到占位作用
Query OK, 1 row affected (0.20 sec)

mysql> select * from students;
+----+--------+--------+---------------------+----------+
| id | name   | gender | birthday            | isDelete |
+----+--------+--------+---------------------+----------+
|  1 | 鲤鱼   |       | 1991-01-01 00:00:00 |         |
|  2 | ly     |       | NULL                |          |
|  3 | ee     |       | 1919-01-01 00:00:00 |          |
+----+--------+--------+---------------------+----------+

第二种、部分列插入

insert into students(gender,name)  values(0,'mike');

值的顺序和前面的一致。

第三种、一次插入多行

  a、全列插入多行:insert  into  表名  values(),(),......;

  b、部分列插入多行:insert  into   表名(列1,列2,...)  values(值1,值2,...),(值1,值2,...)....;

第四种、跨表插入

mysql> insert into class(caption) select tname from teacher where tid=2 or tid=3;

修改:

mysql> update students set gender=0,birthday='2017-1-1' where id=3;  #where后是条件
Query OK, 1 row affected (0.13 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from students;
+----+--------+--------+---------------------+----------+
| id | name   | gender | birthday            | isDelete |
+----+--------+--------+---------------------+----------+
|  1 | 鲤鱼   |       | 1991-01-01 00:00:00 |         |
|  2 | ly     |       | NULL                |          |
|  3 | ee     |        | 2017-01-01 00:00:00 |          |
|  4 | mike   |        | NULL                |          |
+----+--------+--------+---------------------+----------+

删除:物理删除

delete from students where id=2;

逻辑删除:本质为修改

mysql> select * from students;  #此时最后一列值为全为0
+----+--------+--------+---------------------+----------+
| id | name   | gender | birthday            | isDelete |
+----+--------+--------+---------------------+----------+
|  1 | 鲤鱼   |       | 1991-01-01 00:00:00 |         |
|  3 | ee     |        | 2017-01-01 00:00:00 |          |
|  4 | mike   |        | NULL                |          |
+----+--------+--------+---------------------+----------+

mysql> update students set isDelete=1 where id=3;  #id=3,最后一列值改为1
Query OK, 1 row affected (0.08 sec)

mysql> select * from students where isDelete=0;  #显示表,设置条件
+----+--------+--------+---------------------+----------+
| id | name   | gender | birthday            | isDelete |
+----+--------+--------+---------------------+----------+
|  1 | 鲤鱼   |       | 1991-01-01 00:00:00 |          |
|  4 | mike   |        | NULL                |          |
+----+--------+--------+---------------------+----------+

 备份和恢复:项目迁移时用到

备份

l@l:~$ sudo -s    #获取管理员权限
[sudo] l 的密码: 
root@l:~# cd /var/lib/mysql    #进入mysql目录
root@l:/var/lib/mysql# mysqldump -uroot -p lx >~/lx.sql;  #指定备份的数据库名,备份到的位置+sql文件
Enter password: 
root@l:/var/lib/mysql#   #此时家目录就有了lx.sql的备份文件

数据恢复:

root@l:/# exit  #可以退出管理员权限了
exit
l@l:~$ ls  #有了lx.sql文件
Desktop     Documents  examples.desktop  Music   Public     Videos
Downloads lx.sql Pictures Templates l@l:
~$ mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> create database lxbak charset=utf8;  #连接数据库后创建新的数据库,lxbak Query OK, 1 row affected (0.07 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | lx | | lxbak | | mysql | | performance_schema | | sys | +--------------------+ mysql> exit  #退出数据库 Bye l@l:~$ mysql -uroot -p lxbak < lx.sql   #恢复 Enter password: l@l:~$ mysql -uroot -p    #进入并查看 Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> use lxbak Database changed mysql> show tables; +-----------------+ | Tables_in_lxbak | +-----------------+ | students | +-----------------+ mysql> select * from students; +----+--------+--------+---------------------+----------+ | id | name | gender | birthday | isDelete | +----+--------+--------+---------------------+----------+ | 1 | 鲤鱼 |  | 1991-01-01 00:00:00 | | | 3 | ee | | 2017-01-01 00:00:00 |  | | 4 | mike | | NULL | | +----+--------+--------+---------------------+----------+

 唯一索引:用于快速查找。约束不能重复(可以为空),主键不能重复并不能为空。如在创建表时:

  • unique  约束名  (约束字段1,约束字段二)

外键:

  • 一对一:外键+unique。如用户信息表和登录表,登录表中有权限的用户才设密码,外键用户+唯一约束。
  • 一对多:通常情况
  • 多对多:如用户表、主机表、主机用户关系表
mysql> create table class(cid int not null auto_increment primary key,caption char(20)) engine=innodb;
Query OK, 0 rows affected (0.28 sec)
mysql> insert into class values(0,'材料一班'),(0,'材料二班'),(0,'材料三班');
Query OK, 3 rows affected (0.09 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> create table student(
                sid int not null auto_increment primary key,
                sname varchar(10) not null,gender char(3) not null,
                class_id int not null,
                constraint fk_class_student foreign key (class_id) references class (cid)
                ); Query OK,
0 rows affected (0.34 sec) mysql> insert into student values (0,'章鱼','',2),(0,'李杰','',1),(0,'吴雨','',2); Query OK, 3 rows affected (0.05 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> create table teacher(tid int not null auto_increment primary key,tname char(10)) engine=innodb; Query OK, 0 rows affected (0.53 sec) mysql> create table course(
                cid int not null auto_increment primary key,
                cname char(10),
                tearch_id int not null,
                constraint fk_teacher_course foreign key (tearch_id) references teacher (tid)
                ); Query OK,
0 rows affected (0.27 sec) mysql> show tables; +--------------+ | Tables_in_lx | +--------------+ | class | | course | | student | | teacher | +--------------+ 4 rows in set (0.00 sec) mysql> insert into teacher values (0,'张老师'),(0,'任丘'),(0,'李三'); Query OK, 3 rows affected (0.11 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into course values (0,'高数',2),(0,'大化',1),(0,'物理',1); Query OK, 3 rows affected (0.09 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> create table score(
                sid int not null auto_increment primary key,
                student_id int not null,
                course_id int not null,
                number int not null,
                constraint fk_score_student foreign key (student_id) references student (sid),
                constraint fk_score_course foreign key (course_id) references course (cid)
                ); Query OK,
0 rows affected (0.51 sec) mysql> insert into score values (0,3,2,68),(0,2,2,90),(0,1,3,75); Query OK, 3 rows affected (0.09 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from class; +-----+----------+ | cid | caption | +-----+----------+ | 1 | 材料一班 | | 2 | 材料二班 | | 3 | 材料三班 | +-----+----------+ 3 rows in set (0.00 sec) mysql> select * from student; +-----+-------+--------+----------+ | sid | sname | gender | class_id | +-----+-------+--------+----------+ | 1 | 章鱼 | 男 | 2 | | 2 | 李杰 | 女 | 1 | | 3 | 吴雨 | 女 | 2 | +-----+-------+--------+----------+ 3 rows in set (0.00 sec) mysql> select * from teacher; +-----+--------+ | tid | tname | +-----+--------+ | 1 | 张老师 | | 2 | 任丘 | | 3 | 李三 | +-----+--------+ 3 rows in set (0.00 sec) mysql> select * from course; +-----+-------+-----------+ | cid | cname | tearch_id | +-----+-------+-----------+ | 1 | 高数 | 2 | | 2 | 大化 | 1 | | 3 | 物理 | 1 | +-----+-------+-----------+ 3 rows in set (0.00 sec) mysql> select * from score; +-----+------------+-----------+--------+ | sid | student_id | course_id | number | +-----+------------+-----------+--------+ | 1 | 3 | 2 | 68 | | 2 | 2 | 2 | 90 | | 3 | 1 | 3 | 75 | +-----+------------+-----------+--------+ 3 rows in set (0.00 sec)
渐变 --> 突变
原文地址:https://www.cnblogs.com/lybpy/p/8017598.html