MySQL基础操作

MySQL语法

注释:

  • 单行注释:--这是注释

  • 多行注释:

    /*
    这是注释
    这是注释
    这是注释
    这是注释
    */
    

mysql语句不区分大小写,建议小写

针对数据库的基本操作

操作数据库->操作数据库的表->操作数据库的表中的数据

连接数据库

mysql -uroot -p密码          #-p和密码之间没有空格

查看全部数据库

show databases;

使用某个数据库(假设有个数据库为:school)

use school;

如果名称是sql中的一些关键字,要加反引号

use `user`;

针对数据库里面的表的操作

查看该数据库所有的表 show

show tables;

查看某个表信息desc(假设在该数据库中有个表为:student):

describe student;
或
desc student;

创建数据库 create; (中括号 [] 表示可选)

create database [if not exist] school;

删除数据库:drop

drop database [if exist] school;

数据表

数据类型

【数值型】

  1. tinyint: 1个字节(-127~128)
  2. smallint: 2个字节
  3. mediumint: 3个字节
  4. int:4个字节
  5. bigint:8个字节
  6. float:4个字节
  7. double:8个字节
  8. decimal:字符串形式的浮点数(金融计算常用)

【字符串】

  1. char:1个字节(0~255)
  2. varchar:可变字符串 0~65535
  3. tinytext: 微型文本 2^8-1
  4. text:文本串 2^16-1

【时间日期】

  1. date YYYY-MM-DD, 日期格式
  2. time HH:mm:ss 时间格式
  3. datetime YYYY-MM-DD HH:mm:ss (最常用)
  4. timestamp 1970.1.1到现在的毫秒数(较常用)
  5. year:年份

【NULL型】

没有值,未知

注意,不要使用NULL进行运算,结果为NULL

字段属性(重要)

每一列(称为字段)都有多个属性,用于描述该列的特征

  • unsigned

    无符号整数,表示该列不能为负数

  • zerofill

    • 0填充的
    • 不足的位数用0填充,如:int(3); --输入数字5,自动转为 005
  • 自增 auto_increment

    自动在一条记录的基础上(默认) +1

    必须是整数类型

  • 非空 NOT NULL

    • 假设为 not null: 如果不给他赋值,会报错

【创建一张表】

CREATE TABLE
IF
	NOT EXISTS `student` (
	`id` INT ( 4 ) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR ( 30 ) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`password` VARCHAR ( 30 ) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR ( 2 ) NOT NULL DEFAULT '保密' COMMENT '性别',
	`age` INT ( 3 ) NOT NULL DEFAULT 18 COMMENT '年龄',
	PRIMARY KEY ( `id` ) -- 主键
	
	) ENGINE = INNODB DEFAULT CHARSET = utf8;

创建表格式( []里面的内容表示可有可无 ):

CREATE TABLE [IF NOT EXISTS] `表名`(
	`字段名` 列类型 [属性] [索引] [注释],
	`字段名` 列类型 [属性] [索引] [注释],
	`字段名` 列类型 [属性] [索引] [注释],
	`字段名` 列类型 [属性] [索引] [注释],
	...
	`字段名` 列类型 [属性] [索引] [注释]
)[表类型] [字符集设置] [注释]

在创建完一个数据库或者表后,可以用以下语句:

SHOW CREATE DATABASE school; -- 查看创建数据库时的语句
SHOW CREATE TABLE student; 	-- 查看创建表时的语句
DESC student;   -- 显示表的结构

数据库引擎

  1. INNODB(默认使用)
  2. MYISAM
MYISAM INNODB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表的空间大小 较小 较大,为MYISAM的2倍

事务

  • 是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以

占用空间:

  • InnoDB的B+树主键索引的叶子节点就是数据文件,辅助索引的叶子节点是主键的值;

  • 而MyISAM的B+树主键索引和辅助索引的叶子节点都是数据文件的地址指针。

常用操作:

  • MYISAM: 节约空间,速度快
  • INNODB:安全性高,事务处理,多表多用户操作

物理空间存在位置:

所有数据文件都在data目录下,本质还是文件存储

  • MYISAM对应文件:
    • *.frm 表结构定义
    • *.MYD 数据文件
    • *.MYI 索引文件
  • INNODB:只有 *.frm 文件,以及上级目录下ibdata1文件

设置字符集编码

CHARSET=utf8

MySQL默认字符集 Latin1, 不支持中文

可以在 my.ini文件配置,但发到别人电脑时可能会出错,最好在创建表时也写上

修改、删除表

修改表的结构:ALTER TABLE

修改表名

ALTER TABLE teacher RENAME AS teacher1;

增加表的字段

ALTER TABLE teacher1 ADD age INT(11)

修改表的字段(字段名,字段类型)

ALTER TABLE teacher1 MODIFY age VARCHAR(11)  -- 修改字段类型
ALTER TABLE teacher1 CHANGE age age1 int(11) -- 字段重命名

删除表的字段

ALTER TABLE teacher1 DROP age1;

删除表 DROP TABLE

drop table [if exists] teacher;   -- 一般加上判断,避免出错
posted @ 2022-03-14 17:16  aJream  阅读(25)  评论(0编辑  收藏  举报