准备工作
开启服务器
··windows系统:
方法1.搜索服务,找到mysql并开启.
方法2.如果安装的是5.7版本,cmd中输入:
net start MySQL57
··Mac系统:
系统偏好设置开启mysql,然后命令行运行以下代码出现base字样即可:
source .bash_profile
连接服务器:
mysql -uroot -p密码
修改登录密码:
set password for root@localhost = password("新密码");
比如:set password for root@localhost = password("abcd");
离开服务器
exit;
数据库的基础操作
注意:mysql语句在命令行操作一定要加分号,在navicat软件中可以不加分号,在mycli中也可不加。
查看所有数据库:
show databases;
新建数据库:
(注意不能重名,由字母 数字 下划线 @ #$组成,首字母不能是下划线和$ ,不能有空格和其他特殊字符。并且最好指明数据库的格式,以下为5.7版本通用格式,以免后期维护。)
create database 库名;
create database 库名 charset utf8mb4 collate utf8mb4_general_ci;
3.查看数据库语句:
show create database 库名;
进入数据库:
use 库名;
删库(要谨慎):
drop database 库名;
表操作
查看所有表
show tables;
建表
create table 表名字(列名 数据类型, ... ) charset=utf8;
查看建表语句
show create table 表名;
以表格方式查看表
describe 表名; 或 desc 表名;
删表
drop table 表名;
Mysql数据类型
mysql提供了整数类型、浮点数类型、日期和时间类型、字符串类型等
1. 整数类型
int unisgned指明无符号
TINYINT
(1个字节)SMALLINT
(2个字节)MEDIUMINT
(3个字节)INT
和INTEGER
(4个字节)BIGINT
(8个字节)
2. 浮点数
FLOAT(4字节 适合小于10位)
DOUBLE(8字节 适合大于10位)
3. 日期时间类型
DATE (4字节 如表示年月日)
DATETIME (8字节 如表示年月日时分秒)
TIMESTAMP (如果经常插入或者更新日期为当前系统日期,或者全球化系统 ,最小值时间戳为19700101000001)
TIME (3字节 如只需时分秒)
YEAR (1字节)
4. 字符串类型
CHAR(M) :M字节数为最大字节数 0~255之间
VARCHAR(M):字符串长度经常变化用varchar 0~65535之间
3. text系列字符串,不指定长度
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
比较char , varchar , text:
检索效率:char>varchar>text
char:存储定长数据很方便,CHAR字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填充).
varchar:存储变长数据,但存储效率没有CHAR高,必须在括号里定义长度,可以有默认值。保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留。另外,varchar类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。
text:存储可变长度的非Unicode数据,最大长度为2^31‐1个字符。text列不能有默认值,存储或检索过程中,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入。
结论:
·经常变化的字段用varchar
·知道固定长度的用char, 如身份证
·能用varchar的地方不用text
·能用数字类型字段的尽量用数字类型而不是字符型,因为字符型每次都逐个比较,数值型只比较一次就够了
列属性
有:NULL / NOT NULL ,default , primary key , unique key , atuo_increment , comment
1. NULL:空属性很重要,空数据没有意义
2. default:默认值
3. primary key:主键,一张表只能有1个主键,不能重复,唯一,可以是复合主键
··添加主键:
create table 表名(id int primary key comment "用户id",..);
create table 表名(... ,primary key(user_id,article_id));
··追加主键:
alter table 表名 add primary key(user_id,article_id);
··删除主键:
alter table 表名 drop primary key;
unique key:唯一值允许自动为空,添加跟追加用法与主键一样
5. atuo_increment :自增长,前提自身是一个索引,一张表只能有一个自增长:
create table 表名(id int primary key auto_increment comment "用户id",..);
comment:列描述没有实际含义,只是方便了解。
基于python的工具mycli
pip install mycli
mycli -uroot -p密码
后面操作跟mysql是一样,优点在于mycli使用时有提示,相对方便。