MySQL数据库
MySQL的基本命令
-
查看所有的数据库:SHOW DATABASES;
![]()
-
切换数据库:USE 库名;
![]()
-
创建数据库表:create table 表名(
-> 字段 数据类型(长度) 约束,
-> 字段 数据类型(长度),
-> ......
-> );图片中的建表没有用约束
![]()
-
添加字段:
insert into 表名(列名1, 列名2, .., 列名n) values(值1, 值2, ..., 值n); -
修改字段:(根据id为条件修改)
update 表名 set 列名1=值1, 列名2=值2, ..., 列名n=值n where id; -
删除字段:(根据id删除字段)
delete from 表名 where id=值; -
查询所有:
select * from 表名; -
根据id查询一条:
select * from 表名 where id=值;
符号解释:| 或; \ 或; * 所有
- 多表联查:(left 左边 right 右边 表名\别名.列名* ----> 例:empl.* e.* emlp.name e.name )
select 表名\别名.列名* from 表名 别名
left join 表名 别名 on 关联条件
right join 表名 别名 on 关联条件
left join 表名 别名 on 关联条件
......
where 结果限定条件
group by 分组
having 分组后的条件
order by 排序
limit 结果限定
1、普通索引
这是最基本的索引,它没有任何限制,比如上文中为title字段创建的索引就是一个普通索引,MyIASM中默认的BTREE类型的索引,也是我们大多数情况下用到的索引。
创建方式:
- 直接创建索引
CREATE INDEX index_name ON table(column(length))
- 修改表结构的方式添加索引
ALTER TABLE table_name ADD INDEX index_name ON (column(length))
- 创建表的时候同时创建索引
CREATE TABLE table (
id int(11) NOT NULL AUTO_INCREMENT ,
title char(255) CHARACTER SET NOT NULL ,
content text CHARACTER SET NULL ,
time int(10) NULL DEFAULT NULL ,
PRIMARY KEY (id),
INDEX index_name (title(length)));
- 删除索引
DROP INDEX index_name ON table
2、唯一索引
与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须是唯一的,创建方法和普通索引类似。
2.1 创建唯一索引:
CREATE UNIQUE INDEX index_name ON table(column(length))
2.2 修改表结构:
ALTER TABLE table_name ADD UNIQUE INDEX index_name ON (column(length))
2.3 创建表时同时创建索引:
CREATE TABLE table (
id int(11) NOT NULL AUTO_INCREMENT ,
title char(255) CHARACTER SET NOT NULL ,
content text CHARACTER SET NULL ,
time int(10) NULL DEFAULT NULL ,
PRIMARY KEY (id),
UNIQUE indexName (title(length)));
3、组合索引
平时用的SQL查询
语句一般都有比较多的限制条件,所以为了进一步榨取MySQL的效率,就要考虑建立组合索引。例如上表中针对title和time建立一个组合索引:
ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))
- 建立这样的组合索引,其实是相当于分别建立了下面两组组合索引:
–title,time
–title
为什么没有time这样的组合索引呢?这是因为MySQL组合索引“最左前缀”的结果。
简单的理解就是只从最左面的开始组合。并不是只要包含这两列的查询都会用到该组合索引,如下面的几个SQL所示:
- 使用到上面的索引:
SELECT * FROM article WHREE title='测试' AND time=1234567890;
SELECT * FROM article WHREE utitle='测试';
- 未使用到上面的索引:
SELECT * FROM article WHREE time=1234567890;
- 约束
- 主键 primary key
- 自增长约束 auto_increment
- 默认约束 default
- 不为 null约束 not null
- 唯一约束 unique
- 检查约束 cherk
PRIMARY KEY 设置主键 AUTO_INCREMENT 主键自增长 not null 非空
CREATE TABLE IF NOT EXISTSrunoob_tbl(
runoob_idINT AUTO_INCREMENT PRIMARY KEY,
runoob_titleVARCHAR(100) NOT NULL,
runoob_authorVARCHAR(40) NOT NULL,
runoob_ageINT CHECK(runoob_age>18 && runoob_age<60),
submission_dateDATE,
);




浙公网安备 33010602011771号