mysql cmd操作

mysql dos操作

1.库和表的基本操作

mysql -u root -p 连接数据库
show databases; 展示数据库
use test; 打开某个具体的数据库
show tables; 展示数据库里的表
desc user; ==show columns from user;查看user表结构
select * from user; 查看表里的数据
select * from user \G; 把表里的数据以竖着的方式展示

create database seu; 创建名为seu数据库
show create database seu; 显示创建的数据库的默认字符集,默认是utf8
drop database seu; 删除数据库
create database seu charset utf8; 创建字符集为utf8的数据库

创建表:auto_increment 自增
create table student(
id int auto_increment,
name char(32) not null,
age int not null,
primary key(id));

drop table student; 删除表

insert into student (name,age) values(“drt”,22); 插入数据
select * from student limit 3 offset 2; 从第二个数据开始查询三条(不包括第二条,且limit得在offset前面)
update student set name=“drt11” ,age=18 where id =1;修改 id=1的数据
delete from student where name=“drt22”; 删除数据
select * from student order by age; 按升序asc显示数据
select * from student order by age desc; 降序显示
select name,count() from student group by name; 现在的sql版本中group by 后面的列名必须出现在select后面,select 后是 * 也不行
select name,count(
) as num from student group by name; 给count起一个名字
alter table student add sex enum(“w”,“m”); 增加列(字段),可为空;但已有的数据此列值为空
alter table student add sex enum(“w”,“m”) not null; 增加列,不可为空;已有数据值默认为第一个即‘w’
alter table student drop sex; 删除列
alter table student modify name char(20); 修改类型
alter table student modify sex enum(“w”,“m”) null; 将这列修改为可取空值
alter table student modify sex enum(“w”,“m”) not null default “m”; 将这列修改为不可取空值,且默认值为m
alter table student change sex gender enum(“m”,“w”) not null; 修改字段名,将sex 改为 gender ,gender后面的得写全
alter table student rename to stu; 修改表名

select t.* from test_date1 t where v_date > str_to_date(‘2019-09-01’,’%Y-%m-%d’);查询date类型字段,日期大于20190901的数据;
在这里插入图片描述

2.插入数据前判断是否存在

https://www.bbsmax.com/A/A2dmggWxJe/
语法:

INSERT INTO table(field1, field2, fieldn) SELECT 'field1',
'field2', 'fieldn' FROM DUAL WHERE NOT EXISTS(SELECT field FROM
table WHERE field = ?)

例子:

 insert into company_index_tables (company_id,company_name,good_index,company_type,news_num1,news_num2,news_num3,news_num4) select 1,'name',0,type,0,0,0,0 from dual where not exists(select company_id from company_index_tables where company_id=1)

3.外键

创建含有外键的表:
create table grade(
id int auto_increment,
math int not null,
compute int not null,
primary key(id),
stu_id int not null,
key stu_grade_id (stu_id),
constraint stu_grade_id foreign key (stu_id) references student (id));
反引号是为了区分 MySql 关键字与普通字符而引入的符号,一般的,表名与字段名都使用反引号
eg:SELECT select FROM test WHERE select=‘字段值’
在test表中,有个select字段,如果不用反引号,MYSQL将把select视为保留字而导致出错,所以,有MYSQL保留字作为字段的,必须加上反引号来区分。

或者:
create table grade(
id int auto_increment,
compute int not null,
math int not null,
primary key(id),
stu_id int not null,
foreign key(stu_id) references student(id));

mysql给一张表新增字段,并设置该字段为外键
首先给usercategory表新增libraryid字段:
alter table usercategory add libraryid varchar(50)
再修改picturelibrary表的libraryid字段为表usercategory的外键
alter table usercategory add constraint libraryid foreign key(libraryid) references picturelibrary(libraryid)

连接:inner join:
eg:
1.mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
等于:
mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author;
2.select s.id,s.name,s.age,s.gender,g.compute,g.math from student s inner join grade g on s.id=g.stu_id and s.id<4;

left join :https://www.runoob.com/mysql/mysql-join.html
rigth join: https://www.runoob.com/mysql/mysql-join.html

4. 从第几行开始取出多少数据(1中有写)

MySQL数据库中提供了Limit关键字用来限制返回的结果集,语法为“Limit 需要返回记录的首行行数,要返回记录的条数”,例如:
SELECT * FROM T_EMPLOYEE ORDER BY EMPLOYEE_ID LIMIT 10,5
查询结果就是5行数据,从第10行开始。

5.事务

事务:即删除某个人,就要删除其他表里和这个人关联的数据,这些操作就构成一个事务
mysql只有使用了Innodb数据库引擎(默认就是它)才支持事务
事务保证包含的sql语句要么都执行,要么都不执行
事务用来增insert 删delete 改update
事务执行:
begin;
insert into a (a) values (555);
rollback;/commit; 有问题回滚,没问题就提交

6.索引

索引:加快查询速度
create index index_name on student(name(32)); 给student的name字段建立索引
show index from student; 查看student表中的索引
drop index index_name on student; 删除索引

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值