mysql基本使用

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

打开mysql: mysql -hlocalhost -uroot -p密码

     



        接下来就是高能了,有时候会因为mysql版本不同的问题,字段的问题,空格的问题经常造成错误,所以以下的一些代码在你的机器上出错请不要见怪,不懂的就去问百度。

       表演开始:

       先创建一个列表:

mysql> create table student(

    -> stu_id int  auto_increment,

    ->  name CHAR(32) NOT NULL,

    -> age  INT NOT NULL,

    -> register_date date not null,

    -> primary key (id));

ERROR 1046 (3D000): No database selected

what?出错了,怎么办,原因是什么

我们要先创建一个数据库

mysql> create database xsphpdb;

Query OK, 1 row affected (0.00 sec)

ok,再这创建一个列表

mysql> create table xsphpdb.users(

    -> id int,

    -> name char(30),

    -> age int,sex char(3));

Query OK, 0 rows affected (0.08 sec)

我们再来看看这个列表

mysql> show tables;

ERROR 1046 (3D000): No database selected

what?又出错了,

因为你虽然创建了一个数据库,却没有进入它,故而出错。

mysql> use xsphpdb;

Database changed

mysql> show tables;

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

| Tables_in_xsphpdb |

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

| users             |

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

1 row in set (0.02 sec)



this is ok ,那么我们接下来做什么呢?

查看一个列表的详细信息

mysql> desc users;

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

| Field | Type     | Null | Key | Default | Extra |

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

| id    | int(11)  | YES  |     | NULL    |       |

| name  | char(30) | YES  |     | NULL    |       |

| age   | int(11)  | YES  |     | NULL    |       |

| sex   | char(3)  | YES  |     | NULL    |       |

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

OK

再来创建一个:

mysql> create table studen(

    -> stu_id INT NOT NULL AUTO_INCREMENT,

    ->    name CHAR(32) NOT NULL,

    ->    age  INT NOT NULL,

    -> register_date DATE not null,

    -> PRIMARY KEY ( stu_id )

    -> );

mysql> desc studen;

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

| Field         | Type     | Null | Key | Default | Extra          |

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

| stu_id        | int(11)  | NO   | PRI | NULL    | auto_increment |

| name          | char(32) | NO   |     | NULL    |                |

| age           | int(11)  | NO   |     | NULL    |                |

| register_date | date     | NO   |     | NULL    |                |

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

大家看这个表,跟上面的表有什么区别?

在于NUll

记住以后创建列表一定要加

   -> stu_id INT NOT NULL AUTO_INCREMENT,

    ->    name CHAR(32) NOT NULL,

    ->    age  INT NOT NULL,

    -> register_date DATE not null,

not null ,否则你将迎来的是各种错误

插入数据: insert into studen (name,age,register_date) values ("alex li",22,"2016-03-4");

select * from studen;

查看元素

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

| stu_id | name    | age | register_date |

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

|      1 | alex li |  22 | 2016-03-04    |

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

1 row in set (0.00 sec)

如此重复几遍

mysql> select * from studen;

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

| stu_id | name    | age | register_date |

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

|      1 | alex li |  22 | 2016-03-04    |

|      2 | alex li |  22 | 2016-03-04    |

|      3 | alex li |  22 | 2016-03-04    |

|      4 | alex li |  22 | 2016-03-04    |

|      5 | alex li |  22 | 2016-03-04    |

|      6 | alex li |  22 | 2016-03-04    |

|      7 | alex li |  22 | 2016-03-04    |

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

如何查数据呢

mysql> select * from studen limit 3 offset 2;

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

| stu_id | name    | age | register_date |

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

|      3 | alex li |  22 | 2016-03-04    |

|      4 | alex li |  22 | 2016-03-04    |

|      5 | alex li |  22 | 2016-03-04    |

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

mysql> select * from studen limit 1 offset 2;

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

| stu_id | name    | age | register_date |

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

|      3 | alex li |  22 | 2016-03-04    |

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

mysql> select * from studen  where stu_id>3 and age=22;

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

| stu_id | name    | age | register_date |

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

|      4 | alex li |  22 | 2016-03-04    |

|      5 | alex li |  22 | 2016-03-04    |

|      6 | alex li |  22 | 2016-03-04    |

|      7 | alex li |  22 | 2016-03-04    |

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

4 rows in set (0.00 sec)

此处,还有一个特别的概念:

模糊寻找:

mysql> select * from studen  where register_date like "2016-03%";

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

| stu_id | name    | age | register_date |

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

|      1 | alex li |  22 | 2016-03-04    |

|      2 | alex li |  22 | 2016-03-04    |

|      3 | alex li |  22 | 2016-03-04    |

|      4 | alex li |  22 | 2016-03-04    |

|      5 | alex li |  22 | 2016-03-04    |

|      6 | alex li |  22 | 2016-03-04    |

|      7 | alex li |  22 | 2016-03-04    |

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

7 rows in set, 1 warning (0.00 sec)

增,查,学完了,我们来学习如何修改:

update studen set name="ChenRonghua",age=33 where stu_id=4;

ok 

update studen set name="ChenRonghua",age=33 where stu_id>6;

ok

mysql> select * from studen  where register_date like "2016-03%";

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

| stu_id | name        | age | register_date |

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

|      1 | alex li     |  22 | 2016-03-04    |

|      2 | alex li     |  22 | 2016-03-04    |

|      3 | alex li     |  22 | 2016-03-04    |

|      4 | ChenRonghua |  33 | 2016-03-04    |

|      5 | alex li     |  22 | 2016-03-04    |

|      6 | alex li     |  22 | 2016-03-04    |

|      7 | ChenRonghua |  33 | 2016-03-04    |

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

最后一个是删

delete from studen where name="ChenRonghua";

还有一个就是如何排序的问题

正着排序,与反着排序

mysql> select * from studen  order by stu_id;

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

| stu_id | name    | age | register_date |

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

|      1 | alex li |  22 | 2016-03-04    |

|      2 | alex li |  22 | 2016-03-04    |

|      3 | alex li |  22 | 2016-03-04    |

|      5 | alex li |  22 | 2016-03-04    |

|      6 | alex li |  22 | 2016-03-04    |

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

5 rows in set (0.00 sec)


mysql> select * from studen  order by stu_id desc;

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

| stu_id | name    | age | register_date |

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

|      6 | alex li |  22 | 2016-03-04    |

|      5 | alex li |  22 | 2016-03-04    |

|      3 | alex li |  22 | 2016-03-04    |

|      2 | alex li |  22 | 2016-03-04    |

|      1 | alex li |  22 | 2016-03-04    |

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

再添加两个数据


mysql> insert into studen (name,age,register_date) values ("wngd",23,"2016-06-4");

Query OK, 1 row affected (0.00 sec)


mysql> insert into studen (name,age,register_date) values ("wn45",2324,"2016-07-4");

Query OK, 1 row affected (0.00 sec)


mysql> select * from studen;

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

| stu_id | name    | age  | register_date |

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

|      1 | alex li |   22 | 2016-03-04    |

|      2 | alex li |   22 | 2016-03-04    |

|      3 | alex li |   22 | 2016-05-31    |

|      5 | alex li |   22 | 2016-03-04    |

|      6 | alex li |   22 | 2016-03-04    |

|      8 | wngd    |   23 | 2016-06-04    |

|      9 | wn45    | 2324 | 2016-07-04    |

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

7 rows in set (0.00 sec)

对数据进行统计

mysql> select name,count(*) as stu_num from studen group by register_date;

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

| name    | stu_num |

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

| alex li |       4 |

| alex li |       1 |

| wngd    |       1 |

| wn45    |       1 |

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

4 rows in set (0.00 sec)


mysql> select name,sum(age) from studen;

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

| name    | sum(age) |

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

| alex li |     2457 |

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

1 row in set (0.00 sec)

求总和

mysql> select name,sum(age) from studen group by name;

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

| name    | sum(age) |

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

| alex li |      110 |

| wn45    |     2324 |

| wngd    |       23 |

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

mysql> select name,sum(age) from studen group by name with rollup;

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

| name    | sum(age) |

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

| alex li |      110 |

| wn45    |     2324 |

| wngd    |       23 |

| NULL    |     2457 |

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

4 rows in set (0.00 sec)


mysql> select coalesce(name,"total age"),sum(age) from studen group by name with rollup;

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

| coalesce(name,"total age") | sum(age) |

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

| alex li                    |      110 |

| wn45                       |     2324 |

| wngd                       |       23 |

| total age                  |     2457 |

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

再给大家介绍一下:

mysql> ALTER TABLE studen ADD zk_en VARCHAR(16) not null;   #加一列一定要加not null,否则以后的操作很难办,由于版本不同,各解决方法也不尽相同

Query OK, 0 rows affected (0.07 sec)

Records: 0  Duplicates: 0  Warnings: 0


mysql> desc studen;

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

| Field         | Type          | Null | Key | Default | Extra          |

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

| stu_id        | int(11)       | NO   | PRI | NULL    | auto_increment |

| name          | char(32)      | NO   |     | NULL    |                |

| age           | int(11)       | NO   |     | NULL    |                |

| register_date | date          | NO   |     | NULL    |                |

| sex           | enum('M','F') | YES  |     | NULL    |                |

| phone         | int(11)       | NO   |     | NULL    |                |

| zk_env        | varchar(16)   | YES  |     | NULL    |                |

| zk_en         | varchar(16)   | NO   |     | NULL    |                |

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

mysql> alter table studen change zk_en gender char(32) not null default "X";#修改类型

Query OK, 7 rows affected (0.07 sec)

Records: 7  Duplicates: 0  Warnings: 0


mysql> desc studen;

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

| Field         | Type          | Null | Key | Default | Extra          |

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

| stu_id        | int(11)       | NO   | PRI | NULL    | auto_increment |

| name          | char(32)      | NO   |     | NULL    |                |

| age           | int(11)       | NO   |     | NULL    |                |

| register_date | date          | NO   |     | NULL    |                |

| sex           | enum('M','F') | YES  |     | NULL    |                |

| phone         | int(11)       | NO   |     | NULL    |                |

| zk_env        | varchar(16)   | YES  |     | NULL    |                |

| gender        | char(32)      | NO   |     | X       |                |

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

但是,如果还是不够怎么办呢

我们学习怎么把zk_env null改变呢

update studen set zk_ens=0 where zk_ens is null;

alter table  studen MODIFY COLUMN zk_ens int(11) NOT NULL DEFAULT '0' ;

this is ok 




      本文转自眉间雪 51CTO博客,原文链接:http://blog.51cto.com/13348847/2046693,如需转载请自行联系原作者




相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
关系型数据库 MySQL Linux
CentOS7 MySQL 数据库基本使用
CentOS7 MySQL 数据库基本使用
842 0
CentOS7 MySQL 数据库基本使用
|
存储 缓存 关系型数据库
MySQL的基本使用
MySQL的基本使用
39 1
|
存储 SQL 关系型数据库
关于初识MySQL数据库以及MySQL的基本使用
关于初识MySQL数据库以及MySQL的基本使用
111 0
|
SQL 安全 数据可视化
MySQL基本使用
MySQL基本使用
|
SQL Java 关系型数据库
about MySQL Workbench的基本使用及运用操作
http://blog.csdn.net/dongdong9223/article/details/48318877   服务,有MySQL启动中,就证明安装完成了. (各种启动不成功时百度一下,1,安装选项时没有对firewall port 打勾 2,端口冲突 3,系统框架没有安装 .
2085 0
|
关系型数据库 MySQL 数据库
|
SQL 关系型数据库 MySQL
MySql WorkBench基本使用以及基本sql语句
原文http://www.2cto.com/database/201301/187110.html 导读: 本篇文章会教你如何使用My Sql WorkBench 5.2 进行数据库的基本操作(建库建表等) 前言 MySql是甲骨文公司的产物,所以有些地方跟Oracle挺相似,比如“服务器实例”这个概念,当初由sqlserver转Oracle的时候,一开始就不理解这个服务器实例是个什么东西,因为在SqlServer里,就只有一个服务器,登录之后就是操作数据库,基本上就是一个项目对应一个数据库。
2967 0
|
21天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
55 3
Mysql(4)—数据库索引
|
6天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
41 2
|
9天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
43 4

热门文章

最新文章