一、DDL:數據定義語言
1.創建數據庫(create)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| my_db |
| mysql |
| performance_schema |
| sys |
| tracing_process |
| tracing_system |
+--------------------+
7 rows in set (0.00 sec)
mysql> create database mydb;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| my_db |
| mydb |
| mysql |
| performance_schema |
| sys |
| tracing_process |
| tracing_system |
+--------------------+
8 rows in set (0.00 sec)
2.創建表(create)
切換數據庫
mysql> use mydb;
Database changed
mysql> show tables;
Empty set (0.00 sec)
創建表
mysql> create table mytable(
-> id int not null primary key,
-> name varchar(32),
-> age int,
-> salary double
-> );
Query OK, 0 rows affected (0.03 sec)
查看錶是否創建成功
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| mytable |
+----------------+
1 row in set (0.00 sec)
查看創建後的表結構
mysql> desc mytable;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(32) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | double | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
更詳細的表結構(可以看到存儲索引ENGINE和字符編碼CHARSET)
mysql> show create table mytable \G;
*************************** 1. row ***************************
Table: mytable
Create Table: CREATE TABLE `mytable` (
`id` int(11) NOT NULL,
`name` varchar(32) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`salary` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
ERROR:
No query specified
3.複製表結構
mysql> create table mytable2 like mytable;
Query OK, 0 rows affected (0.03 sec)
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| mytable |
| mytable2 |
+----------------+
2 rows in set (0.00 sec)
mysql> desc mytable2;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(32) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | double | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
4.刪除(drop)
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| mytable |
| mytable2 |
+----------------+
2 rows in set (0.00 sec)
刪除表
mysql> drop table mytable2;
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| mytable |
+----------------+
1 row in set (0.00 sec)
刪除數據庫
mysql> create database myddb;
Query OK, 1 row affected (0.00 sec)
mysql> drop database myddb;
Query OK, 0 rows affected (0.02 sec)
5.修改操作(alter)
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| mytable |
+----------------+
1 row in set (0.00 sec)
修改表名(rename)
mysql> alter table mytable rename mytb;
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| mytb |
+----------------+
1 row in set (0.00 sec)
修改字段屬性(modify)
mysql> alter table mytb modify column name varchar(255);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc mytb;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(255) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | double | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
修改字段屬性和名稱(change)
mysql> alter table mytb change name name1 varchar(32);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc mytb;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name1 | varchar(32) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | double | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
添加字段
mysql> alter table mytb add column address varchar(255);
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc mytb;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name1 | varchar(32) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | double | YES | | NULL | |
| address | varchar(255) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
刪除字段
mysql> alter table mytb drop column address;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc mytb;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name1 | varchar(32) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | double | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
二、DML:數據操縱語言
1.添加(insert)
未指定字段,全部添加
mysql> insert into mytb values(1,'123',12,20.0);
Query OK, 1 row affected (0.01 sec)
mysql> select * from mytb;
+----+-------+------+--------+
| id | name1 | age | salary |
+----+-------+------+--------+
| 1 | 123 | 12 | 20 |
+----+-------+------+--------+
1 row in set (0.00 sec)
指定字段,部分添加
mysql> insert into mytb(name1,age) values ("zhi",20);
Query OK, 1 row affected (0.00 sec)
mysql> select * from mytb;
+----+-------+------+--------+
| id | name1 | age | salary |
+----+-------+------+--------+
| 1 | 123 | 12 | 20 |
| 2 | zhi | 20 | NULL |
+----+-------+------+--------+
2 rows in set (0.00 sec)
添加多條信息
mysql> insert into mytb(name,age,salary) values ("bing",20,2000),("ze",25,3000);
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from mytb;
+----+------+------+--------+
| id | name | age | salary |
+----+------+------+--------+
| 1 | 123 | 12 | 20 |
| 2 | zhi | 20 | NULL |
| 3 | bing | 20 | 2000 |
| 4 | ze | 25 | 3000 |
+----+------+------+--------+
4 rows in set (0.00 sec)
2.修改(update)
mysql> select * from mytb;
+----+------+------+--------+
| id | name | age | salary |
+----+------+------+--------+
| 1 | 123 | 12 | 20 |
| 2 | zhi | 20 | NULL |
| 3 | bing | 20 | 2000 |
| 4 | ze | 25 | 3000 |
+----+------+------+--------+
4 rows in set (0.00 sec)
mysql> update mytb set salary=500 where id=2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from mytb;
+----+------+------+--------+
| id | name | age | salary |
+----+------+------+--------+
| 1 | 123 | 12 | 20 |
| 2 | zhi | 20 | 500 |
| 3 | bing | 20 | 2000 |
| 4 | ze | 25 | 3000 |
+----+------+------+--------+
4 rows in set (0.00 sec)
3.刪除(delete)
mysql> select * from mytb;
+----+------+------+--------+
| id | name | age | salary |
+----+------+------+--------+
| 1 | 123 | 12 | 20 |
| 2 | zhi | 20 | 500 |
| 3 | bing | 20 | 2000 |
| 4 | ze | 25 | 3000 |
+----+------+------+--------+
4 rows in set (0.00 sec)
刪除一條語句
mysql> delete from mytb where id =4;
Query OK, 1 row affected (0.01 sec)
mysql> select * from mytb;
+----+------+------+--------+
| id | name | age | salary |
+----+------+------+--------+
| 1 | 123 | 12 | 20 |
| 2 | zhi | 20 | 500 |
| 3 | bing | 20 | 2000 |
+----+------+------+--------+
3 rows in set (0.00 sec)
刪除多條語句
mysql> delete from mytb where id in(2,3);
Query OK, 2 rows affected (0.01 sec)
mysql> select * from mytb;
+----+------+------+--------+
| id | name | age | salary |
+----+------+------+--------+
| 1 | 123 | 12 | 20 |
+----+------+------+--------+
1 row in set (0.00 sec)
4.查詢(select)
查詢所有字段
mysql> select * from mytb;
+----+------+------+--------+
| id | name | age | salary |
+----+------+------+--------+
| 1 | 123 | 12 | 20 |
| 5 | bing | 20 | 2000 |
| 6 | ze | 25 | 3000 |
| 7 | bing | 20 | 2000 |
| 8 | ze | 25 | 3000 |
+----+------+------+--------+
5 rows in set (0.00 sec)
查詢單個字段
mysql> select name from mytb;
+------+
| name |
+------+
| 123 |
| bing |
| ze |
| bing |
| ze |
+------+
5 rows in set (0.00 sec)
去除重複的查詢(distinct必須在查詢字段的首位)
mysql> select distinct name from mytb;
+------+
| name |
+------+
| 123 |
| bing |
| ze |
+------+
3 rows in set (0.00 sec)
查詢指定範圍的數據(limit:默認從下標0開始,也就是第一條)
mysql> select * from mytb limit 3;
+----+------+------+--------+
| id | name | age | salary |
+----+------+------+--------+
| 1 | 123 | 12 | 20 |
| 5 | bing | 20 | 2000 |
| 6 | ze | 25 | 3000 |
+----+------+------+--------+
3 rows in set (0.00 sec)
mysql> select * from mytb limit 0,3;
+----+------+------+--------+
| id | name | age | salary |
+----+------+------+--------+
| 1 | 123 | 12 | 20 |
| 5 | bing | 20 | 2000 |
| 6 | ze | 25 | 3000 |
+----+------+------+--------+
3 rows in set (0.00 sec)
mysql> select * from mytb limit 1,3;
+----+------+------+--------+
| id | name | age | salary |
+----+------+------+--------+
| 5 | bing | 20 | 2000 |
| 6 | ze | 25 | 3000 |
| 7 | bing | 20 | 2000 |
+----+------+------+--------+
3 rows in set (0.00 sec)
5.升序和降序(order by column_name desc/asc,默認asc)
默認升序排列(asc)
mysql> select * from mytb;
+----+--------+------+--------+
| id | name | age | salary |
+----+--------+------+--------+
| 1 | 123 | 12 | 20 |
| 5 | bing | 20 | 2000 |
| 6 | ze | 25 | 3000 |
| 7 | bing | 20 | 2000 |
| 8 | ze | 25 | 3000 |
| 9 | bingze | 20 | 300000 |
+----+--------+------+--------+
6 rows in set (0.00 sec)
指定按照某個字段升序排列(order by xxx asc【可不寫,默認asc】)
mysql> select * from mytb order by salary;
+----+--------+------+--------+
| id | name | age | salary |
+----+--------+------+--------+
| 1 | 123 | 12 | 20 |
| 5 | bing | 20 | 2000 |
| 7 | bing | 20 | 2000 |
| 6 | ze | 25 | 3000 |
| 8 | ze | 25 | 3000 |
| 9 | bingze | 20 | 300000 |
+----+--------+------+--------+
6 rows in set (0.01 sec)
mysql> select * from mytb order by salary asc;
+----+--------+------+--------+
| id | name | age | salary |
+----+--------+------+--------+
| 1 | 123 | 12 | 20 |
| 5 | bing | 20 | 2000 |
| 7 | bing | 20 | 2000 |
| 6 | ze | 25 | 3000 |
| 8 | ze | 25 | 3000 |
| 9 | bingze | 20 | 300000 |
+----+--------+------+--------+
6 rows in set (0.00 sec)
降序排列(order by xxx desc)
mysql> select * from mytb order by salary desc;
+----+--------+------+--------+
| id | name | age | salary |
+----+--------+------+--------+
| 9 | bingze | 20 | 300000 |
| 6 | ze | 25 | 3000 |
| 8 | ze | 25 | 3000 |
| 5 | bing | 20 | 2000 |
| 7 | bing | 20 | 2000 |
| 1 | 123 | 12 | 20 |
+----+--------+------+--------+
6 rows in set (0.00 sec)