一、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 <校对规则名> } -- 修改校对规则(比较和排序时用到)
例子:
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 表名