msyql基础(介绍-表操作-约束)

mysql常用基础知识

mysql目录

  • bin 目录,存储可执行文件
  • data 目录,存储数据文件
  • docs 文档
  • include目录,存储包含的头文件
  • lib 存储库文件
  • share 错误消息和字符集文件

修改编码方式

//客户端
[mysql]
default-character-set=utf8

//服务端
[mysqld]
character-set-server=utf8

启动关闭mysql服务

systemctl start mysqld
systemctl stop mysqld

登录

mysql -uroot -p -P3306 -h
//输入密码 回车即可
-D ,--database=name 打开制定的数据库
--delimiter=name 制定分隔符
-h, --host=name 服务器名称
-p, --password=name 密码
-P, --port=#端口号
--prompt=name  设置提示符
-u, --user=name  用户名
-V ,--version 输出版本信息并退出

退出

exit;
quit;
\q;

修改mysql提示符

// 一种
mysql -uroot -proot --prompt 提示符     
//二种
prompt 提示符

提示符参数
\D 完整的日期
\d 当前的数据库
\h 服务器名称
\u 当前用户

//实例 结果 root@localhost
prompt \u@\h

常用命令

//显示当前服务器版本
SELECT VERSION();
//显示当前的日期时间
SELECT NOW();
//显示当前的用户
SELECT USER();

语句规范

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

创建数据库操作

// {}是必选项 ,| 是从其中选择一样 ,[]是可选择的 ,expr表达式

//创建数据库
CREATE {DATABASE | SECHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name

//查看当前服务器下的数据列表
SHOW {DATABASE | SCHEMAS} [LIKE 'pattern' | WHERE expr]

//查看警告信息
SHOW WARNINGS;

//查看数据库信息
SHOW CREATE DATABASE db_name;

修改数据库操作

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

删除数据库操作

DROP {DATABASE | SECHEMA} [IF EXISTS] db_name

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

整数型

浮点型

日期时间型

字符型


打开数据库

USE db_name;

//显示当前打开的数据库
SELECT DATABASE();

创建数据表

CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type,...);

//示例
CRAEATE TABLE IF NOT EXISTS tbl(
username VARCHAR(20),
age TINYINT UNSIGNED,
salary FLOAT(8,2) UNSIGNED
);

查看数据列表

// 不仅可以查看当前数据库表,还可以查看数据库表
SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]

查看表结构

SHOW COLUMNS FROM tbl_name;

插入数据

//省略列名称,所有的字段需要赋值
INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,..)

查看记录

SELECT expr,... FROM tbl_name;

MSYQL空值与非空

NULL,字段值可以为空
NOT NULL,字段值禁止为空

//示例
CREATE TABLE tbl2(
    username VARCHAR(20) NOT NULL,
    age TINYINT UNSIGNED NULL
);

自动编号

//主键约束,每张数据表只能存在一个主键,主键保证记录的唯一性,主键自动为 NOT NULL
PRIMARY KEY

// AUTO_INCREMENT必须与主键组合使用,
//但PRIMARY KEY 不一定必须与AUTO_INCREMENT组合使用,
//默认起始值为 1,增量为 1

CREATE TABLE tb3(
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(20) NOT NULL
);

唯一约束: UNIQUE KEY ;唯一约束可以 保证记录的唯一性;唯一约束的字段可以为空值(null),每张数据表可以存在多个唯一约束;
又可以为空,有保证唯一性,实际在多个空值的情况下,实际只保存了一个null值

  CREATE TABLE tb4(
       id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
       username VARCHAR(20) NOT NULL UNIQUE KEY,
       age TINYINT UNSIGNED
  )      

默认约束

// 默认值,当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
DEFAULT

 CREATE TABLE tb4(
       id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
       username VARCHAR(20) NOT NULL UNIQUE KEY,
       age TINYINT UNSIGNED,
       sex ENUM('1','2','3') DEFAULT '3'
 );

约束

//约束保证数据的完整性和一致性
//约束分为表级约束(两个字段以上)和列级约束(单个字段)
//约束类型包括
    a.NOT NULL(非空约束)
    b.PRIMARY (KEY主键约束)
    c.DEFAULT(默认约束)
    d.FOREIGN KEY(外键约束) 

外键约束

  • 父表和字表必须使用相同的存储引擎,而且禁止使用临时表。
  • 数据表的存储引擎只能为 Innodb
  • 外键列和参照列必须具有相似的数据类型,其中数字的长度或是符号位必须相同,而字符长度可以不同
  • 外键列和参照列必须创建索引,如果外检列不存在索引的话,mysql将自动创建索引.

编辑mysql表的默认存储引擎

// msyql配置文件
default-storage-engine=INNODB

//示例
CREATE TABLE users(
    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    username varchar(20) NOT NULL,
    pid SMALLINT UNSINGNED,
    FOREIGN (pid) REFERENCES provice(id)
);

查看索引

SHOW INDEXES FROM users;

外键约束的参照操作:在更新表的时候子表是否也进行相应的操作

  • CASCADE :从父表删除或更新且自动删除或更新字表中匹配的行(例:删除省份表,则用户关联该省的信息都会删除)

  • SET NULL :从父表删除或更新行,并设置字表中的外键列为NULL.如果使用改选项,必须保证子表列没有指定NOT NULL

  • RESTRICT :拒绝对父表的山川或更新操作

  • NO ACTION :标准sql的关键字,在mysq中与restrict相同

    //示例
    REATE TABLE users(
    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    username varchar(20) NOT NULL,
    pid SMALLINT UNSINGNED,
    FOREIGN (pid) REFERENCES provice(id) ON DELETE CASCADE
    ;

现在使用较少外键约束,一般使用逻辑的外键约束。

表级约束与列级约束

  • 对一个数据列建立的约束,称为列级约束
  • 对多个数据列建立的约束,称为表级约束
  • 列级约束即可以在定义列是声明,也可以在列定义后声明;表级约束只能在列定义后声明。
    列级的约束使用较多,表级的约束较少

修改数据表

//添加单列
ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name];

//示例
ALTER TABLE users ADD age TINYINT UNSIGNED NOT NUL DEFAULT 10;

//添加多列
ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...);

//删除列
ALTER TABLE tbl_name DROP [COLUMN] col_name  

//删除多列
ALTER TABLE  tbl_name DROP col_name,DROP col_name,...

修改列定义

ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]

修改列名称

ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name]    

修改数据表名字

//法一
ALTER TABLE tbl_name RENAME [TO | AS] new_tbl_name

//法二
RENAME TABLE tbl_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2] ...   

添加主键约束

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)    

添加唯一约束

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [index_name] [index_type] (index_col_name,...)    

添加外键约束

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY  [index_name] (index_col_name,...) reference_definition ;    

添加/删除默认约束

ALTER TABLE tbl_name ALTER [COLUMN] col_name { SET DEFAULT default_value | DROP DEFAULT}    

删除主键约束

ALTER TABLE tbl_name  DROP PRIMARY KEY

删除唯一约束

ALTER TABLE tbl_name DROP {INDEX | KEY } index_name

删除外检约束

ALTER TABLE tbl_name DROP FOREIGN KEY foreigin_key_name
posted @ 2019-07-18 15:42  NiRao  阅读(211)  评论(0编辑  收藏  举报