Mysql学习

语句规范:

关键字和函数名全部大写

数据库名 表名 字段名全部小写

语句必须以分号结尾

 

数据库操作

CREATE DATABASE t1;  //建立一个数据库t1,放入系统数据库

SHOW DATABASES;

 

SHOW WARNINGS;//查看警告信息

 

SHOW CREATE DATABASEE t1;//查看编码格式

 

CREATE DATABASE IF NOT EXISTS t1 CHARACTER SET GBK;//建立一个已经存在的表并设置编码格式

 

修改数据库

ALTER DATABASE [DB_name] CHARACTER SET = utf8;//修改数据库编码格式

 

删除数据库

DROP DATABASE [IF EXISTS] db_name;

 

整理:

CREATE DATABASE  创建数据库

ALTER DATABASE   修改数据库

DROP DATABASE    删除数据库

 

 

数据类型:

 

整型: tinyint TINYINT 1字节

smallint SMALLINT 2字节

mediumint MEDIUMINT 3字节

int       INT 4字节

bigint BIGINT 8字节

 

浮点型:float FLOAT (大约保存到小数点后7位)

double DOUBLE

时间日期类型: year YEAR

time TIME

data DATA(用来存储日期)

datatime DATATIME(时间日期)

timestamp TIMESTAMP(时间戳)

字符型:char

varchar  变长

tinytext

text

mediumtext

longtext

enum'value1','value2',...)枚举

set'value1','value2',...) 集合

 

创建数据表:

行 记录

列 字段

 

1.打开数据库  USE 数据库名;

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

2.创建数据表:

CREATE TABLE [IF NOT EXISTS] table_name(

column_name data_type,(列名称 数据类型)

...

)

例:

CREATE TABLE t1(

name VARCHAR(20),

age TINYINT UNSIGNED,

salary FLOAT(8,2) UNSIGNED

);

 

查看数据表:

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

例:SHOW TABLES FROM mysql;   //当前数据库不变

 

查看数据表结构:

SHOW COLUMNS FROM tb_name;

 

插入记录

INSERT [INTO] tb_name [(col_name,...)] VALUES(val,...)

例:INSERT t1 VALUES('TOM',25,7865);  //省略列名,所有字段都要赋值

 

查看记录:

SELECT expr...FROM tb_name

例:SELECT * FROM tb1;

 

空值与非空:

NULL 字段值可以为空

NOT NULL 字段值禁止为空

 

自动编号:AUTO_INCREMENT

 

必须与主键组合使用,默认初始值为1,每次增量为1

可以为整数或浮点数,但浮点数的小数位必须为0

自动编号的字段必须定义为主键才可以

 

主键:PRIMARY KEY

 

每张表只能存在一个主键

主键保证记录的唯一性

主键自动为NOT NULL

例:CREATE TABLE tb(

    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

    username VARCHAR(30) NOT NULL

    );

 

 

唯一约束:UNIQUE KEY

 

唯一约束可以保证记录的唯一性

唯一约束的字段可以为控制

每张数据表可以存在多个唯一约束

 

默认值:DEFAULT

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

 

 

整理:

数据类型:字符型、整型、浮点型、日期时间型

数据表操作:插入记录、查找记录

记录操作:创建数据表、约束的使用

 

 

约束:保证数据的完整性和一致性

约束分为表级约束和列级约束

约束类型包括:

not null 非空约束

primary key 主键约束

unique key 唯一约束

default 默认约束

foreign key 外键约束

 

外键约束:FOREIGN KEY

保证数据一致性、完整性

实现一对一或一对多关系

 

外键约束要求:

1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表

2.数据表的存储引擎只能为InnoDB

3.外键列和参数列必须具有相似的数据类型,其中数字的长度和是否有符号位必须相同;而字符的长度可以不同

4.外键列和参照列必须创建索引。如果参照?列不存在索引,mysql将自动创建索引

 

子表:具有外键列的表

 

例:CREATE TABLE provinces(

    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,//没有创建索引,但主键会自动创建索引

    pname VARCHAR(20) NOT NULL

    );

//SHOW CREATE TABLE provinces;

 

    CREATE TABLE users(

    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

    username VARCHAR(20) NOT NULL,

    pid SMALLINT UNSIGNED,

    FOREIGN KEY (pid) REFERENCES provinces(id)   //references foreign

    );

//子表users 父表provinces

//查看是否创建索引:SHOW INDEXES FROM provinces/G;

 

 

外键约束的参照操作

1.CASCADE:从父表删除或更新且自动删除或更新子表中的匹配的行

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

3.RESTRICT:拒绝对父表的删除或更新操作。

4.NO ACTION:标准的SQL的关键字,在MYSQL中与RESTRICT相同

 

CREATE TABLE users1(

    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

    username VARCHAR(20) NOT NULL,

    pid SMALLINT UNSIGNED,

    FOREIGN KEY (pid) REFERENCES provinces(id) ON DELECT CASCADE  

);

 

//插入记录时要现在父表中插入,然后再在子表中插入

 

INSERT provinces(pname) VALUES ('A');

INSERT provinces(pname) VALUES ('B');

INSERT provinces(pname) VALUES ('C');

SELECT * FROM provinces;]

 

INSERT users(username,pid) VALUES('TOM',3);

//TOM所在省为C

 

 

cascade

set null

restrict

 

 


posted @ 2018-07-11 11:22  highlightyys  阅读(10)  评论(0编辑  收藏  举报