当前位置:Gxlcms > 数据库问题 > MySQL的基本操作

MySQL的基本操作

时间:2021-07-01 10:21:17 帮助过:22人阅读

关系型数据库和非关系型数据库

  关系型数据库的特点:

    1.数据以表格的形式出现;

    2.每行是各种记录名称;

    3.每列是记录名称所对应的数据域;

    4.许多的行和列组成一张表单;

    5若干的表单组成数据库。

MySQL数据库基本操作

  连接数据库:

    mysql:采用匿名账号和密码登陆本机服务。

    mysql -h localhost -u root -proot:采用root账号和root密码登陆本机服务。

    注:localhost指本地主机,即MySQL数据库所在的那台主机。

    mysql -u root -p:推荐方式默认登陆本机

    Enter password:***

    mysql -u root -p mydb:直接进入mydb数据库的方式登陆

 

SQL语句中的快捷键:

  \G:格式化输出(文本式)

  \s:查看服务器端信息

  \c:结束命令输入操作

  \q:退出当前sql命令行模式

  \h:查看帮助

 

数据库操作:

  show databases; 查看当前用户下的所有数据库

  create database [if not exists] 数据库名; 创建数据库

  use 数据库名; 选择进入数据库

  show create database 数据库名\G; 查看建库语句

  select database(); 查看当前所在的数据库位置

  drop database [if exists] 数据库名; 删除一个数据库

 

数据表操作:

  show tables; 查看当前库下的所有数据表

  desc(describe) 数据表; 查看数据表的结构

  show columns from 数据表; 查看数据表的结构

  show create table 表名\G 查看建表语句

  create table 表名(

  name varchar(16) not null,

  age int); 创建数据表

  drop table if exists 数据表名; 删除数据表

 

数据操作(增、删、改):

  增加数据

    insert into stu(name, age, sex) values(‘zhangsan’, 22, ‘male’);

  不指定字段名添加一条数据

    insert into stu values(‘zhangsan’, 22, ‘male’);

  指定部分字段名添加一条数据

    insert into stu(name, age) values(‘zhangsan’, 22);

  批量添加数据

    insert into stu(name, age, sex) values(‘zhangsan’, 22, ‘male’), (‘lisi, 21, ‘female’);

  删除数据

    delete from stu; 清空表中所有数据

    delete from stu where name = ‘zhangsan’; 有条件的删除表中部分数据

  修改数据

    格式:update 表名 set 字段1=值1, 字段2=值2,… where 条件

    update stu set age=26; 无条件的修改所有数据

    update stu set age=26 where name = ‘zhangsan’; 有条件的修改部分数据

    update stu set age=26, sex=’female’ where name = ‘zhangsan’; 同时修改两个字段信息

 

MySQL数据类型

  MySQL的数据类型分为三个类:数值类型、字串类型、日期类型 。 还有一个特殊的值:NULL。

数值类型:

    *tinyint(1字节)  0~255 或 -128~127

    smallint(2字节)

    mediumint(3字节)

    *int(4字节)

    bigint(8字节)

    *float(4字节)   float(6,2)

    *double(8字节)  

    decimal(自定义)字串形数值

字串类型:

    普通字串类型

     *char    定长字串        char(8)  

     *varchar 可变字串 varchar(8)

    二进制类型

     tinyblob

     blob

     mediumblob

     longblob

    文本类型

     tinytext

     *text      常用于<textarea></textarea>

     mediumtext

     longtext

    *enum枚举

    set集合

时间和日期类型:

    date  年月日

    time  时分秒

    *datetime 年月日时分秒

    timestamp 时间戳

    year 年

NULL值:

    NULL意味着“没有值”或“未知值”

    可以测试某个值是否为NULL

    不能对NULL值进行算术计算

    0或NULL都意味着假,其余值都意味着真

 

表的字段约束

    unsigned  无符号(正数)

    zerofill 前导零填充

    auto_increment 自增

    default   默认值

    not null 非空

    primary key  主键(非null并不重复)

    unique  唯一性(可以为null但不重复)

index  常规索引

 

建表语句格式

  create table 表名(

  字段名 类型 [字段约束],

  字段名 类型 [字段约束],

  字段名 类型 [字段约束],

  ...

  );

  create table stu(

      -> id int unsigned not null auto_increment primary key,

      -> name varchar(8) not null unique,

      -> age tinyint unsigned,

      -> sex enum(‘m‘,‘w‘) not null default ‘m‘,

      -> classid char(6)

      -> );

 

MySQL的运算符

    算术运算符:+  -  *  /  %

    比较运算符:=  >  <  >=  <=  <>  !=

    数据库特有的比较:in,not in,  is null,  is not null,  like,  between ... and

  逻辑运算符:and  or  not

 

修改表结构:

  格式: alter table 表名 action(更改选项);

  添加字段:alter table 表名 add 字段名信息

    alter table stu add class char not null; stu表的最后增加一个class字段。

    alter table stu add hobby varchar(255) default null after name;  stu表的name字段后增加一个hobby字段。

    alter table stu add school varchar(255) not null first; stu表的最前面增加一个school字段。

  删除字段:alter table 表名 drop 被删除的字段名

    alter table stu drop score; 删除stu表的score字段。

  修改字段:alter table 表名 change[modify] 被修改后的字段信息

    注意change可以修改字段名, modify 修改字段名。

    alter table stu modify age tinyint not null default 0; 修改stu表中的age字段信息(使用modify只修改字段信息,不修改字段名)。

    alter table stu change hobby gender enum(‘m‘, ‘w‘) not null default ‘m‘; stu表中的hobby字段改为gender字段(使用change可修改字段名和信息)。

  添加和删除索引

    alter table stu add index index_school(school); stu表中的school字段添加普通索引,索引名为index_school

    alter table stu add unique unique_uid(uid); stu表中的uid字段添加唯一性索引,索引名为unique_uid

    alter table stu drop index unique_uid; stu表中的unique_uid索引删除

  更改表名称:alter table stu rename as students; 将旧表明stu改为新表明students

  更改auto_increment初始值alter table students auto_increment=1;

  更改表类型:alter table students engine=‘InnoDB‘;

  MySQL数据库中的表类型一般常用两种:MyISAM和InnoDB。

 

MySQL单表查询

格式:

    select [字段列表]|* from 表名

     [where 搜索条件]

     [group by 分组字段 [having 子条件]]

     [order by 排序 asc|desc]

     [limit 分页参数]

无条件查询:

# 查询所有字段信息

> select * from stu;

+----+----------+--------+---------+-----+

| id | name     | gender | class   | age |

+----+----------+--------+---------+-----+

|  1 | zhangsan | m      | python3 |  20 |

|  2 | lisi     | w      | python4 |  20 |

|  3 | wangwu   | w      | python3 |  21 |

|  4 | zhaoliu  | m      | python5 |  22 |

|  5 | yang     | w      | python6 |  26 |

|  6 | wagbon   | m      | python5 |  25 |

|  7 | aaa      | w      | python4 |  22 |

|  8 | bbb      | m      | python5 |  23 |

|  9 | ccc      | w      | python6 |  21 |

| 10 | dd02     | m      | python3 |  20 |

+----+----------+--------+---------+-----+

# 查询部分字段

> select id, name from stu;

+----+----------+

| id | name     |

+----+----------+

|  1 | zhangsan |

|  2 | lisi     |

|  3 | wangwu   |

|  4 | zhaoliu  |

|  5 | yang     |

|  6 | wagbon   |

|  7 | aaa      |

|  8 | bbb      |

|  9 | ccc      |

| 10 | dd02     |

+----+----------+

# 查询部分字段,并增加字段查询

> select id, name, age, age+5 from stu;    # 得到5年后的年龄

+----+----------+-----+-------+

| id | name     | age | age+5 |

+----+----------+-----+-------+

|  1 | zhangsan |  20 |    25 |

|  2 | lisi     |  20 |    25 |

|  3 | wangwu   |  21 |    26 |

|  4 | zhaoliu  |  22 |    27 |

|  5 | yang     |  26 |    31 |

|  6 | wagbon   |  25 |    30 |

|  7 | aaa      |  22 |    27 |

|  8 | bbb      |  23 |    28 |

|  9 | ccc      |  21 |    26 |

| 10 | dd02     |  20 |    25 |

+----+----------+-----+-------+

# 也可以在查询的时候重命名字段名

> select id, name as stu_name, age, age+5 age5 from stu;    # 字段name重命名为stu_name,

+----+----------+-----+------+                                    # 字段age+5重命名为age5,关键字as可省略

| id | stu_name | age | age5 |

+----+----------+-----+------+

|  1 | zhangsan |  20 |   25 |

|  2 | lisi     |  20 |   25 |

|  3 | wangwu   |  21 |   26 |

|  4 | zhaoliu  |  22 |   27 |

|  5 | yang     |  26 |   31 |

|  6 | wagbon   |  25 |   30 |

|  7 | aaa      |  22 |   27 |

|  8 | bbb      |  23 |   28 |

|  9 | ccc      |  21 |   26 |

| 10 | dd02     |  20 |   25 |

+----+----------+-----+------+

where条件查询(基于MySQL 的运算符)

技术分享图片
> select * from stu where id=5;    # 查询id=5的学生信息

+----+------+--------+---------+-----+

| id | name | gender | class   | age |

+----+------+--------+---------+-----+

|  5 | yang | w      | python6 |  26 |

+----+------+--------+---------+-----+

> select * from stu where id in (2, 4, 7);    # 查询id分别为2、4、7的学生信息

+----+---------+--------+---------+-----+

| id | name    | gender | class   | age |

+----+---------+--------+---------+-----+

|  2 | lisi    | w      | python4 |  20 |

|  4 | zhaoliu | m      | python5 |  22 |

|  7 | aaa     | w      | python4 |  22 |

+----+---------+--------+---------+-----+

> select * from stu where id between 3 and 6;    # 查询id在3-6之间的学生信息

+----+---------+--------+---------+-----+

| id | name    | gender | class   | age |

+----+---------+--------+---------+-----+

|  3 | wangwu  | w      | python3 |  21 |

|  4 | zhaoliu | m      | python5 |  22 |

|  5 | yang    | w      | python6 |  26 |

|  6 | wagbon  | m      | python5 |  25 |

+----+---------+--------+---------+-----+

> select * from stu where id>3 and id < 9;    # 查询id大于3小于9的学生信息

+----+---------+--------+---------+-----+

| id | name    | gender | class   | age |

+----+---------+--------+---------+-----+

|  4 | zhaoliu | m      | python5 |  22 |

|  5 | yang    | w      | python6 |  26 |

|  6 | wagbon  | m      | python5 |  25 |

|  7 | aaa     | w      | python4 |  22 |

|  8 | bbb     | m      | python5 |  23 |

+----+---------+--------+---------+-----+

> select * from stu where class=python5 and gender=m;    # 查询班级为python5性别为m的学生信息

+----+---------+--------+---------+-----+

| id | name    | gender | class   | age |

+----+---------+--------+---------+-----+

|  4 | zhaoliu | m      | python5 |  22 |

|  6 | wagbon  | m      | python5 |  25 |

|  8 | bbb     | m      | python5 |  23 |

+----+---------+--------+---------+-----+
View Code

 

like运算符模糊查询

> select * from stu where name like "%a%";    # 模糊查询名字中间有字母a的学生

+----+----------+--------+---------+-----+

| id | name     | gender | class   | age |

+----+----------+--------+---------+-----+

|  1 | zhangsan | m      | python3 |  20 |

|  3 | wangwu   | w      | python3 |  21 |

|  4 | zhaoliu  | m      | python5 |  22 |

|  5 | yang     | w      | python6 |  26 |

|  6 | wagbon   | m      | python5 |  25 |

|  7 | aaa      | w      | python4 |  22 |

+----+----------+--------+---------+-----+

> select * from stu where name like "%ang%";    # 模糊查询名字中间有字母ang的学生

+----+----------+--------+---------+-----+

| id | name     | gender | class   | age |

+----+----------+--------+---------+-----+

|  1 | zhangsan | m      | python3 |  20 |

|  3 | wangwu   | w      | python3 |  21 |

|  5 | yang     | w      | python6 |  26 |

+----+----------+--------+---------+-----+

> select * from stu where name like "____";    # 模糊查询名字为四个字符的学生,一个_表示一个字符

+----+------+--------+---------+-----+

| id | name | gender | class   | age |

+----+------+--------+---------+-----+

|  2 | lisi | w      | python4 |  20 |

|  5 | yang | w      | python6 |  26 |

| 10 | dd02 | m      | python3 |  20 |

+----+------+--------+---------+-----+

> select * from stu where name like "z%";    # 模糊查询名字以字母z开头的学生

+----+----------+--------+---------+-----+

| id | name     | gender | class   | age |

+----+----------+--------+---------+-----+

|  1 | zhangsan | m      | python3 |  20 |

|  4 | zhaoliu  | m      | python5 |  22 |

+----+----------+--------+---------+-----+

> select * from stu where name like "%g";    # 模糊查询名字以字母g结尾的学生

+----+------+--------+---------+-----+

| id | name | gender | class   | age |

+----+------+--------+---------+-----+

|  5 | yang | w      | python6 |  26 |

+----+------+--------+---------+-----+

 

聚合函数:count()、max()、min()、sum()、avg()

# count()函数统计非空数据条数

> select count(*) from stu;    # 统计学生人数

+----------+

| count(*) |

+----------+

|       10 |

+----------+

> select count(id) from stu;    # 通过非空字段统计

+-----------+

| count(id) |

+-----------+

|        10 |

+-----------+

# max()、min()、sum()、avg()分别统计某字段的最大值、最小值、总和、平均值

> select count(id), max(age), min(age), sum(age), avg(age) from stu;

+-----------+----------+----------+----------+----------+        # 统计了学生的最大年龄、最小年龄、年龄总和、平均年龄

| count(id) | max(age) | min(age) | sum(age) | avg(age) |

+-----------+----------+----------+----------+----------+

|        10 |       26 |       20 |      220 |  22.0000 |

+-----------+----------+----------+----------+----------+

group by分组查询(配合聚合函数使用)

> select class from stu group by class; # 按班级分组进行查询

+--

                  

	 	
                    
                    
                    
                    
                    
                

人气教程排行