数据库,表,数据相关SQL

数据库相关SQL

操作 格式
1. 查看所有数据库 show databases;
2.创建数据库 create database 数据库名;
3.查看数据库详情 show create database 数据库名;
4.创建数据库指定字符集 create database 数据库名 character set utf8/gbk;
5.删除数据库 drop database 数据库名;
6.使用数据库 use 数据库名;

表相关的SQL

操作 格式
1.创建表 create table 表名(字段名 字段类型,… ...);
2.查询所有表 show tables;
3.查看表详情 show create table 表名;
4.引擎 create table 表名(… … ) engine=myisam/innodb;
5.查看表字段信息 desc 表名;
6.删除表 drop table 表名;
7.修改表名 rename table 表名 to 新表名;
8.修改表引擎和字符集 alter table 表名 engine=*** charset=***;
9.添加表字段 alter table 表名 add 字段 字段类型 空/first/after 字段
10.删除表字段 alter table 表名 drop 字段名称;
11.修改表字段的名称和类型 alter table 表名 change 字段 新字段 新字段类型;
12.修改表字段的类型和位置 alter table 表名 modify 字段 新类型 first/after 字段;

数据相关SQL

操作 格式
1.插入数据
全表插入格式 insert into 表名 values (值1,值2,值3); (所有值都得有)
指定位置插入 insert into 表名 (字段1,字段2) values (值1,值2);
2.数据查询
查询所有字段 select*from 表名;
查询部分字段 select 字段, … from 表名;
按条件查询字段 select 字段,… from 表名 where 字段的条件;
3.修改数据 update 表名 set 字段=值where 字段的条件;
4.删除数据 delete from 表名 where 字段的条件;

主键约束

  • 什么是主键:用于表示数据唯一性的字段称为主键
  • 约束:是给表字段添加的限制条件
  • 主键约束:限制主键字段的值 唯一并且非空
  • 格式: create table t1(id int primary key,name varchar(10));
  • 测试:
insert into t1 values(1,'悟空'); //成功
insert into t1 values(1,'八戒'); //失败 不能重复 
insert into t1 values(null,'沙僧'); //失败 不能为null
insert into t1 values(2,'玉帝哥哥');//成功 

主键约束+自增 primary key auto_increment

  • 格式: create table t2(id int primary key auto_increment,name varchar(10));
  • 测试:
insert into t2 values(null,'悟空');   1
insert into t2 (name) value ('八戒'); 2
insert into t2 values(10,'小龙女');   10 
insert into t2 values(null,'白龙马'); 11 
delete from t2 where id>9; 
insert into t2 values(null,'黑熊怪'); 12 
delete from t2;
insert into t2 values(null,'奔波霸'); 13 

自增数值只增不减,从历史最大值基础上+1

truncate

  • 格式: truncate table t2;
  • 删除表 并且创建新表,自增数值清零

注释 comment

  • 格式: create table t3(id int primary key auto_increment comment ‘这是主键’,name varchar(10) comment ‘这是名字’);
  • 查看注释: show create table t3;

`和’区别:

` :是修饰表名和字段名的 ,可以省略 create tablet4(id` int);
’ : 是用于修饰字符串的

数据冗余

如果表设计不够合理,当数据量增多时出现的大量重复数据,这种现象称为数据冗余,通过拆分表的方式解决冗余问题

外键: 用于建立关系的字段称为外键

事务

  • 事务是数据库中执行同一业务多条sql语句的工作单元 可以保证多条sql语句要么全部执行成功,要么全部执行失败。

  • 创建用户表: create table user(id int,name varchar(10),money int,state varchar(5));

  • 插入数据: insert into user values(1,‘超人’,50,‘冻结’),(2,‘蝙蝠侠’,2000,‘正常’);

**例子:** 
蝙蝠侠给超人转账200块钱  无事务保护: 
	update user set money=money-200 where id=2 and state='正常'; 
	update user set money=money+200 where id=1 and state='正常';

有事务保护:转账失败
	begin; //开启事务   
	update user set money=money-200 where id=2 and state='正常'; 
	update user set money=money+200 where id=1 and state='正常'; 
	rollback;//回滚

有事务保护: 转账成功 
	insert into user values(3,'海王',10,'正常');-蝙蝠侠给海王转账500 
	begin;  
	update user set money=money-500 where id=2 and state='正常'; 
	update user set money=money+500 where id=3 and state='正常';  
	commit;//提交

保存回滚点:savepoint 标识
 	begin;  
	update user set money=money-10 whereid=2;   
	savepoint s1;   
	update user set money=money-50 where id=2;   
	update user set money=money-100 where id=2; 
	rollback to s1;

SQL分类

  • DDL Data Definition Language 数据定义语言
    • 包括: create,drop,alter,truncate
    • 不支持事务
  • DML Data Manipulation Language 数据操作语言
    • 包括: insert,update,delete,select(DQL)
    • 支持事务 select和事务没有关系
  • DQL Data Query Language 数据查询语言(重要!)
    • 只包括select
  • TCL Transaction Control Language 事务控制语言
    • 包括:begin 、 rollback、 commit、 savepoint s1 、rollback to s1
  • DCL Data Control Language 数据控制语言
    • 涉及分配用户权限相关的SQL

数据库的数据类型

整数

  • int对应java里面的int bigint对应java中的long
  • int(m) m代表显示长度 需要结合zerofill使用
create table t_int(id int,age int(10) zerofill); 	
insert into t_intvalues(1,18); 
select * from t_int;

浮点数

  • double(m,d) m代表总长度 d代表小数长度 76.234 m=5 d=3
  • decimal超高精度浮点数,涉及超高精度运算时使用

字符串

  • char(m): 不可变长度字符串 m=10 “abc” 所占长度为10 ,执行效率略高
  • varchar(m):可变长度字符串 m=10 “abc” 所占长度3 好处是节省空间 最大长度为65535,但是建议长度不要超过255 超过255建议使用text
  • text(m):可变长度字符串 m=10 “abc” 所占长度3 最大长度65535

日期

  • date:只保存年月日
  • time:只保存时分秒
  • datetime:年月日时分秒 默认值null 最大值9999-12-31
  • timestamp:年月日时分秒 默认值当前时间 最大值2038-1-19,以时间戳的形式保存时间
	create table t_date(t1 date ,t2 time ,t3 datetime ,t4 timestamp);
	insert into t_date values('2019-1-15',null,null,null);
	
	insert into t_date values(null,'16:57:38',
		'2018-10-22 20:18:30',null);

猜你喜欢

转载自blog.csdn.net/weixin_43179225/article/details/86482145
今日推荐