mariaDB语句详解

来源:互联网 发布:大同集宁之战 知乎 编辑:程序博客网 时间:2024/06/05 00:32

  • 设计范式
  • 字段约束
  • SQL
    • DDLCREATEDROPALTER
      • 查看支持的字符集
      • 查看排序规则
      • 建库
      • 删库
      • 查看建表帮助语句
      • 查看表状态
      • 查看数据库支持的引擎
      • 建表
      • 删表
      • 改表和字段
        • alter 改字符集属性
        • change 改名
        • modify 改表定义和排序
    • DMLINSERTREPLACEDELETEUPDATESELECT
      • 查询语句
        • like
        • rlike
        • NOT RLIKE
        • REGEXP
        • NOT REGEXP
      • delete
      • update
    • DCLGRANTREVOKE
  • 索引
    • 添加索引
    • 删除索引
    • 显示索引
  • 存储类型
  • 数据类型
    •  字符
      • 变长字符
      • 定长字符
      • 内建类型
      • 对象
      • 日期时间
    • 数字
      • 精确数值
      •  近似数值

设计范式

  1. 第一范式:字段原子性(不可分割,只能包含一个独立属性)
  2. 第二范式:存在可用主键(不允许任意两行完全相同)
  3. 第三范式:任何表都不应该有依赖于其他表非主键的字段

字段约束

  1. 主键
  2. 唯一键
  3. 外键(innodb支持)
  4. 检查性约束(不支持)

SQL

DDL:CREATE,DROP,ALTER

1. 查看支持的字符集

show character set;

2. 查看排序规则

show collations;

3. 建库

create database [if not exists] 'db_name' character set [=] charset collate [=] collate

4.删库

drop database [if exists] 'db_name'

5.查看建表帮助语句

help create table;show create atble 'table_name'(建表语句)

6.查看表状态

show table status like 'table_name'\G

7. 查看数据库支持的引擎

show engines;

8. 建表

CREATE TABLE [if not exists]  `payment` (  `payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,  `customer_id` smallint(5) unsigned NOT NULL,  `staff_id` tinyint(3) unsigned NOT NULL,  `rental_id` int(11) DEFAULT NULL,  `amount` decimal(5,2) NOT NULL,  `payment_date` datetime NOT NULL,  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`payment_id`),  KEY `idx_fk_staff_id` (`staff_id`),  KEY `idx_fk_customer_id` (`customer_id`),  KEY `fk_payment_rental` (`rental_id`),  CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE,  CONSTRAINT `fk_payment_rental` FOREIGN KEY (`rental_id`) REFERENCES `rental` (`rental_id`) ON DELETE SET NULL ON UPDATE CASCADE,  CONSTRAINT `fk_payment_staff` FOREIGN KEY (`staff_id`) REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8 COMMENT='这里是表注释'

9. 删表

drop [if exists] 'tbl_name'

==严重禁止业务高峰期drop/alter table,drop table最好先truncate table,减少hung时间==

10. 改表和字段

alter 改字符集属性

change 改名

modify 改表定义和排序

  • 改表名
    ALTER TABLE 【表名字】 RENAME 【表新名字】

  • 改列名
    ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称】 BIGINT NOT NULL COMMENT ‘注释说明’

  • 删除列
    ALTER TABLE 【表名字】 DROP 【列名称】

  • 增加列
    ALTER TABLE 【表名字】 ADD 【列名称】 INT NOT NULL COMMENT ‘注释说明’

  • 修改列的类型信息
    ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称(这里可以用和原来列同名即可)】 BIGINT NOT NULL COMMENT ‘注释说明’

  • 添加主键ALTER TABLE sj_resource_charges ADD CONSTRAINT PK_SJ_RESOURCE_CHARGES PRIMARY KEY (resid,resfromid)

  • 删除表中主键Alter TABLE 【表名字】 drop primary key

  • 添加索引
    ALTER TABLE tb_name add index INDEX_NAME (name);
    CREATE INDEX index_name ON tbl_name(feld1,field2…)

  • 添加唯一限制条件索引
    ALTER TABLE tb_name add unique emp_name2(cardnumber);

  • 删除索引
    alter table tablename drop index emp_name;
    DROP INDEX index_name ON tbl_name;

    1. ### 显示索引
show indexs from []db_name.]tbl_name

12.显示创建索引帮助

help create index

DML:INSERT(REPLACE),DELETE,UPDATE,SELECT

1. 查询语句

help selectSELECT    [ALL | DISTINCT | DISTINCTROW ]      [HIGH_PRIORITY]      [STRAIGHT_JOIN]      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]    select_expr [, select_expr ...]    [FROM table_references    [WHERE where_condition]    [GROUP BY {col_name | expr | position}      [ASC | DESC], ... [WITH ROLLUP]]    [HAVING where_condition]    [ORDER BY {col_name | expr | position}      [ASC | DESC], ...]    [LIMIT {[offset,] row_count | row_count OFFSET offset}]    [PROCEDURE procedure_name(argument_list)]    [INTO OUTFILE 'file_name'        [CHARACTER SET charset_name]        export_options      | INTO DUMPFILE 'file_name'      | INTO var_name [, var_name]]    [FOR UPDATE | LOCK IN SHARE MODE]]

like

  1. % 任意长度任意字符
    • 任意单个字符

rlike

NOT RLIKE

REGEXP

NOT REGEXP

==like要求整个数据都要匹配,而REGEXP只需要部分匹配即可。
也就是说,用Like,必须这个字段的所有内容满足条件,而REGEXP只需要有任何一个片段满足即可==

2. delete

delete from tbl_name [where clause] [LIMIT [m,]n]

3. update

update tbl_name set col1=new_val1,col2=-new_val2,...[where clause][order by `col_name` [desc]] [limit [m,n]]

DCL:GRANT,REVOKE

1.

索引

特殊的数据结构(最左前缀),可以有名称,不定义默认为字段名

添加索引

ALTER TABLE tb_name add index INDEX_NAME (name);CREATE INDEX index_name ON tbl_name(feld1,field2...)

删除索引

DROP INDEX index_name ON tbl_name;alter table tablename drop index emp_name;

显示索引

show indexs from []db_name.]tbl_name

存储类型

数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位
==1B=1byte(字节)=8bit==

==1kb=1024byte==

数据类型 储存空间大小(单位:字节) 范围 Byte(字节型) 1 0 - 2^(1*8) tinyint 1 无符号:2^(1*8),有符号:-2^(1*4) ~ 2^(1*8)-1(减去1是因为符号位占用) smallint 2 2^(2*8) mediaint 3 2^(3*8) int(整数型) 4 2^(4*8) bigint(整数型) 8 2^(8*8) decimal 每个字符占一个字节 当做字符存储

数据类型

 字符

变长字符

  1. varchar(255)
  2. varbinary

定长字符

  1. char(255)

==非空标记需要占据一个字节,VARCHAR超过255需要用2个字节标记字段长度,不超过255用1个字节标记字段长度.==

内建类型

  1. enum(65535)
  2. set(0-64)

对象

  1. text(65535) 不区分大小写
    • tinytext(255)
    • mediatext(16777215)一个字符1byte,即16777215bite=16M
    • longtext(4294967295) 4G
  2. blob(65535) 二进制 区分大小写
    • tinyblob(255)
    • longblob(4294967295)

日期时间

  1. date
  2. time
  3. timestamp
  4. datetime
  5. year(2|4)

数字

精确数值

  1. 整型int
    tinyint(3),smallint(3),
    • int(10),mediumint(8),bigint(20)
  2. 十进制 decimal

 近似数值

1.单精度:float
2. 双精度:double