MySQL常用语句

几个基础概念:

SQL:Structure Query Language(结构化查询语言),是关系式数据库管理系统的标准语言
主要分为四部分:

DDL(Data Definition Language):数据定义语言,用来定义数据库对象;CREATE和DROP

DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);INSERT,UPDATE和DELETE

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;GRANT和REVOKE

DQL(Data Query Language):数据查询语言,用来查询记录(数据);SELECT,WHERE,ORDER BY,GROUP BY和HAVING

注释写法:

# 单行注释
--  注意双短杠后有一个空格   --空格   -- 这也是一种单行注释
/* 这种可用于多行注释 */     

1.操作数据库

创建数据库
create databse dbname;

创建数据库并设置编码格式为gbk。不指定的话默认为utf-8
create database dbname character set gbk;

设置校验规则
create database dbname character set gbk collate gbk_chinese_ci;

查看当前数据库服务器中的所有数据库
show databases;

查看创建的dbname数据库的定义信息,即字符集之类
show create database dbname;

把dbname的字符集修改为utf8
alter database dbname character set utf8;

查看当前使用的数据库
select database();

切换到dbname数据库
use dbname;

删除前面创建的dbname数据库
drop database dbname;

2.数据类型

tinyint: 短整型,1个字节
int :整型,4个字节
double:浮点型,例如double(5,2)表示最多5位,其中2位为小数,即最大值为999.99。

varchar:可变长度字符串类型。varchar(10) ‘aaa’ 占3位
char:固定长度字符串类型。char(10) ‘aaa ’ 占10位

text:大文本字符串类型
blob:字节类型

datetime:日期时间类型。yyyy-MM-dd hh:mm:ss
date:日期类型,格式为:yyyy-MM-dd
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值

字符串类型和日期类型都要用单引号括起来。

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,
所以这个数据类型的字段可以存放这条记录最后被修改的时间。

3.数据表

创建表

create table 表名(
    字段名 类型(长度) [约束],
    字段名 类型(长度) [约束],
    ......
);

查看表:

查看数据库中的所有表:
show tables;

查看表结构:
desc tbname;

查看表的创建细节:
show create table tbname;

删除表:

drop table tbname;

修改表:

alter table 表名 add 列名 类型(长度) [约束]; --添加列

alter table 表名 modify 列名 类型(长度) [约束]; --修改列的类型长度及约束

alter table 表名 change 旧列名 新列名 类型(长度) [约束]; --修改表列名

alter table 表名 drop 列名; --删除列

alter table 表名 character set 字符集; --修改表的字符集

rename table 表名 to 新表名; --修改表名

alter table 表名 add primary key(字段1……);-- 追加主键约束

alter table 表名 drop primary key; -- 删除主键,只是删除约束,不删除数据

一个例子:

create table tbname(
	  id int(5) zerofill auto_increment,	
    name varchar(20),
    age int not null,
		brith date not null,
		phone int(11) unique,
		sex varchar(1) default '男',
    primary key(id,name) comment 'id和name作为复合主键'
);

常见的几种约束:

1.空属性 not null:not null 此列属性不允许为空,必须做数据插入

2.默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值
a:如果某一种属性经常出现,可以在一开始就指定数据 
b:默认值配合not null使用 
c:set和enum不允许设置默认值

3.列描述 comment:comment描述仅作为列的作用,没有实际含义,不等同于注释
这个可以通过 show create table tbname; 命令查看

4.自动填充0  zerofill
a:如果某一数值列规定了zerofill,则自动把此列变为无符号整形
 b: 规定了zerofill的数据列,如果数据列的长度没达到规定长度,则在数据前面自动填充0 
eg:insert into t6 value (10,123); —–>00123。(如果超过或者达到长度,则不填充)

5.主键约束 primary key:主键用于唯一约束字段数据,使用主键约束的字段,不能为空,不能重复,主键所在的列不能为浮点型,一张表有且只能有一个主键
a.单主键
eg:
create table tbname2(
    id int primary key comment 'id列表示学生学号不允许为空,也不允许重复',
    name varchar(20) not null
);
b.复合主键
create table tbname2(
	id int(5) zerofill, 
    name varchar(20),
    age int not null,
    primary key(id,name) comment 'id和name作为复合主键,组合起来不能重复'
);

6.自增长(auto_increment)
a.任何一个字段要做自增长,其本身必须是索引(key必须有值) 
b.一张表有且只能有一个自增长 
c.主键和自增长搭配使用,会以最大值自增长 
primary key  + auto_increment:逻辑主键 

7.唯一键(unique)
唯一键允许为空,但是不能重复,一张表中可以有多个字段设置唯一 
唯一键解决表中多个字段需要唯一性约束的问题 
null不做比较,可以允许多个null

8.外键约束(foreign key)
使用外键的条件; 
表的存储引擎必须是 innodb 
字段类型要一致 
被参照字段必须要是索引类型的一种,如 primary key

创建外键:
a, 建表的时候指定外键 
create table 表 ( 
foreign key (表A的字段名) references 表B(字段名);
) engine=innodb; 
b, 在已有表创建外键 
alter table 表1 ( add foreign key(字段名) references 表2(字段名) ;);

删除外键字段 
show create table 表名; //查看外键名称 
alter table 表名 drop foreign key 约束名;

注意事项:
外键值可以为null
外键必须是索引类型的一种
创建先创建父表,再创建子表
删除先删除子表数据
插入先插入父表数据

4.数据操作

插入数据(insert):

insert into 表(列名1,列名2,列名3..) values(值1,值2,值3..);--向表中插入某些列

insert into 表 values(值1,值2,值3..); --向表中插入所有列

更新数据(upload):

update 表名 set 字段名=值,字段名=值...; --这个会修改所有的数据,把一列的值都变了
update 表名 set 字段名=值,字段名=值... where 条件;

删除数据(delete):

delete from 表名 ; --  删除表中所有记录
delete from 表名 where 条件; -- 删除查找到的数据条
truncate table 表名;  -- 删除表里所有数据 

delete删除表中的数据,是一条一条删除,不清空auto_increment记录数;
删除后的数据如果在一个事务中还可以找回。

truncate删除是把表直接drop掉,重新建表,auto_increment将置为零。
删除的数据不能找回。执行速度比delete快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值