Mysql数据库的基本使用
服务端
1.安装:sudo apt-get install mysql-service
2.启动:sudo service mysql start
3.查看进程中是否存在mysql服务:ps ajx|grep mysql (/usr/sbin/mysqld)
4.停止服务:sudo service mysql stop
5.重启服务:sudo service mysql restart
6.查看配置文件:配置文件目录为/etc/mysql/mysql.conf.d/mysqld.cnf
客户端
1.安装:sudo apt-get install mysql-client
2.连接服务器:mysql -u root(用户名) -p mysql(密码)
3.退出:ctrl+d 或 exit 或 quit
4.修改输入提示符:prompt 提示符 (\D完整日期,\d数据库名称,\u用户,\h主机)
5.清屏:ctrl+shift+l
数据库操作
1.查看所有数据库: show databases;
2.创建数据库:create database 数据库名 charset = utf-8;
3.使用数据库:use 数据库名;
4.查看当前使用的数据库:select database();
5.删除数据库:drop database 数据库名;
数据表操作
1.查看所有数据表: show tables;
2.创建表:
create table table_name(
column1 datatype constraint,
column2 datatype,
...
columeN datatype,
PRIMARY KEY(one or more columns)
);
实例:
create table students(
id int unsigned primary key auto_increment not null,
name varchar(20) not null,
age tinyint unsigned default 0,
height decimal(5,2),
gender enum("男","女","保密") default "保密"
);
3.查看表的创建语句: show create table 表名;
4.查看表结构: desc 表名;
5.修改表结构
5.1.添加字段:alter table 表名 add 字段名 类型;
alter table students add birthday datetime;
5.2.修改字段类型: alter table 表明 modify 字段名 新类型及约束;
alter table students modify birthday date not null;
5.3.字段重命名: alter table 表名 change 旧名 新名 类型及约束;
alter table students change birthday birth date not null;
6.删除表: drop table 表名;
数据操作
1.基本查询
1.1.查询表中所有数据: select * from 表名;
select * from students;
1.2.查询指定列的数据: select column1, column2,... from 表名;
select name, height from students;
2.添加数据
2.1.全列插入:insert into 表名 values(...)[,(...)...];
insert into students values(0,"悟空",40,178.50,"男","1980-10-01");
insert into students values(0,"悟饭",20,180.00,"男","2000-10-2"), (0,"比克",default,190,default,"1950-1-1");
2.2.部分插入:insert into 表名 (列1,列2,...) values(值1,值2,...)[,(值1,值2,...)];
insert into students (name,age,birth) values("贝吉塔",60,"1970-1-1");
insert into students (name,birth) values("特兰克斯","2008-12-1"),("悟天","2009-12-2");
3.修改数据
update 表名 set 列1=值1,列2=值2...where 条件;
update students set age=12 where name="特兰克斯";
4.删除数据
4.1.物理删除
delete from 表名 where 条件;
delete from students where name="悟天";
4.2.逻辑删除(设置isdelete字段,类型为bit,默认值为0,需要删除数据时修改isdelete=1)
(alter table students add isdelete bit default 0 not null;)
update students set isdelete=1 where 条件;
数据库备份
1.备份:运行mysqldump命令
mysqldump -u root -p 数据库名 > python.sql(保存到*.sql文件)
# 按提示输入密码
2.恢复
2.1.连接mysql服务器,创建新的数据库,退出登录
2.2.mysql -u root -p 新数据库名 < python.sql
# 按提示输入密码
数据完整性
一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中。为了在表中更加准确的存储数据,保证数据的完整有效,
可以在创建表的时候为表添加一些强制性的验证,包括数据字段的类型和约束。
1.数据类型
使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。
常用数据类型如下:
整数:int,bit
小数:decimal
字符串:varchar,char
日期时间: date, time, datetime
枚举类型(enum)
特别说明的类型如下:
decimal 表示浮点数,如decimal(5,2)表示共存5位数,小数占2位
char 表示固定长度的字符串,如char(3),如果填充‘ab‘时会补一个空格为‘ab ‘
varchar 表示可变长度的字符串,如varchar(3),填充‘ab‘时就会存储‘ab‘
字符串 text 表示存储大文本,当字符大于4000时推荐使用
对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
2.约束
主键 primary key:物理上存储的顺序
非空 not null:此字段不允许填写空值
惟一 unique :此字段的值不允许重复
默认 default:当不填写此值时会使用默认值,如果填写时以填写为准
外键 foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,
都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制