Mysql 数据库基础知识及常用指令(1)

Mysql安装配置

my.ini ——>配置文件 端口号:3306

default-character-set = utf8 -->默认编码方式

basedir = 基础安装目录

datadir = 数据文件存放的目录

character-set-server= utf8 在服务器上的存储方式

启动和关闭mysql 图形化界面(服务列表)/命令行界面

net start mysql 启动服务
net stop mysql 停止服务

mysql的操作梗概:

  1. 登录退出
  2. 修改mysql提示符
  3. mysql常用命令
  4. mysql语句规范
  5. 数据库操作

登陆与退出

登陆:

mysql -u  --user=name  用户名
mysql -u root  
mysql -p  --password[=name]  密码
mysql -uroot -p    
mysql -P --port=#    端口
mysql -P3306    
mysql -h  --host=name 服务器名称    
mysql -h 127.0.0.1
mysql -uroot -p123456 -P3306 -h127.0.0.1

退出

exit;  
quit;  
/q;

通用查询

select version();   查看版本
show engines;       查看引擎
select user();      查看当前用户

mysql语法规范

  1. 关键字与函数名称全部大写
  2. 数据库名称,表名称,字段名称全部小写
  3. sql语句必须以分号结尾

创建数据库
说明:{必选项} [可选项]

  CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name  

  CREATE DATABASES study;    

  SHOW {DATABASE|SCHEMAS} [LIKE 'pattern'| WHERE expr]

  SHOW WORNINGS;      查看错误信息  

  SHOW CREATE DATABASE study;

  CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET utf8;   

修改数据库

ALTER {DATABASE|SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name;  

ALTER DATABASE t2 CHARACTER SET gbk;  

删除数据库

DROP {DATABASE|SCHEMA} [IF EXISTS] db_name;  

数据类型

数据类型是指列,储存过程参数,表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。    

整型

  1. TINYINT: 1kb
  2. SMALLINT: 2kb
  3. MEDIUMINT: 3kb
  4. INT: 4kb
  5. BIGING: 8kb

浮点型

  1. FLOAT[(m,d)] m是数字总位数,d是小数点后面的位数,默认精确到7位小数值
  2. DOUBLE[(m,d)]

日期时间型 存储需求

  1. YEAR 1 1000-9999
  2. TIME 3 1000-9999
  3. DATE 3
  4. DATETIME 8
  5. TIMESTAMP 4 1970-2037

字符型

  1. CHAR
  2. VCHAR
  3. TINYTEXT
  4. TEXT
  5. MEDIUMTEXT
  6. LONGTEXT
  7. ENUM('VALUE1':'VALUE2'...)
  8. SET('VALUE':'VALUE2'...)

数据表操作:数据表是数据库最重要的组成部分之一,是其他对象的基础
行成为记录 列称之为字段

  • USE 打开数据库,USE数据库名称
    SELECT DATABASE();  //查看用户打开的数据
    CREATE TABLE [IF NOT EXISTS] table_name(
        column_name data_type,
        ...
    )
    
    > CREATE TABLE tb1(
        username VARCHAR(20),
        age TINYINT UNSIGNED,
        salary FLOAT(8,2) UNSIGNED
    );
    
    

查看数据表是否存在

  • SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]

查看数据表的结构

  • SHOW COLULMNS FROM tb1;
  • DESCRIBE tb1;

向表中插入数据

  • INSERT tb1 VALUES('TOM', 20, 1234.12);
  • INSERT tb1(username, salary) VALUES('jack', 1123.12);

查找语句

  • SELECT expr,... FROM tbl_name;

空值与非空

  • NULL NOT NULL
  • INSERT tb2 VALUES('java', NULL);

AUTO_INCREAMENT

  • 当插入没有成功的时候编号也自增一
  • 自动编号且必须与主键组合使用
  • 默认情况下,起始值为1,每次的增量为1

PRIMARY KEY

  • 主键约束
  • 每张数据表只能存在一个主键
  • 主键保证记录的唯一性(行为记录,列为字段)
  • 逐渐自动为NOT NULL
  • AUTO_INCREMENT必须和主键一起使用,主键不一定和AUTO_INCREMENT一起使用

UNIQUE KEY

  • 唯一约束
  • 唯一约束可以保证记录的唯一性
  • 唯一约束的字段可以为空值(null)只能有一个空值
  • 每张数据表可以存在多个唯一约束

DEFAULE

  • 默认值
  • 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值,
    CREATE TABLE tb(  
        id SMALLINT UNSIGNED KEY AUTO_INCREMENT,  
        username VARCHAR(20) UNIQUE KEY,  
        sex ENUM('1', '2', '3') DEFAULT'3'  
    );
    

约束

  • 约束保证数据的完整性和一致性
  • 约束分为表级约束和列级约束
    • 约束所针对字段的数目的多少来决定的
    • 某一个字段列级约束
    • 两个或两个以上的字段称为表级约束
  • 约束类型包括 功能
    • NOT NULL
    • PRIMARY KEY
    • UNIQUE KEY
    • DEFAULT
    • FOREIGN KEY 外键约束
      • 保证数据一致性,完整性
      • 实现一对一或一对多的关系

外键约束

  • 父表和字表必须使用相同的存储引擎,而且禁止使用临时表
  • 数据表的存储引擎只能为InnoDB
  • 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
  • 外键列和参照列必须创建索引。如果外键列不存在索引的话,MYSQL将自动创建索引
CREATE TABLE provinces(
    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    pname VARCHAR(20) NOT NULL
);

CREATE TABLE users(
    username VARCHAR(20) NOT NULL,
    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    pid SMALLINT UNSIGNED,
    FOREIGN KEY(pid) REFERENCES provinces(id) ON DELETE CASCADE ON UPDATE CASCADE
);

编辑数据表的默认搜索引擎
mysql配置文件(mysql.ini):default-storage-engine = INNODB

indexes
SHOW INDEXES FROM provinces\G;

  • 主键在创建时自动创建索引

外键约束的参照操作
物理外键

  • CASCADE: 从父表删除或更新且自动删除或更新字表中匹配的行。
    • insert table users(pid,username) values ('A', tom);
    • delete from provices where id = 3;
    • 必须先在父表中插入记录然后才能在子表中插入记录
    • FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE
  • SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。 如果使用该选项,必须保证字表列没有指定NOT NULL
  • RESTRICT:拒绝对父表的删除更新操作
  • NO ACTION: 标准SQL的关键字,在Mysql中与RESTRICT相同

表级约束和列级约束

  • 对一个数据列建立的约束,成为列级约束
  • 对多个数据列建立的约束,成为表级约束
  • 列级约束既可以在列定义时声明,也可以在列定义后声明,表级约束只能在列顶以后声明。

修改数据表

  • 添加主键约束:ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY[index_type] (index_col_name..... )
    • ALTER TABLE users ADD CONSTAINT users_id PRIMARY KEY (id);
  • 添加唯一约束:ALTER TABLE tbl_name ADD[CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] (index_col_name,...)
    • ALTER TABLE users ADD UNIQUE (username)
  • 添加外键约束: ALTER TABLE users ADD FOREIGN KEY(pid) REFERENCES provinces (id);
  • 添加或删除默认约束:ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal| DROP DEFAULT}
  • 添加单列:ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]
  • 添加多列:ALTER TABLE tbl_name ADD [COLUMN] (col_name column_defination, ...) 不能指定位置关系
  • 删除主键约束:ALTER TABLE tbl_name DROP PRIMARY KEY;
  • 删除唯一约束:ALTER TABLE tbl_name DROP INDEXEX username;
  • 删除外键约束:
    • SHOW CREATE TABLE users2; (CONSTRAINT 'users2_ibfk_1')

删除列
ALTER TABLE tbl_name DROP [COLUMN] col_name

修改数据表

  • 修改列定义:ALTER TABLE users MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;
  • 修改列名称:ALTER TABLE tbl_name CHANGE[COLUMN] old_col_name new_col-name column_definition [FIRST|AFTER col_name]
    • ALTER TABLE users CHANGE pid p_id TINYINT UNSIGNED NOT NULL;

约束

  • 功能划分:
    • NOT NOLL (只能为列级约束)
    • PRIMARY KEY
    • UNIQUE KEY
    • DEFAULT (只能为列级约束)
    • FOERIGN KEY
  • 按数据列的数目划分:
    • 表级约束
    • 列级约束

修改数据表

  • 针对字段的操作:
    • 添加/删除字段
    • 修改列定义
    • 修改列名称
  • 针对约束的操作:添加/删除各种约束
  • 针对数据表的操作:数据表更名(两种方式modify/change)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,755评论 5 116
  • 观其大纲 page 01 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 M...
    周少言阅读 3,142评论 0 33
  • 1、约束概述 约束的目的是为了保证数据的完整性与一致性。 按照约束的范围划分:列级约束:只对一个数据列建立约束。既...
    黒猫阅读 969评论 3 5
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,027评论 0 19
  • 1、MySQL启动和关闭(安装及配置请参照百度经验,这里不再记录。MySQL默认端口号:3306;默认数据类型格式...
    强壮de西兰花阅读 631评论 0 1