MySQL简单使用
MySQL简单使用
一、操作数据库(database)
1、增
create database 数据库名称 charset utf8;
命名规范:
1. 可以由字母、数字、下划线、@、#、$
2. 区分大小写
3. 唯一性
4. 不能使用关键字如 create select
5. 不能单独使用数字
6. 最长128位
show create database 数据库名;
2、删
drop database 数据库名称;
3、改
删除再添加
如果数据库中有数据的话,直接drop会导致数据库中的数据丢失;
在线上环境,不能够直接删除数据, 在删除之前,需要进行备份。
4、查
show databases;
5、打开数据库
use 数据库名;
二、 操作表
1、增
1.1 语法
create table +表名(
字段名 列类型(宽度) 约束条件,#字段与字段间要加逗号
...
字段名 列类型(宽度) 约束条件 #最后一行不要加逗号
)charset=utf8; #后面要加分号
1.2 列约束(完整性约束)
- primary key:标识该字段为该表的主键,主键可以加快索引速度,并使列的值不能重复;
- auto_increment:整数自增,设置了这条约束的字段必须为主键;
- not null:标识该字段不能为空;
- default:为该字段设置默认值
1.3 列类型(数据类型)
1.3.1 数字
整形:
tinyint:1字节,(-128,127)/(0,255)
smallint:2字节,(-32768,32767)/(0,65536)
mediumint:3字节,(-8388608,8388607)/(0,16777215)
int:4字节,(-2147483648,2147483647)/(0,4294967295)
bigint:8字节,(-9233372036854775808,9233372036854775807)/(0,18446744073709551615)
浮点型:
float:在位数比较短的情况下不精准
double:在位数比较长的情况下不精准
decimal:精准,内部原理是以字符串形式去存(如果用小数,则用推荐使用decimal)
1.3.2 字符串
char:定长,就算储存的字符串没有达到长度也会用空格来补充。浪费空间,存取速度快;
varchar:变长,固定长度后,如果储存的数据长度不够,会以存取数据的长度为准。精准,节省空间,但存取速度慢。
1.3.3 时间日期类型
year:YYYY(1901/2155)
date:YYYY-MM-DD(1000-01-01/9999-12-31)
time:HH:MM:SS('-838:59:59'/'838:59:59')
datetime:YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59)
timestamp:YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)
1.3.4 枚举(自己设定范围)
enum('male','female')
2、删
drop table 表名;
3、改
3.1 修改表名
alter table 旧表名 rename 新表名;
3.2 增加字段
-
添加的列永远是添加在最后一列之后
alter table 表名 add 字段名 列类型(宽度) 约束条件,
add 字段名 列类型(宽度) 约束条件;
-
添加的列在第一列
alter table 表名 add 字段名 列类型(宽度) 约束条件 first;
-
添加的列在某个特定列的后面
alter table 表名 add 字段名 列类型(宽度) 约束条件 after 字段名;
3.3 删除字段
alter table 表名 drop 字段名;
3.4 修改字段
-
修改某个已存在字段的列类型和约束条件
alter table 表名 modify 字段名 新列类型(宽度) 新约束条件;
-
修改某个字段的字段名
alter table 表名 change 旧字段名 新字段名 新列类型(宽度) 新约束条件;
4、查
-
展示所有表
show tables
-
展现某个表的字段属性
describe 表名;
-
展现某个表的具体内容
select * from 表名;
5、复制表结构
-
创建一个和某个已有表结构相同的表,只能复制结构,不能复制数据
create table 表2名 like 表1名;
三、 操作表记录(每行)
1、增
insert into 表名 (列1,列2) values (值1,值2);
2、删
-
删除符合某个条件的一条记录
delete from 表名 where 条件;
-
删除表中已有数据,但继续写入数据是从删掉的最后一个主键的接下来开始写入的
delete from 表名;
-
清空表内容,继续写入是从头开始写的
truncate 表名;
delete删除是一行一行删,truncate是一次性全部删,所以truncate删除速度更快。
3、改
update 表名 set 列名1=新值1,列名2=新值2 where 条件;
4、查
select 列1,列2 from 表名 where 条件;(*代表查询所有的列)
条件中:
-
between……and……:
取值范围是闭区间
-
避免重复distinct:
select distinct 列名 from 表名;(显示这列不重复的值)
-
成员运算in:
select * from 表名 where 列名 in(值1,值2,值3……);
-
模糊查询like:
select * from 表名 where 列名 like ‘x%’;(查找以x开头的值)
四、补充null和not null
1、使用null
创建表的时候 没有 在字段的约束中 声明该字段是not null的,这会使添加字段时,如果该条记录的这个字段为空,则会默认显示为NULL,这会导致后续查表时产生一些bug或者一些麻烦的事情,所以尽量声明一下字段时not null 的,然后设置一个默认值。
2、使用not null
一种约束条件,声明一个字段不能为null,然后可以给他设定一个默认值。