初学Mysql

MYSQL学习

操作数据库

create database db_name default charset utf8 collate utf8_general_ci;
show databases;
drop databases db_name;

操作表

use db_name;
create table table_name(id int, name char(10),tel int)
select * 
use db_name;
create table table_name(id int, name char(10),tel int) engine=innodb default charset=utf8; 
select * from table_name;

# 添加 
insert into table_name(id,name) values(1,'sychen');

如果是auto_increment则默认为一个pk,(主键)
约束primary key 加速查找
一张表里面只能 有一个自增和pk

一般创建如下:

create table table_name(
	列名 类型 描述
	id int not null auto_increment
	name char(10) not null
	tel int null
	)

清空表内数据

delete from table_name; # 自增还会按照原来的走
truncate table table_name; # 不会按照原来的走
drop table table_name: # 删除这张表

数据类型

数据类型分为数字型和字符串和时间类型
数据库存放文件的话,只存路径

时间类型:
枚举类型:
集合类型:

增删改查

insert into table_name(id,name) values(1,'sychen');

删除

delete from table_name where 条件;

update  table_name set age=18 where age=17;

select * from table_name;

外键

让一张表里的一列和另一张表里的一列作一个关系叫作外键。
创建外键:

未链接的两张表

create table userinfo(
	uid bigint auto_increment primary key,
	name varchar(32),
	department_id int
)engine=innodb default charset=utf8;

create table department(
	id bigint auto_increment primary key,
	title char(15)
)engine=innodb default charset=utf8;

使用外键链接的两张表:

create table userinfo(
	uid bigint auto_increment primary key,
	name varchar(32),
	department_id int,
	constraint fk_user_depar foreign key ('department_id',) references department('id')
)engine=innodb default charset=utf8;

create table department(
	id bigint auto_increment primary key,
	title char(15)
)engine=innodb default charset=utf8;

外键就是一对多

主键的用处:一张表只能有一个主键
一个主键不一定是一列,主键可以由多个组成
主键还能这样写:

# 原来是这样写的
create table table_name(
	列名 类型 描述
	id int not null auto_increment primary key,
	name char(10) not null,
	tel int null
	)

# 现在还能这样写:
create table table_name(
	列名 类型 描述
	id int not null auto_increment,
	nid int not null,
	name char(10) not null,
	tel int null,
	primary key (id,nid)  # 创建两个主键,可以由两列共同组成

主键是两列的时候,外键可以创建,与主键对应

唯一索引

加速查找,
联合唯一

create table t1(
	id int ...,
	num int...,
	xx int ...,
	unique uq1 (num,id) # 联合唯一
)

目的表示numxx不能全相同,且加速查找 可以为空。
主键也不能重复,主键不能为空。

外键的变种

用户表
主机表
用户主机关系表

sql语句的补充

insert into tb(name,age) values('alex',12);
insert into tb(name,age) values('alex',12)('alex',12);

# 把tb2内的数据插入到tb1中
insert into tb1(name,age) select name,age from tb2;

delete from tb2;
delete from tb2 where id = 2 and name = 'alex';

update tb12 set name='alex' where id>12 and name='xx';

select * from tb2;

select id,name from tb2;

select id as uid,name as n from tb2;

select id as uid,name as n from tb2;

select id as uid,name as n from tb2 where id > 10 or name = 'alex';

查id等于1052的数据
select id,name from tb2 where id in (10,5,2);
select id,name from tb2 where id not in (10,5,2);

查一个范围的(1,201)
select id,name from tb2 where id between 1 and 201;

select * from tb2 where id in (select id from tb1)

通配符
# 详见https://www.cnblogs.com/wupeiqi/articles/5713315.html
select * from tb2 limit 10; 看前十条
select * from tb2 limit 110;1开始取10条

排序
select * from tb2 order by uid; 安uid排序
select * from tb2 order by uid desc; 安uid 大到小 排序
select * from tb2 order by uid asc; 安uid 小到大 排序

取最后十个
先排序 然后 取数据
select * from tb2 order by uid desc limit 0,10;

分组
	目的:

```sql
create table fruit(
                nid int not null primary key,
                smt char(32) null ,
                color_id int not null,
                constraint fk_cc foreign key (color_id) references color(nid)
            );

复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值