Sql语句表、索引、操作的增删改查(针对Mysql数据库)

一、Mysql常用数据类型

1.整型 int

2.小整数 tinyint

3.小数 decimal

4.字符串 varchar

5.日期时间 datetime

二、表 创建 修改 删除

1.创建

1.1 直接创建表:

CREATE TABLE
[IF NOT EXISTS] tb_name -- 不存在才创建,存在就跳过
(column_name1 data_type1 -- 列名和类型必选
  [ PRIMARY KEY -- 可选的约束,主键
   | FOREIGN KEY -- 外键,引用其他表的键值
   | AUTO_INCREMENT -- 自增ID
   | COMMENT comment -- 列注释(评论)
   | DEFAULT default_value -- 默认值
   | UNIQUE -- 唯一性约束,不允许两条记录该列值相同
   | NOT NULL -- 该列非空
  ], ...
) [CHARACTER SET charset] -- 字符集编码
[COLLATE collate_value] -- 列排序和比较时的规则(是否区分大小写等)

create table 表名

( 字段名 数据类型,

​ 字段名 数据类型

);

1.2 从另一张表复制表结构创建表:

`CREATE TABLE tb_name LIKE tb_name_old`

1.3 从另一张表的查询结果创建表:

CREATE TABLE tb_name AS SELECT * FROM tb_name_old WHERE `

2.修改

2.1 修改表:

{ ADD COLUMN <列名> <类型>  -- 增加列
     | CHANGE COLUMN <旧列名> <新列名> <新列类型> -- 修改列名或类型
     | ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } -- 修改/删除 列的默认值
     | MODIFY COLUMN <列名> <类型> -- 修改列类型
     | DROP COLUMN <列名> -- 删除列
     | RENAME TO <新表名> -- 修改表名
     | CHARACTER SET <字符集名> -- 修改字符集
     | COLLATE <校对规则名> } -- 修改校对规则(比较和排序时用到)

例子:Sql语句表、索引、操作的增删改查(针对Mysql数据库)_第1张图片

alter table user_info add school varchar(15) after level;
alter table user_info change job profession varchar(10);
alter table user_info modify achievement int(11) default 0;

3.删除

3.1 删除表:

DROP TABLE [IF EXISTS] 表名1 [, 表名2]

三、索引 创建 删除 使用

1.创建

1.1 create方式创建索引:

CREATE
  [UNIQUE -- 唯一索引
  | FULLTEXT -- 全文索引
  ] INDEX index_name ON table_name -- 不指定唯一或全文时默认普通索引
  (column1[(length) [DESC|ASC]] [,column2,...]) -- 可以对多列建立组合索引 

1.2 alter方式创建索引:

ALTER TABLE tb_name ADD [UNIQUE | FULLTEXT] [INDEX] index_content(content)

2.删除

2.1 drop方式删除索引:

DROP INDEX <索引名> ON <表名>

2.2 alter方式删除索引:

ALTER TABLE <表名> DROP INDEX <索引名>

3.使用

3.1 索引的使用:

  • 索引使用时满足最左前缀匹配原则,即对于组合索引(col1, col2),在不考虑引擎优化时,条件必须是col1在前col2在后,或者只使用col1,索引才会生效;
  • 索引不包含有NULL值的列
  • 一个查询只使用一次索引,where中如果使用了索引,order by就不会使用
  • like做字段比较时只有前缀确定时才会使用索引
  • 在列上进行运算后不会使用索引,如year(start_time)<2020不会使用start_time上的索引

四、数据的增删改查

1、增

1.1 插入记录的方式汇总:

  • 普通插入(全字段):

    INSERT INTO table_name VALUES (value1, value2, …)

  • 普通插入(限定字段):

    INSERT INTO table_name (column1, column2, …) VALUES (value1, value2, …)

  • 多条一次性插入:

    INSERT INTO table_name (column1, column2, …) VALUES (value1_1, value1_2, …), (value2_1, value2_2, …), …

  • 从另一个表导入:

  • INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]

1.2 插入一条数据

insert into 表名 values();

insert into 表名(字段1,) values(对应值)

1.3 一次性插入多条数据

1.每一条插入语句用分号隔开

insert into 表名() values();

insert into 表名() values();

​ insert into 表名() values(); ·········

2.直接在values后面用逗号进行添加

insert into 表名() values(),(),········;

2、查

2.1 查询所有字段

select * from 表名

2.2 查询指定字段

select 字段1,字段2,字段3 from 表名

3、改

3.1 修改记录的方式汇总:

  • 设置为新值:UPDATE table_name SET column_name=new_value [, column_name2=new_value2] [WHERE column_name3=value3]
  • 根据已有值替换:UPDATE table_name SET key1=replace(key1, ‘查找内容’, ‘替换成内容’) [WHERE column_name3=value3]

update 表名 set 字段1=值1,字段2=值2 where ·····

4、删

4.1 删除记录的方式汇总:

  • 根据条件删除:DELETE FROM tb_name [WHERE options] [ [ ORDER BY fields ] LIMIT n ]
  • 全部删除(表清空,包含自增计数器重置):TRUNCATE tb_name

1.DROP TABLE 清除数据并且销毁表,是一种数据库定义语言(DDL Data Definition Language), 执行后不能撤销,被删除表格的关系,索引,权限等等都会被永久删除。

2.TRUNCATE TABLE 只清除数据,保留表结构,列,权限,索引,视图,关系等等,相当于清零数据,是一种数据库定义语言(DDL Data Definition Language),执行后不能撤销。

3.DELETE From TABLE 删除(符合某些条件的)数据,是一种数据操纵语言(DML Data Manipulation Language),执行后可以撤销。(还不太明白怎么撤销TT,在什么情况下可以撤销,求大神指点。 运行速度一般DROP最快,DELETE最慢,但是DELETE最安全。**

4.2 delete

(1).删除指定记录

delete from 表名 where 条件;

(2).删除全部记录(不会保留表的)

delete from 表名

你可能感兴趣的:(数据库,数据库,mysql,sql)