Mysql常用语句
点关注不迷路,欢迎再来!
一.关系型数据库
常见的关系型数据库:Oracle、Mysql、SQL?Server、DB2等。
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
二.非关系型数据库
常见的非关系型数据库:Redis、solr、MongodDB、HBase等。
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
三.常用SQL语句结构:
相信作为新人入职后第一件工作基本都会写一些DML和DDL脚本。
1.数据操作语言(DML:Data Manipulation Language)
其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
2.数据定义语言(DDL)
其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
四.语句sql
1.建表语句
时间类型: datetime
字符类型: VARCHAR
数字类型: bigint
无序列,使用AUTO_INCREMENT 自增
当前时间 : now()
建表加注释
create table T_APS_VOTES(
id bigint(10) PRIMARY KEY AUTO_INCREMENT COMMENT '主键id',
start_time datetime COMMENT '投票起始时间',
end_time datetime COMMENT '投票结束时间',
vote_type VARCHAR(20) COMMENT '投票类型',
created_by VARCHAR(20) COMMENT '创建人',
created_date datetime COMMENT '创建时间',
updated_by VARCHAR(20) COMMENT '更新人',
updated_date datetime COMMENT '修改时间',
valid_flag VARCHAR(2) COMMENT '有效标识 0无效 1有效',
attribute_1 VARCHAR(50),
attribute_2 VARCHAR(50),
attribute_3 VARCHAR(50),
attribute_4 VARCHAR(50),
attribute_5 VARCHAR(50)
);
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。
默认值填写:
CREATE TABLE 名字(
列名 数据类型 PRIMARY KEY,
列名 数据类型 DEFAULT ‘asdasda’
)
2.alter命令可执行对表的结构进行修改:tablename(表)、columname(列)、definition(类型)
2.1、添加一列
alter table tablename add newfile definition;
2.2、改变表的数据类型
alter table tablename change columname newdefinition;
2.3、给表添加唯一列
alter table tablename add unique columname ...
2.4、从表中删除一列
alter table tablename drop columname;
3.索引
3.1.创建索引
ALTER TABLE
ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。
ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)
其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。
CREATE INDEX
CREATE INDEX可对表增加普通索引或UNIQUE索引。
CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)
table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名不可选。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。
3.2. 删除索引
可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。
DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
其中,前两条语句是等价的,删除掉table_name中的索引index_name。
第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。
如果从表中删除了某列,则索引会受到影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。