mysql数据库基本操作命令行

创建数据库:

creat database choose;

查询数据库

show databases;

显示当前数据库中的所有表的信息

show tables; 

显示指定数据库中的所有表信息

mysql> show tables from db3;

查看指定数据库的相关信息

show create database choose;

选择一个数据库

use choose;

查看当前数据库

select database();

删除数据库

drop database choose;

删除表

mysql> drop table A;

  

设置数据库使用的字符集

set names utf8;

查看表的详细设计信息

describe stu2;

查看表的内容(name和tel都是表中的属性)

select name,tel from stu2;

 这里如果出现了:

Empty set (0.00 sec)

 说明查询的表中的该属性是空的,还没有插入数据

向表中插入内容(name和tel是表中的属性,dong和456是插入的属性值)

mysql> insert into stu2(name,tel)
    -> values ('dong',456);

在已有的表中添加列

mysql> ALTER TABLE one
    -> add tall int;

删除表中的列

mysql> alter table A
    -> drop taa;

  

在表中添加枚举(enum只支持整数,我一开始定义的是男、女两个中文,踩了好大一个坑,后来发现定义整数是可以的)

 create table six(
    -> name varchar(5),
    -> sex enum('1','2')
    -> );

 修改表中列的数据类型

alter table test1
    -> modify column name varchar(20);

修改表的名字

mysql> alter table stu rename to stu_new;

  

将表转移到其他数据库中

mysql> alter table stu2 rename to db3.stu2;

表记录的修改

update test1
    -> set name='qq' where(name='j');

表记录的删除

DELETE FROM test1
    -> WHERE (name='liu');

设置主键的两种方式

法一:

mysql> create table C(
    -> id int primary key,
    -> name varchar(10));

法二:

mysql> create table D(
    ->  id int,
    ->  num int,
    -> name varchar(10),
    -> primary key(id,num));

  

取出表中列的重复结果

法一:

mysql> select distinct department from student_info;

 法二:

mysql> select department from student_info
    -> group by(department);

  

查看mysql编码格式

show variables like 'character%';

设置编码格式

set character_set_client=utf8; // 设置客户端的编码为utf8

 

set character_set_connection=utf8; // 

 

set character_set_database=utf8; //

 

set character_set_results=utf8; //

 

set character_set_server=utf8; //

 

set character_set_system=utf8; //

修改表的编码格式

alter table animal charset=utf8;

删除表中记录

truncate table one;

取出表中的年份(属性bir1必须是data类型的才能取出来)

select year(bir1) from rq;

使用枚举enum设置类型

create table my(
    -> sex enum('男','女')charset utf8);

使用like运算符与通配符实现模糊查询(匹配a开头的属性)

mysql> select * from stu
    -> where name like 'a%';

  

 使用limit限制记录数:例如查询从0开始的10条记录.该命令在分页功能中很有用

select * from table limit 0,10;

  

按照单个列的值进行排序:order by 列名 asc(升序)|desc(降序)

mysql> select number from student_info
    -> order by number desc;

通配符%和_的使用:%表示匹配任意一个字符串,_表示匹配一个字符

刘%:匹配姓刘的名字

刘_:匹配姓刘,且长度为2的名字


  

常用聚合函数:

sum() 累加求和

avg() 请均值

count(*) 统计记录的行数

count(列名)统计指定列的行数

max() 最大值

min() 最小值

求表中某列的平均值

select avg(grade) from stu;

  

连续使用聚合函数

mysql> select sum(grade),max(grade),min(grade),avg(grade) from stu;

  

使用聚合函数时给属性列设置别名

select sum(grade) as '中文' from stu;

  

通过group by 字句对记录分组

select avg(grade) from stu
    -> group by sex;

  

通过group by 字句根据记录属性分组

select sex,count(num) from stu group by sex;

  

having子从句的使用

mysql> select num,avg(grade) from stu_score
    -> group by num
    -> having avg(grade)<60;

  

使用order by 对字句进行排序

升序

 select * from stu_score
    -> order by(grade);

降序

 select * from stu_score 
    -> order by(grade) desc;

  

使用limit查询指定记录

 select num,name from stu
    -> order by(grade) desc
    -> limit 1;

  

基于派生表的查询from型子查询,注意点:派生表一定要指定一个别名,否则会报错

 select * from (select name from stu where grade>60) as s1;

  

广义笛卡尔积

select * from stu,score;

去除笛卡尔积中无效的选项后的结果

select * from stu,score where stu.num=score.num;

  

等值连接

 select stu.* from stu,score where c_id=1 and stu.num=score.num;

  

左连接语法格式

select stu.num,name,course,stu_score.grade from stu left join stu_score on stu.num=stu_score.num;

  

获得系统的当前时间

mysql> select now();

  

获得系统的当前年份

mysql> select year(now());

  

不相关子查询

SELECT number, name, id_number, major FROM student_info WHERE EXISTS (SELECT * FROM student_score WHERE student_score.number = student_info.number);

  

使用自连接简化子查询的方式

select * from student_info as s1,student_info as s2
    -> where s1.major=s2.major and s1.name='史珍香';

  

原文地址:https://www.cnblogs.com/lyd447113735/p/11585554.html