MySQL使用指令

前言

记录一些MySQL的基础语句

操作MySQL的命令

MySQL数据库、表的操作

show databases;  //查看数据库
use xxxdatabase;   //使用某个数据库
show tables;     //选定了数据库后,可查看相应数据库下的表
describe tablename;     //查看表的结构
show create table tablename;    //查看表结构等详情
show variables like 'charac%';    //查看mysql编码格式
show variables like 'port';    //查看端口号
create database databasename;    //创建数据库
drop database databasename;    //删除数据库
drop table tablename;     //删除表 但需要先use 相应数据库

创建数据表

通用语句

CREATE TABLE table_name(column_name column_type);

示例

CREATE TABLE IF NOT EXISTS `t_student`(
   'id' INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

将字段设置为NOT NULL,在操作数据库时,若输入该字段为NULL,就会报错。

AUTO_INCREMENT 为自增属性,一般用在主键,可以用AUTO_INCREMENT=10,设置初始值。

PRIMARY_KEY 定义列为主键,不定义则默认为‘id’。复合主键用逗号分隔即可

数据类型
整数
类型大小范围
TINYINT1字节(-128,127) 2^7
SMALLINT2字节(-32768,32767) 2^15
MEDIUMINT3字节2^23
INT4字节2^31
BIGINT8字节2^63
实数
类型大小范围
FLOAT4字节1bit 符号位 8bits 指数位 23bits 小数
DOUBLE8字节1bit 符号位 16bits 指数位 47bits 小数
DECIMAL8字节1bit 符号位 16bits 指数位 47bits 小数

DECIMAL类型从MySQL 5.1引入,列的声明语法是DECIMAL(M,D),多用在金钱上。
M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M 的默认值是10。
D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。
decimail(M,D)占M+2个字节。

文本
类型大小
CHARutf-8 每个字符占3个字节
VARCHAR存储变长字符串

char 最多能存放的字符个数 255,和编码无关。

varchar类型,用于存储变长字符串,只占用必要的存储空间。由于是变长,因此需要一个字节存储字符串的长度(字符串长度小于255时),字符串长度大于255时,用两个字节存储字符串长度。

  1. 使用最小的符合需求的长度。

  2. 系统上线后尽量不要修改VARCHAR的长度,因为在mysql 5.7之前,只要一修改就会发生锁表。

  3. VARCHAR(5)和VARCHAR(200)存储’AAAAA’这一个字符串时都是使用一个额外的字节来记录字符串的长度,那么他们的性能有什么不同呢?

    VARCHAR(5)优于VARCHAR(200)

    因为MySQL为了能够更有效的优化查询,对于VARCHAR字段使用的是其最大的宽度来分配内存,所以如果我们把宽度定的太长就会消耗更多的内存。

时间
类型大小
DATATIME格式:yyyy-MM-dd HH:mm:ss 占8个字节 时间范围:1000-1-1 00:00:00至9999-12-31 23:59:59
TIMESTAMP格式:yyyy-MM-dd HH:mm:ss 占4个字节
DATE格式:yyyy-MM-dd 占3个字节 范围为1000-01-01到9999-12-31
TIME格式:HH:MM:SS 占3个字节 范围为’-838:59:59’/‘838:59:59’
YEAR格式:YYYY 占1个字节 范围为1901~2155

说明:timestamp 是自动存储记录修改的时间
timestamp将客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储,查询时又将其转化为客户端当前时区的时间返回。
datetime不做任何改动,原样输入原样输出。
另外,两者范围不一样,timestamp存储的时间范围:‘1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’
datetime存储的时间范围:‘1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’

增删改查(CRUD)

INSERT INTO table_name
    -> (name, age)
    -> VALUES
    -> ("Tom", 10);


delete from tablename WHERE id=3;   //删除表中数据

select * from tablename; //查看表中的内容

修改数据库编码格式

在/etc/mysql/my.cnf或者conf.d文件夹下创建一个*.cnf文件,写入以下两行代码

[mysqld]
character-set-server=utf8

重启mysql

sudo service mysql restart

改好编码格式后再创建数据库

备注

关于主键

1、主键应当对用户没有意义
2、主键应当由计算机自动生成
3、主键不应包含动态变化的数据,如时间戳
4、不要更新主键
5、主键最好是单列,可以提高连接和筛选操作的效率

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值