SQL孺子牛

基本SQL语句

创建数据库

create database cgb2022 default character set utf8;
create database mydb charset=GBK;

删除数据库

drop database cgb2022;

查看某个数据库创建时的信息

show create database mydb;

查看所有的数据库

show databases;

使用数据库

use cgb2022;

修改数据库名

create database '新的数据库名';
rename table '旧的数据库名'.'旧数据库里的表' to '新的数据库名'.'新数据库里的表';
use '新的数据库名';
drop DATABASE '旧的数据库名';

查看所有的表

show tables;

删除表

drop table if exists tb_door;
drop table tb_door;

创建表

create table tb_door(
id int primary key auto_increment,
door_name varchar(100) default '无门市',
tel varchar(50) default '无座机'
);

修改表名

rename talbe user to userinfo

插入列(字段)

alter table tb_door add column money numeric(7,2);
alter table test add column tel varchar(11) first;
alter table tb_door add column hiredate date after door_name;

删除列(字段)

alter table tb_door drop column money;

查看表结构

desc tb_door;

查看表创建时的信息

show create table tb_door

插入行记录

insert into tb_door(id,door_name,tel,money) values(null,"永和大王一号店","022-123456",998);
insert into tb_door values(null,"永和大王二号店","022-789456",886);
insert into person(name,age) values(default,22),(阿猫,null),(default,null);

查询表记录

select * from tb_door;

修改表单个记录

update tb_door set tel = 10086 where id = 1;
update person set name ='阿狗',age=6 where name = '阿猫';

删除表单个记录

delete from tb_door where id = 13;

清空单表

delete from Person
truncate table tb_door;
truncate tb_door;

记录排序(正序 从小到大)

select * from  tb_door order by money;

倒序(从大到小)

select * from tb_door order by money desc;

查询总数

select  count(1) door from tb_door;

批量增加字段

事务

begin;
alter table tb_door add sal numeric(7,2);
alter table tb_door add comm numeric(7,2);
alter table tb_door add hiredate varchar(11);
commit;

修改字段类型

alter table tb_door modify hiredate date;
alter table tb_door change hiredate hiredate date;
alter table tb_door change door_name door_name varchar(100) default '待售';

修改字段名称

注意: 修改字段名称同时必须重新定义 修改后名称的类型

alter table tb_door change comm loc varchar(11) not null;

调整字段顺序

注意: 调整字段顺序同时必须重新定义 字段名称和字段类型

alter table tb_door change loc loc varchar(11) after tel;
alter table test modify id int(10) unsigned auto_increment first;
alter table test add column tel varchar(11) first;

添加注释

alter table tb_door comment "注释..."; -- 为表添加注释 或修改注释
create table test(
id int(11) comment "字段的注释"
)comment = "表的注释";
-- 创建表时给表和字段分别添加注释
alter table test change column id id int(11) primary key auto_increment comment "添加字段的注释"; -- 给字段添加注释 或修改注释

查看注释

show create table tb_door; -- 查看创建表的SQL的全部信息,甚至是表和字段的注释
show full columns from tb_door; -- 查看每一个字段的注释

数据类型

命名规则

  • 字段名必须以字母开头,尽量不要使用拼音
  • 长度不能超过30个字符(不同数据库,不同版本有所不同)
  • 不能使用SQL的保留字,如where,order,group等
  • 只能使用如下字符 a-z、A-Z、0-9、$ 等
  • Oracle 习惯全大写:USER_NAME;MySQL习惯全小写:user_name
  • 多个单词用下划线隔开,而非java语言的驼峰规则

字符

  • char
    字符串,长度固定,不足使用空格填充,最多容纳2000个字符,char(11) 存储abc,占11位。
    查询速度极快但浪费空间。
  • varchar
    变长字符串,最多容纳4000个字符,varchar(11) 存储abc,只占3位。Oracle varchar2 4000。
    查询稍慢,但节省空间。
  • 大文本
    大量文字(不推荐使用,尽量使用varchar替代)

注:

  1. 以UTF8 编码计算,一个汉字占3个字节。
  2. 不同数据库版本长度限制可能会有不同

数字

  • tinyint、int 整数类型
  • float、double 小数类型
  • numeric(5,2) decimal(5,2) 小数类型 案例表示共5位,其中3位整数2位小数
  • decimal 和 numeric 表示精确的整数数字

日期

  • date 年月日
  • time 时分秒
  • datetime 年月日和时分秒
  • timestamp 时间戳,不是日期,而是从1970年1月1日到指定日期的毫秒数

图片

  • blob
    二进制数据,可以存放图片、声音、容量 4G。数据库庞大,备份缓慢,这些内容去备份多份价值不大。同时数据库迁移过大,迁移时间过久。
    目前主流不会直接存储这样的数据,而只是存储其访问路径,文件则存放在磁盘上

字段约束

  • 主键约束
    如果为一个列添加 primary key 时,那么这个列就是主键,
    主键特点是唯一且不能为空
    主键自增策略
    当主键为数值类型时,为了方便维护,可以设置主键自增策略 auto_increment

  • 非空约束
    如果为一个列添加了 not null 时,那么这个列的值就不能为空,但可以重复

  • 唯一约束
    如果为一个列添加了 unique 时,那么这个列的值就必须是唯一的,即不能重复,但可以为空

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值