mysql基本使用

來源:互聯網
上載者:User

標籤:mysql

開啟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 

mysql基本使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.