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)

你可能感兴趣的:(Mysql 数据库基础知识及常用指令(1))