mysql语言九大动词_MySQL数据类型及SQL语句(二)

MySQL数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型精确数值型整形: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT

十进制: DECIMAL

近似数值型(浮点型):FLOAT

DOUBLE

44f7b2bcd37d22e123408a1a7367e5c2.png

字符型char使用固定长度的空间进行存储,char(4)存储4个字符,根据编码方式的不同占用不同的字节,gbk编码方式,不论是中文还是英文,每个字符占用2个字节的空间,utf8编码方式,每个字符占用3个字节的空间。如果需要存储的字符串的长度跟所有值的平均长度相差不大,适合用char,如MD5。CHAR,BINARY: 定长数据类型(CHAR不区分字符大小写,BINARY区分字符大小写)

VARCHAR,VARBINARY: 变长数据类型,需要结束符

TEXT: TINYTEXT, TEXT, MEDIUMTEXT, LOGTEXT

BLOB: TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB

ENUM,SET

注意:binary保存二进制字符串,就是说它们包含字节字符串而不是字符字符串,没有字符集限制

e82ed84f3777e00c7adad73590c2f7a9.png

注意:CHAR,VARCHAR,TEXT 不区分字符大小写;BINARY,VARBINARY,BLOB 区分字符大小写

日期和时间类型DATE

TIME

DATETIME

TIMESTAMP

YEAR(2), YEAR(4)

6d4bc0dc3d898657104d2ba7e2681ef3.png

特殊类型ENUM:从给定的字符串中选择一个字串

SET:集合,从指定字符集合中选择多个组合成一种变化形式

MySQL中字符大小写SQL关键字及函数名不区字符大小写;SELECT, Select, select

切记:遵循同一种风格

数据库、表、索引及视图的名称是否区分大小写取决于低层的OS及FS;

存储过程、存储函数及事件调度器不区分字符大小写;但触发器区分;

表别名不区分大小写;

字段中字符数据,类型为binary、blog、varbinary时区分大小写;其它的不区分;

数据类型的修饰符

整形修饰符NOT NULL

NULL

DEFAULT NUMBER

AUTO_INCREMENT:自动增长,需要下面三个条件的支持。UNSIGNED: 无符号,必须放在仅放在字段类型后

PRIMARY KEY | UNIQUE KEY

NOT NULL

例如:

CREATE TABLE t1 (id INT UNSIGNED AUTO_INCREMNET PRIMAY KEY NOT NULL,name VARCHAR(5) NOT NULL);

字符型修饰符字符类型的修饰符: 定义在字段类型之后NOT NULL: 非空约束

NULL: 默认为空

DEFAULT ‘STRING’: 指明默认值

CHARACTE SET ‘’: 使用字符集

COLLATION: 使用的排序规则

查看字符集和排序规则: 在数据库上定义后,表可以继承,一般无须定义

mysql>SHOW CHARACTER SET;

mysql>SHOW COLLATION;

字符有通配符:%: 匹配任意长度的任意字符

_: 匹配任意单个字符;

日期时间型的修饰符:NOUT NULL

NULL

DEFAULT

SQL语句SQL(Structured Query Language),结构化查询语言,是关系数据库的标准语言;集数据定义语言( DDL),数据操纵语言( DML),

数据控制语言( DCL)功能于一体。

SQL动词SQL功能动词数据定义CREATE, DROP, ALTER

数据操作SELECT, INSERT, DELETE, UPDATE

数据控制GRANT, REVOKE

MySQL三级模式

350b22a2d1b40353b3e8406616a6b030.png

DDL 数据定义语言数据定义语言(Data Definition Language,DDL)是SQL语言集中负责数据结构定义与数据库对象定义的语言,由CREATE、ALTER与DROP三个语法所组成,最早是由Codasyl(Conference on Data Systems Languages)数据模型开始,现在被纳入SQL指令中作为其中一个子集。

CREATE对象

CREATE操作的对象包括: 数据库表,索引,视图,用户,存储过程,存储函数,触发器,时间调度器等MariaDB [(none)]> help create

Many help items for your request exist.

To make a more specific request, please type 'help ',

where is one of the following

topics:

CREATE DATABASE //数据库

CREATE EVENT //事件

CREATE FUNCTION //函数

CREATE FUNCTION UDF //自定义函数

CREATE INDEX //索引

CREATE PROCEDURE //存储函数

CREATE SERVER //服务器

CREATE TABLE //表

CREATE TABLESPACE //表空间

CREATE TRIGGER //触发器

CREATE USER //用户

CREATE VIEW //视图

SHOW //看CREATE语句过程

SHOW CREATE DATABASE

SHOW CREATE EVENT

SHOW CREATE FUNCTION

SHOW CREATE PROCEDURE

SHOW CREATE TABLE

SPATIAL

语法:MariaDB [(none)]> help create database

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name

[create_specification] ...

create_specification:

[DEFAULT] CHARACTER SET [=] charset_name

| [DEFAULT] COLLATE [=] collation_name

实例:

CREATE DATABASE IF NOT EXISTS test_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

语法:CREATE TABLE [IF NOT EXISTS] tb_name

(col1_def, col2_def,

PRIMARY KEY(col_name,...),

UNIQUE (col1,...), INDEX (col1,...))

[table_option]

------------------------

table_option:

ENGINE [=] engine_name

COMMENT [=] 'string'

ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}

TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}]

显示表上的索引:

SHOW INDEXES FROM tb_name;

注意: Storage Engine是指的表类型,也即在表创建时指明其使用的存储引擎:同一个库中要使用同一种存储引擎类型

范例:

CREATE TABLE tb1 (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,name CHAR(5) NOT NULL);

查看表结构:

DESCRIBE tb1_name

查看表状态信息:

SHOW [FULL] TABLE STATUS [{FROM|IN} db_name] [LIKE 'pattern' | WHERE expr]

查看存储引擎:

SELECT @@SESSION.default_storage_engine;

语法:ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name

[alter_specification [, alter_specification] ...]

[partition_options]

alter_specification:

table_options

| ADD [COLUMN] col_name column_definition

[FIRST | AFTER col_name ]

| ADD [COLUMN] (col_name column_definition,...)

| ADD {INDEX|KEY} [index_name]

[index_type] (index_col_name,...) [index_option] ...

| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

| CHANGE [COLUMN] old_col_name new_col_name column_definition

[FIRST|AFTER col_name]

| DROP [COLUMN] col_name

......

添加单列:

ALTER TABLE tb_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]

范例:MariaDB [db1]> ALTER TABLE tb1 ADD COLUMN sex ENUM('man','woman') AFTER name;

Query OK, 0 rows affected (0.10 sec)

Records: 0 Duplicates: 0 Warnings: 0

MariaDB [db1]> DESC tb1;

+-------+---------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-------+---------------------+------+-----+---------+----------------+

| id | int(10) unsigned | NO | PRI | NULL | auto_increment |

| name | char(5) | NO | | NULL | |

| sex | enum('man','woman') | YES | | NULL | |

+-------+---------------------+------+-----+---------+----------------+

删除列:

ALTER TABLE tb_name DROP [column] col_name

范例:MariaDB [db1]> ALTER TABLE tb1 DROP sex;

Query OK, 0 rows affected (0.14 sec)

Records: 0 Duplicates: 0 Warnings: 0

MariaDB [db1]> DESC tb1;

+-------+------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-------+------------------+------+-----+---------+----------------+

| id | int(10) unsigned | NO | PRI | NULL | auto_increment |

| name | char(5) | NO | | NULL | |

+-------+------------------+------+-----+---------+----------------+

2 rows in set (0.00 sec)

修改列的类型:

ALTER TABLE tb_name MODIFY [COLUMN] col_name column_definitionMariaDB [db1]> ALTER TABLE tb1 MODIFY name CHAR(6);

Query OK, 0 rows affected (0.09 sec)

Records: 0 Duplicates: 0 Warnings: 0

MariaDB [db1]> DESC tb1;

+-------+------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-------+------------------+------+-----+---------+----------------+

| id | int(10) unsigned | NO | PRI | NULL | auto_increment |

| name | char(6) | YES | | NULL | |

+-------+------------------+------+-----+---------+----------------+

2 rows in set (0.01 sec)

语法:DROP [TEMPORARY] TABLE [IF EXISTS]

tbl_name [, tbl_name] ...

[RESTRICT | CASCADE]RESTRICT:删除表是有限制的欲删除的基本表不能被其他表的约束所引用

如果存在依赖该表的对象,则此表不能被删除

CASCADE: 在删除基本表的同时,相关的依赖对象一起删除

DML 数据操作语言数据操作语言(Data Manipulation Language, DML)包含了数据库数据的增删改查操作,也是我们经常会见到的’CRUD’操作,其主要包括INSERT、SELECT、UPDATE和DELETE四条命令。

INSERT

语法:INSERT [INTO] tbl_name [(col_name [, col_name] ...)]

{VALUES | VALUE} ( value [, value] ...) [, ( value [, value] ...)] ...

//批量插入

INSERT [INTO] tbl_name [(col_name,...)] SELECT ...

INSERT [INTO] tbl_name SET col_name={expr | DEFAULT}, ...

范例:

单行插入:mysql> INSERT INTO tb1 (name) VALUES ('chenfan');

ERROR 1406 (22001): Data too long for column 'name' at row 1

mysql> INSERT INTO tb1 (name) VALUES ('chen');

Query OK, 1 row affected (0.06 sec)

mysql> SELECT * FROM tb1;

+----+------+

| id | name |

+----+------+

| 1 | chen |

+----+------+

1 row in set (0.00 sec)

插入查询到的数据:mysql> INSERT INTO tb1 (name) SELECT name FROM tb1;

Query OK, 1 row affected (0.06 sec)

Records: 1 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM tb1;

+----+------+

| id | name |

+----+------+

| 1 | chen |

| 2 | chen |

+----+------+

2 rows in set (0.00 sec)

UPDATE

语法:UPDATE [LOW_PRIORITY] [IGNORE] table_reference

SET assignment_list

[WHERE where_condition]

[ORDER BY col1[,...] {ASC|DESC}]

[LIMIT row_count]

assignment:

col_name = value

assignment_list:

assignment [, assignment] ...

判断某字段值为空:IS NULL

不空:IS NOT NULL

ASC:升序

DESC:降序

范例:mysql> SELECT * FROM tb1;

+----+------+

| id | name |

+----+------+

| 1 | chen |

| 2 | chen |

+----+------+

2 rows in set (0.00 sec)

mysql> UPDATE tb1 SET name='fan' WHERE id='2' ;

Query OK, 1 row affected (0.10 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> SELECT * FROM tb1;

+----+------+

| id | name |

+----+------+

| 1 | chen |

| 2 | fan |

+----+------+

2 rows in set (0.00 sec)

DELETE

语法:DELETE FROM tbl_name [WHERE where_condition]

[ORDER BY ...] [LIMIT row_count]

范例:mysql> DELETE FROM tb1 WHERE name='fan';

Query OK, 1 row affected (0.06 sec)

mysql> SELECT * FROM tb1;

+----+------+

| id | name |

+----+------+

| 1 | chen |

+----+------+

1 row in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值