1.连接服务器:
mysql -uroot -p密码 2.修改登录密码:
3.查看mysql版本信息
status 4.离开服务器
exit;
数据库的基础操作
注意:mysql语句在命令行操作一定要加分号,在navicat软件中可以不加分号,在mycli中也可不加。
1.查看所有数据库:
show databases; 2.新建数据库:
(注意不能重名,由字母 数字 下划线 @ #组成,首字母不能是下划线和
,不能有空格和其他特殊字符。并且最好指明数据库的编码格式,以下为5.7版本通用格式,以免后期维护;
utf8mb4比utf8字符集多了emoji编码支持;
简单的理解 utf8mb4 是目前最大的一个字符编码,支持任意文字;
utf8_unicode_ci比较准确,utf8_general_ci速度比较快。
通常情况下 utf8_general_ci的准确性就够我们用的了,在我看过很多程序源码后,发现它们大多数也用的是utf8_general_ci,所以新建数据 库时一般选用utf8_general_ci就可以了。如果是utf8mb4那么对应的就是 utf8mb4_general_ci 、utf8mb4_unicode_ci。
create database 库名; create database 库名 charset utf8mb4 collate utf8mb4_general_ci; 3.查看数据库语句:
show create database 库名; 4.进入数据库:
use 库名; 5.删库(要谨慎):
drop database 库名;
表操作
1.查看所有表
show tables; 2.建表
create table 表名字(列名 数据类型, … ) charset=utf8; 3.查看建表语句
show create table 表名; 4.以表格方式查看表
describe 表名; 或 desc 表名; 5.删表
drop table 表名;
Mysql数据类型
mysql提供了整数类型、浮点数类型、日期和时间类型、字符串类型等
- 整数类型 int unisgned指明无符号
TINYINT(1个字节) SMALLINT(2个字节) MEDIUMINT(3个字节) INT和INTEGER(4个字节) BIGINT(8个字节)
浮点数 FLOAT(4字节 适合小于10位) DOUBLE(8字节 适合大于10位)
日期时间类型 DATE (4字节 如表示年月日) DATETIME (8字节 如表示年月日时分秒) TIMESTAMP (如果经常插入或者更新日期为当前系统日期,或者全球化系统 ,最小值时间戳为19700101000001) TIME (3字节 如只需时分秒) YEAR (1字节)
字符串类型 CHAR(M) :M字节数为最大字节数 0~255之间
VARCHAR(M):字符串长度经常变化用varchar 0~65535之间
- text系列字符串,不指定长度
mysql5.7的各个长度:TINYTEXTTEXTMEDIUMTEXTLONGTEXT
TINYTEXT单字节字符集(如 latin1): 255 字符多字节字符集(如 utf8mb4): 约 63 字符(255 / 4)TEXT单字节字符集(如 latin1): 65535 字符多字节字符集(如 utf8mb4): 约 16383 字符(65535 / 4)MEDIUMTEXT单字节字符集(如 latin1): 16777215 字符多字节字符集(如 utf8mb4): 约 4194303 字符(16777215 / 4)LONGTEXT单字节字符集(如 latin1): 4294967295 字符多字节字符集(如 utf8mb4): 约 1073741823 字符(4294967295 / 4)
比较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
- NULL:空属性很重要,空数据没有意义
- default:默认值
- 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:唯一值允许自动为空,添加跟追加用法与主键一样
- atuo_increment :自增长,前提自身是一个索引,一张表只能有一个自增长:
create table 表名(id int primary key auto_increment comment “用户id”,..);
- comment:列描述没有实际含义,只是方便了解。
